1

我在一个.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存在并且正确显示。

感谢您的任何帮助。

4

1 回答 1

1

这只是一个合格的猜测

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

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

于 2012-09-17T18:05:11.087 回答