正则表达式重写康德不匹配



我在.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]

第三行(已注释)不起作用。不过其他一切都很好。谁能指出我这里有什么问题?重写规则运行良好,即文件$1$3.php存在并正确显示。

感谢您的任何帮助。

这只是一个合格的猜测

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

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

最新更新