我正在尝试创建一个多语言页面,我的目的是将用户重定向到特定页面,具体取决于他的语言(如果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中运行。
亲切的问候,
巴勃罗