我试图重定向这个,
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错误。
答案 0 :(得分: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]