2

これをリダイレクトしようとしていますが、

www.example.com/about docs/about.htmlと一致することが期待されます www.example.com/register mod/register.phpと一致することが期待されます

RewriteCond %{REQUEST_URI} !\.+$
RewriteRule ^([^\.][a-z]+)$ docs/$1.html [L]
RewriteRule ^([^\.][a-z]+)$ mod/$1.php [L]

最初の書き換えルールはうまく機能します
が、2 番目の書き換えルールは機能せず、404 エラーが表示され続けます。

4

1 に答える 1

1

両方の場所に同じファイルがない限り (たとえば/docs/foo.html 、 と /mod/foo.php、書き換える前に最初に宛先に対してチェックを行うことができます:

# check for docs/.html first
RewriteCond %{REQUEST_URI} ^/([a-z]+)$
RewriteCond %{DOCUMENT_ROOT}/docs/%1.html -f
RewriteRule ^ /docs/%1.html [L]

# If not .html, then check for mod/.php
RewriteCond %{REQUEST_URI} ^/([a-z]+)$
RewriteCond %{DOCUMENT_ROOT}/mod/%1.php -f
RewriteRule ^ /mod/%1.php [L]
于 2013-03-05T20:35:31.057 に答える