使用.htaccess进行语言重定向

使用.htaccess进行语言重定向,.htaccess,.htaccess,我有两个版本的同一页: example.com example.com/fr->法文版 我希望访问mydomain.com的法国人能够根据头部接受语言重定向到mydomain.com/fr。为此,我在.htaccess中写入了以下内容: RewriteCond %{HTTP:Accept-Language} ^fr [NC] RewriteRule ^$ http://example.com/fr/ [L,R=301] 到目前为止,我工作得很好 但在我的网站上有法文/英文版本的链接。。。当

我有两个版本的同一页:

  • example.com
  • example.com/fr->法文版
我希望访问mydomain.com的法国人能够根据头部接受语言重定向到mydomain.com/fr。为此,我在.htaccess中写入了以下内容:

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://example.com/fr/ [L,R=301]
到目前为止,我工作得很好


但在我的网站上有法文/英文版本的链接。。。当一个法语版本的法语用户点击英语链接时,他会返回法语版本。。。我怎样才能避免这种情况我如何区分他是否真的想看英文版?

建议在页面顶部添加链接,例如,每个链接指向不同的页面;FR-mydomain.com/FR,ENG-mydomain.com/ENG


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

建议包括指向页面顶部的链接,例如指向不同页面的链接;FR-mydomain.com/FR,ENG-mydomain.com/ENG


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

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

然后向.htaccess添加额外的重写条件,以检查用户是否单击了内部链接:

 RewriteCond %{QUERY_STRING} !(nolangredirect=1)
因此,如果法国用户单击www.example.com/en/index.html?nolangredirect=1,他们将不会被重定向到法语版本


如果您想让他们下次返回网站时看到英文版本,您需要使用cookies。

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

然后向.htaccess添加额外的重写条件,以检查用户是否单击了内部链接:

 RewriteCond %{QUERY_STRING} !(nolangredirect=1)
因此,如果法国用户单击www.example.com/en/index.html?nolangredirect=1,他们将不会被重定向到法语版本


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

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