.htaccess重写/接受语言

时间:2016-07-02 08:31:51

标签: html .htaccess mod-rewrite

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

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

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

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

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

1 个答案:

答案 0 :(得分: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传递页面。