Regexp RewriteCond不匹配

时间:2012-09-15 18:50:25

标签: regex .htaccess url-rewriting

我在.htaccess文件中有这些行:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/.*|)$ [NC]
#RewriteCond %1%3.php -f
RewriteRule ^(.*/|)(en|de|fr)(/.*?)/?$ $1$3.php?lang=$2 [NC,QSA,L]

第三行(注释)不起作用。其他一切都很好。任何人都可以指出我这里有什么问题吗? RewriteRule运行良好,即文件$1$3.php存在并正确显示。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这只是一个合格的猜测

第三行上不存在正则表达式值 - 您不能使用RewriteCond中捕获的值(例如$1$3,或者您的示例中所写的值:%1%3)in另一个RewriteCond。您只能使用$n中的值RewriteRule

另一方面,我不明白为什么你需要第三行。你说只有在$1$3.php存在时才应用重写,如果$1$3.php文件不存在,你是否有其他重写规则被激活?