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]

第一个重写规则效果很好,
但第二个重写规则不起作用,它一直显示 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 回答