.htaccess将所有其他浏览器语言重定向为默认语言

时间:2015-08-28 16:48:40

标签: .htaccess redirect

我的网站有多个域重定向,还有一些浏览器语言重定向。

但现在我还想将其他所有(未知)浏览器语言重定向为默认语言。

例如,西班牙语(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]

1 个答案:

答案 0 :(得分:3)

尝试以下

RewriteCond %{HTTP:Accept-language} !^(nl|fr|de|en).* [NC]

最后一个RewriteRule也可能导致重定向循环,因此您可能希望包含另一个RewriteCond来检查主机是否已经是您要重定向到的主机。