以下问题: 我在子文件夹中有2个html站点,一个用英语站点,一个用德语站点。我使用.htaccess重写规则根据用户的语言重定向到正确的站点:
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://example.com/ [L,R=301]
这是英文版子文件夹中.htaccess中的代码。 当德国用户想要查看页面的英文版本时,他会被重定向到德语版本。
有没有办法在第一次访问时重定向用户,但当他点击德语页面上的超链接English
时,他会看到英文版本,而不会再被重定向到德国网站?
mod-rewrite可用,但是我需要一个条件来重定向一次(第一次访问时),当用户点击特定超链接时,他不会再被重定向?
答案 0 :(得分:1)
只是一个想法,如果你有两个子目录,例如de
和en
,您可以根据Accept-Language
标题重写而不是重定向。但是,如果浏览器请求包含语言前缀的显式路径,则不会重定向。
/en/page1.html
显示/de/page1.html
或Accept-Language
/en/page1.html
说什么,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传递页面。