多语言网站的URL重写问题

时间:2019-01-04 08:22:52

标签: php apache url-rewriting

我试图为我的多语言网站设置一些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,同样的问题...

有人有想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您看到的是一个典型重写循环。原因是您无条件地进行了重写,而不管重写目标是否已经实现,因此之前是否已经执行过重写。

您可以使用条件解决此问题:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} !^lang=
RewriteRule ^/?(fr|en|nl)/?$ /index.php?lang=$1 [L,QSA]