mod_rewrite:如何根据“可用性”匹配目录或根目录中的文件?

时间:2010-12-07 07:49:47

标签: mod-rewrite directory rewrite pattern-matching

你好,长时间听众,第一次打电话来这里!
感谢您分享的优秀建议。

我设置了这些mod_rewrite规则:

RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L]
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L]

他们将 / company / services / 重定向到公司 - services.php。或/ company / to company.php。效果很好。

但是现在我想要另一个规则,如果我将services.php放在物理目录/ company /中,它将匹配并重定向。如果失败了,请寻找我的初步规则。 (如果没有,请返回404.)

我认为它就像包括:

一样简单
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1/$2.php?%{QUERY_STRING} [L]

但不是这样。它将返回404。我有点难过,因为这违背了我认为mod_rewrite工作的方式(如果规则不匹配,请转到下一个。)
谢谢你的任何指示!

1 个答案:

答案 0 :(得分: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]