mod_rewrite:如何根据“可用性”匹配目录或根目录中的文件?
问题描述:
你好,很长时间的听众,第一次打电话来这里!
谢谢你们所有人分享的出色建议。mod_rewrite:如何根据“可用性”匹配目录或根目录中的文件?
我已经设置了这mod_rewrite的规则:
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L]
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L]
他们让/公司/服务/重定向到公司 - services.php。或/ company/to company.php。完美的作品。
但现在我想另一条规则,如果我把services.php放在物理目录/ company /里面,它会匹配并重定向它。如果失败了,寻找我的最初规则。 (而做不到这一点,返回404)
我想这将是为包括简单:
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1/$2.php?%{QUERY_STRING} [L]
,但并非如此。它会返回一个404代替。我有点难住,因为这违背了我相信mod_rewrite的工作原理(如果规则不匹配,请转到下一个。)
谢谢任何指针!
答
找到它。作为参考,这是一套完整的规则:
RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
RewriteRule ^([^/.]+)/([^/.]+)/?$ /$1/$2.php?%{QUERY_STRING} [L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L]
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L]
无需附加查询字符串。 – Gumbo 2010-12-07 14:30:54