我正在执行我的第一个 htaccess 步骤,但没有任何进展......
我有一个德语和英语网站,我想将所有非德语用户重定向到该网站的英语版本。
这是我所拥有的:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:Accept-Language} (cs|da|el|en|es|et|fi|fr|ga|hr|hu|it|lt|lv|nl|no|pl|pt|ro|ru|sl|sr|sv) [NC]
RewriteRule ^$ http://www.some.de/index.cfm?language=EN [R,L]
两个问题:
我在德国,浏览器设置为德语,但仍然重定向到英语版本。这是为什么?
如果用户从某个较低级别的页面开始,是否必须对所有后续页面执行此操作?我必须为每个页面制定重写规则吗?
最佳答案
I'm in Germany with a browser set to German and I'm still redirected to the Englisch version. Why is that?
Accept-Language 是语言环境和值(value)观的大杂烩。您的浏览器可能还会提交一堆在您的正则表达式中匹配的其他语言/区域设置对(例如 en-ca,en;q=0.8,en-us;q=0.6,de-de;q=0.4,de;q=0.2
)。您可以尝试做的是匹配 not de:
RewriteCond %{HTTP:Accept-Language} !de [NC]
Will this have to be done for all subsequent pages in case the user starts out on some lower level page? Do I have to make a rewrite rule for every page?
不确定您如何设置页面,但您可以尝试将规则更改为:
RewriteRule ^(.*)$ /$1?language=EN [R,L,QSA]
所以请求/
被重定向到/?language=EN
,和/somepath/
至/somepath/?language=EN
,和/file.cfm?someparam=value
至/file.cfm?language=EN&someparam=value
关于.htaccess - 如何使用 htaccess 将国际用户重定向到英文版网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9376606/