url的路径相同但指向不同的目录

时间:2013-03-05 19:18:37

标签: .htaccess mod-rewrite url-rewriting rewrite

我试图重定向这个,

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错误。

1 个答案:

答案 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]