【问题标题】:Language redirect using .htaccess使用 .htaccess 进行语言重定向
【发布时间】:2015-06-22 16:10:25
【问题描述】:

我有同一个页面的两个版本:

  • example.com
  • example.com/fr -> 法语版

我希望根据标头 Accept-language 将访问 mydomain.com 的法国人重定向到 mydomain.com/fr。为此,我将其写入了我的 .htaccess:

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://example.com/fr/ [L,R=301]

到目前为止,我工作得很好。

但是在我的网站中有指向法语/英语版本的链接...当法语版本中的法语用户单击英语链接时,他会返回法语版本...我该如何避免这种情况? 如何辨别他是真的想去看英文版的?

【问题讨论】:

  • 您不应为此使用 .htaccess,否则您需要在单击新语言后为每个新请求设置不同的标头。我想使用 cookie 来存储 lang 并在应用程序中执行重定向而不是 .htaccess

标签: .htaccess


【解决方案1】:

建议可以包括指向页面顶部的链接 - 例如,每个链接指向不同的页面; FR - mydomain.com/fr,ENG - mydomain.com/eng​​p>

根据网站的上下文,我会将网站的法语或英语版本设置为默认值。

【讨论】:

    【解决方案2】:

    您可以在内部语言链接的查询字符串上添加一个参数,以防止在用户单击特定语言的链接时发生正常的语言重定向。

    然后在你的 .htaccess 中添加一个额外的 RewriteCond 来检查用户是否点击了内部链接:

     RewriteCond %{QUERY_STRING} !(nolangredirect=1)
    

    因此,如果法语用户点击www.example.com/en/index.html?nolangredirect=1,他们将不会被重定向到法语版本。

    如果您希望他们下次访问网站时看到英文版本,您需要使用 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多