htaccess语言检测和重定向:重定向循环问题

时间:2014-04-07 23:03:05

标签: apache .htaccess mod-rewrite redirect

我并不是真正修改.htacess文件的专家,因此我使用http://www.htaccesstools.com/redirection-by-language/生成器为不同语言创建重定向。

它应该有两个选项:重定向到" ru"文件夹,如果浏览器语言是俄语,所有其他语言转到英文默认页面。但是,似乎我没有做对,它也会导致重定向循环。

代码如下所示:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (ru) [NC]
RewriteRule .* %sitename%/ru/index.html [R,L]

如果用户使用选择器手动更改语言,也会禁用重定向。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果您已经在/ru/文件夹中,则浏览器的接受语言仍然是相同的,这意味着您的情况仍然是正确的,这意味着它将会是正确的如果您已经在那里,请将您重定向到ru文件夹。

您需要检查一下您是否已经在/ru/文件夹中:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (ru) [NC]
RewriteRule ^(?!ru/) %sitename%/ru/index.html [R,L]

如果语言是其他内容,则重定向到ru文件夹:

RewriteCond %{HTTP:Accept-Language} !(ru) [NC]
RewriteRule ^ru/ %sitename%/index.html [R,L]

答案 1 :(得分:0)

确保这些规则是您的第一条规则:

RewriteEngine on

RewriteCond %{HTTP:Accept-Language} ru [NC]
RewriteRule !^ru(/.*)?$ /ru/index.html [R,L,NC]

RewriteCond %{HTTP:Accept-Language} !ru [NC]
RewriteRule ^ru(/.*)?$ /index.html [R,L,NC]