【问题标题】:redirect from and to subdomain with htaccess base on browser language使用基于浏览器语言的 htaccess 从和到子域重定向
【发布时间】:2013-05-06 20:33:56
【问题描述】:

我需要根据用户的语言重定向主页中的用户。 我想我必须使用 RewriteCond %{HTTP:Accept-Language} 但我想不通。 我的最后一次尝试:

重写引擎开启 RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule .* http://mydomain.com [R,L] 重写引擎开启 RewriteCond %{HTTP:Accept-Language} ^en [NC] RewriteRule .* http://en.mydomain.com [R,L] 重写引擎开启 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

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您需要确保 HOST 尚未指向正确的位置:

    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]
    

    【讨论】:

    • es 语言一切正常,但英语语言循环...
    • 规则看起来是一致的,所以它们应该都是一样的。尝试清除浏览器缓存/历史记录,或尝试使用其他浏览器进行测试。当我使用 Chrome 时,我注意到它会缓存原始尝试,而不是使用新的重定向规则。
    猜你喜欢
    • 2020-05-11
    • 2012-05-09
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2023-04-03
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多