我在.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
您将被激活?