基于Accept-Language的重定向

问题描述 投票:0回答:2

我需要尊重网络浏览器的语言首选项列表。支持的语言为英语和法语。例如:http_accept_language="jp-JP;fr;en-US;en" 重定向到名为 /French/ 的目录。如何使用 .htaccess 文件中的重写规则来做到这一点?

apache .htaccess mod-rewrite url-rewriting
2个回答
3
投票

我不会使用 mod_rewrite 来实现此目的,而是使用更强大的语言。因为 Accept-Language 是一个加权值列表(请参阅 quality value),并且其中一个标识符的出现并不意味着它优于另一个值(特别是

q=0
意味着根本不可接受)。

如前所述,使用比 mod_rewrite 更强大的语言,解析值列表并找到首选选项和可用选项的最佳匹配。


0
投票

我想目标是按照浏览器中设置的优先顺序与第一种语言进行匹配。我想对于居住在比利时、加拿大、瑞士的人来说,英语版本将是默认版本,法语版本将是默认版本。所以,我建议实现以下内容:如果它首先在接受语言http字段中找到法语,它将返回法语,然后,它会寻找英语。然后,如果既没有英语也没有法语,则返回英语版本。 我不会忘记从重定向中排除 robots.txt,因为它应该位于网站的根文件夹中。

RewriteEngine On
#exclude robots.txt 
RewriteCond %{REQUEST_FILENAME} robots.txt
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP:Accept-Language} fr [NC]
RewriteRule ^$ https://nicolasgueri.net/fr/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} en [NC]
RewriteRule ^$ https://nicolasgueri.net/en/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^.*$ [NC]
RewriteRule ^$ https://nicolasgueri.net/en/ [L,R=301]
© www.soinside.com 2019 - 2024. All rights reserved.