我有 example.com ,目前重定向到 fr.example.com , it.example.com 和 en。 example.com 默认情况下。
我想更改为example.com
自动重定向到 example.com/fr / , example.com/it / 和示例/ en / 默认情况下。
但我也想要希望看到其他语言能够这样做的用户&
不重定向它们。
因此,如果意大利用户希望看到该网站的英文版本,我不想强迫她看到意大利版本。
如何将用户重定向到与其HTTP:Accept-Language匹配的版本到正确的路径,但如果他们实际点击http://example.com/en/foo.html
之类的链接,则不会将用户重定向到http://example.com/it/foo.html
在意大利电脑上?
目前的设置在这里:
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^(.*)$ http://fr.example.com$1 [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^(.*)$ http://it.example.com$1 [L,R=301]
RewriteRule ^(.*)$ http://en.example.com$1 [L,R=301]
谢谢。
答案 0 :(得分:1)
您必须仅在根级别执行重定向。
在你的htaccess(必须在根文件夹中)中替换你当前的代码
RewriteEngine On
# redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# redirect language subdomain to subfolder
RewriteCond %{HTTP_HOST} ^([a-z]{2})\. [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/%1/$1 [R=301,L]
# redirect root folder to subfolder language user equivalent
RewriteCond %{HTTP:Accept-Language} ^(fr|it|en) [NC]
RewriteRule ^$ http://example.com/%1/ [L,R=301]