【问题标题】:.htaccess rewrite / accept language.htaccess 重写/接受语言
【发布时间】:2016-11-04 14:50:03
【问题描述】:

以下问题: 我在子文件夹中有 2 个 html 网站,一个是英文网站,一个是德文网站。我使用 .htaccess 重写规则根据用户的语言重定向到正确的站点:

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

这是英文版子文件夹.htaccess 中的代码。 当德国用户想要查看页面的英文版时,就会出现此问题,他总是会被重定向到德语版。

有什么方法可以在用户第一次访问时重定向,但是当他点击德文页面上的超链接English时,他会看到英文版本,而不会再次被重定向到德文网站?

mod-rewrite 可用,但我需要一个条件来仅重定向一次(第一次访问时),并且当用户单击特定超链接时,他不会再次被重定向?

【问题讨论】:

  • 那么您必须为此创建代码,而不是在 .htaccess 文件中定义。
  • 什么类型的代码?

标签: html .htaccess mod-rewrite


【解决方案1】:

只是一个想法,如果您有两个子目录,例如deen,您可以根据 Accept-Language 标头重写而不是重定向。但如果浏览器请求包含语言前缀的显式路径,则不会被重定向。

您可以尝试这些(未经测试!)规则

RewriteRule ^en/ - [L]
RewriteRule ^de/ - [L]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^ /de%{REQUEST_URI} [L]

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^ /en%{REQUEST_URI} [L]

另一种方法是设置一个 cookie,当用户决定一种语言时,并根据这个 cookie 传递页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2021-01-21
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多