1

我正在尝试制作一个多语言页面,我的目的是将用户重定向到特定页面,具体取决于他的语言(如果 cookie 存在,因为用户之前选择了语言而未设置 cookie,我将忽略此块) 做一个虚拟文件以通过 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 捕获语言:

<?php
 echo $_SERVER['HTTP_ACCEPT_LANGUAGE']
?>

理论上,这应该返回请求的实际接受语言标头。但是在不同的计算机上用不同的语言 EN、IT、ES 进行测试......(我已经检查过他们发送的语言是 accept_language)

我发现,如果我首先使用 EN 访问,无论我用其他语言提出的任何其他请求都会保留 EN。如果第一个请求是 IT 或 ES,则相同。一段时间后或在我修改虚拟文件并再次上传后,这不会刷新。

据我所见,它表现为静态变量,但根据 PHP 文档,它应该返回“实际”,并且我看到的所有示例都建议以这种方式执行此多语言操作。

实际上经过几个小时的测试,我决定在 .htaccess 中创建一个规则来重定向到正确的站点,这取决于这个值并且它可以工作:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* /en/index.php [L]
RewriteCond %{HTTP:Accept-Language} (it) [NC]
RewriteRule .* /it/index.php [L]
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* /es/index.php [L]

所以有些东西不能让它在 PHP 中工作。

  • 你知道发生了什么吗?
  • 您会建议保留 .htaccess 重定向还是通过 php 检测第一种语言?

亲切的问候,

巴勃罗

4

0 回答 0