我试图为我的多语言网站设置一些URL重写规则。 它正在运行,我想进行一些更正,现在不再运行。
当我尝试使用以下网址:http://mywebsite.fr/fr/时,浏览器会更改http://mywebsite.fr/fr/?lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr&lang=fr的网址
代码如下:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(fr|en|nl)/$ index.php?lang=$1&%{QUERY_STRING} [L]
我对自己说,这种错误不是源于URL编写,因此在我的php代码中,我将“ return false”作为页面的开头,但是在白页中仍然会出现问题。 ..
此外,如果我禁用所有的url重写规则,则会收到一个apache错误“未找到” ...
我也尝试过重启Apache,同样的问题...
有人有想法吗? 谢谢!
答案 0 :(得分:1)
您看到的是一个典型重写循环。原因是您无条件地进行了重写,而不管重写目标是否已经实现,因此之前是否已经执行过重写。
您可以使用条件解决此问题:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} !^lang=
RewriteRule ^/?(fr|en|nl)/?$ /index.php?lang=$1 [L,QSA]