2010-12-07 50 views
0

你好,很长时间的听众,第一次打电话来这里!
谢谢你们所有人分享的出色建议。
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的工作原理(如果规则不匹配,请转到下一个。)
谢谢任何​​指针!

回答

0

找到它。作为参考,这是一套完整的规则:

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] 
+0

无需附加查询字符串。 – Gumbo 2010-12-07 14:30:54