我有一个具有多个域重定向和多个浏览器语言重定向的网站。
但现在我还想将所有其他(未知)浏览器语言重定向到默认语言。
例如,西类牙语 (es) 浏览器语言被重定向到/nl。
而它应该被重定向到/en,就像所有其他未知语言一样。
请参阅我的最后一个 .htaccess 规则,该规则不起作用。
.htaccess:
RewriteEngine On
# DOMAIN REDIRECTS
# ----------------
RewriteCond %{HTTP_HOST} ^(www\.)?example.eu [NC]
RewriteRule ^(.*)$ http://www.example.com/nl/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?example.be [NC]
RewriteRule ^(.*)$ http://www.example.com/nl/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?example.nl [NC]
RewriteRule ^(.*)$ http://www.example.com/nl-nl/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?example.fr [NC]
RewriteRule ^(.*)$ http://www.example.com/fr/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?example.de [NC]
RewriteRule ^(.*)$ http://www.example.com/de/ [L,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?example.co.uk [NC]
RewriteRule ^(.*)$ http://www.example.com/en/ [L,R=301]
# LANGUAGE REDIRECTS
# ------------------
RewriteCond %{HTTP:Accept-language} ^nl [NC]
RewriteRule ^$ http://www.example.com/nl/ [L,R=301]
RewriteCond %{HTTP:Accept-language} ^fr [NC]
RewriteRule ^$ http://www.example.com/fr/ [L,R=301]
RewriteCond %{HTTP:Accept-language} ^de [NC]
RewriteRule ^$ http://www.example.com/de/ [L,R=301]
RewriteCond %{HTTP:Accept-language} ^en [NC]
RewriteRule ^$ http://www.example.com/en/ [L,R=301]
# NOT WORKING
# -----------
RewriteCond %{HTTP:Accept-language} ^!(nl|fr|de|en) [NC]
RewriteRule ^$ http://www.example.com/en/ [L,R=301]
最佳答案
尝试以下
RewriteCond %{HTTP:Accept-language} !^(nl|fr|de|en).* [NC]
此外,最后一个 RewriteRule 可能会导致重定向循环,因此您可能希望包含另一个 RewriteCond
来检查主机是否已经不是您要重定向到的主机。
关于.htaccess 将所有其他浏览器语言重定向到默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32276010/