gpt4 book ai didi

.htaccess - 多语言站点,基于 cookie 或接受语言的重定向 (RewriteRule)

转载 作者:行者123 更新时间:2023-12-05 08:02:44 25 4
gpt4 key购买 nike

几周前我问了一个关于多语言网站的问题(参见 Multilanguage site, subdirectories as language (RewriteRule))。

这很完美(谢谢)但是由于我想让我的网站更好,并且我开始添加更多语言,所以出现了一个新问题。我想看看我是否可以将用户直接重定向到使用他们的语言的网站,如果这种语言不存在或设置了 cookie,我想将用户重定向到他们的最后一种语言或我的默认语言。

现在我在我的 .htaccess 中创建了这部分

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?$ en/ [L,R=301]

这会导致所有对 www.xxx.com/的调用都重定向到 www.xxx.com/en/

现在是第二部分,在我的 php 代码中我存储了一个 cookie,这个 cookie 是为 www.xxx.com/设置的

我尝试了以下方法:

RewriteCond %{HTTP_COOKIE} language=([^;]+) [NC]
RewriteRule ^/?$ %1/ [L,R=302]

但这给了我一个无限循环。

我也试过这个,所以如果我的语言是 nl 重定向到 www.xxx.com/nl/但这也会导致无限循环。此外,此代码仅应在某些情况下执行

RewriteCond %{HTTP:Accept-Language} (nl) [NC]
RewriteRule ^/?$ nl/ [L,R=302]

有人可以帮助我吗?这在 htaccess 中可行吗?还是我应该在 PHP 中创建一些逻辑?

1 检查cookie是否设置了语言(我猜这应该是上述代码)
2a 如果设置了 cookie,则将用户重定向到该语言
2b 如果没有设置 cookie 检查 http-accept 语言
2b1 如果存在该语言则重定向到该语言
2b2 如果该语言不存在,则重定向到默认语言

提前致谢

最佳答案

Accept-Language是加权语言标识符的列表。仅仅出现某种语言标识符并不意味着它是最受欢迎的语言。可能还有其他更受欢迎的语言(更高的 q 值)甚至根本不被接受(即 q=0)。

因此,与其仅仅寻找某种语言标识符,还不如解析接受语言列表,并在考虑偏好顺序的同时找到接受语言和可用语言的最佳匹配。由于您似乎在使用 PHP,因此请使用 PHP 而不是 mod_rewrite。

关于.htaccess - 多语言站点,基于 cookie 或接受语言的重定向 (RewriteRule),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com