2013-05-12 89 views
0

我需要根据他们的语言在主页上重定向我的用户。 我想我必须使用 RewriteCond %{HTTP:Accept-Language} 但我无法弄清楚。 我最后一次尝试:基于浏览器语言的htaccess基于和重定向到子域

 
RewriteEngine on 
RewriteCond %{HTTP:Accept-Language} ^es [NC] 
RewriteRule .* http://mydomain.com [R,L] 


RewriteEngine on 
RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteRule .* http://en.mydomain.com [R,L] 

RewriteEngine on 
RewriteCond %{HTTP:Accept-Language} ^fr [NC] 
RewriteRule .* http://fr.mydomain.com [R,L] 

但是,这产生一个无限循环。

文件夹结构

  • 的htdocs/index.php的 - > mydomain.com
  • 的htdocs/EN/index.php的 - > en.mydomain.com
  • 的htdocs/FR/index.php的 - > fr.mydomain.com

回答

0

你需要确保主机是不是已经指向正确的地方:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC] 
RewriteCond %{HTTP:Accept-Language} ^es [NC] 
RewriteRule .* http://mydomain.com [R,L] 

RewriteCond %{HTTP_HOST} !^en.mydomain.com$ [NC] 
RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteRule .* http://en.mydomain.com [R,L] 

RewriteCond %{HTTP_HOST} !^fr.mydomain.com$ [NC] 
RewriteCond %{HTTP:Accept-Language} ^fr [NC] 
RewriteRule .* http://fr.mydomain.com [R,L] 
+0

一切都很好用ES语言,但它与英语语言循环... – 2013-05-12 20:50:45

+1

规则看起来一致,所以他们应该都工作相同。尝试清除浏览器缓存/历史记录,或尝试使用其他浏览器进行测试。当我使用Chrome时,我注意到它会缓存原始尝试,而不是使用新的重定向规则。 – goodeye 2013-05-12 23:29:55