$ _SERVER ['HTTP_ACCEPT_LANGUAGE']表现为静态PHP

时间:2016-08-21 22:26:52

标签: php .htaccess multilingual http-accept-language

我正在尝试创建一个多语言页面,我的目的是将用户重定向到特定页面,具体取决于他的语言(如果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检测第一语言?

亲切的问候,

巴勃罗

0 个答案:

没有答案