我想检测用户的浏览器语言,并将路径段添加到基本网址。例如,重定向之一如下所示:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/de
RewriteCond %{REQUEST_URI} ^/
RewriteCond %{HTTP:Accept-Language} !en [NC]
RewriteCond %{HTTP:Accept-Language} de [NC]
RewriteRule ^(.*)$ /de [R=302,L]
我理解如下:
如果在www.domain.com之后没有/ de段并且请求主页(www.domain.com)并且英语不是首选语言而德语是首选语言重定向到www.domain.com/de。
我的问题是为什么RewriteCond %{REQUEST_URI} !^/de
和RewriteCond %{REQUEST_URI} ^/
始终是 true ?在我的.htaccess中插入此重定向之前,我测试了我的配置here(在其他.htaccess问题中找到)并且它有效。如果您有其他解决方案,我欢迎它。谢谢。
答案 0 :(得分:1)
你的规则应该重构为:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/de [NC]
RewriteCond %{HTTP:Accept-Language} !en [NC]
RewriteCond %{HTTP:Accept-Language} de [NC]
RewriteRule ^/?$ /de [R=302,L]
RewriteCond %{REQUEST_URI} ^/
始终为真,因为REQUEST_URI
始终以/
开头。如果您使用RewriteCond %{REQUEST_URI} ^/$
,那么它将按预期工作。我们可以在RewriteRule ^/?$
中做同样的事情,因此我从答案中删除了额外的条件。