我在.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
存在并正确显示。
感谢您的帮助。
答案 0 :(得分:1)
这只是一个合格的猜测
第三行上不存在正则表达式值 - 您不能使用RewriteCond
中捕获的值(例如$1$3
,或者您的示例中所写的值:%1%3
)in另一个RewriteCond
。您只能使用$n
中的值RewriteRule
。
另一方面,我不明白为什么你需要第三行。你说只有在$1$3.php
存在时才应用重写,如果$1$3.php
文件不存在,你是否有其他重写规则被激活?