多语言切换时,在不使用get cookie的情况下,中文访问会自动识别为中文语言。但是项目实际需求要求在后台设置好英文版后,强制系统默认英文版,但是同时不影响cookie中英文切换。使用。也就是在没有cookie的前提下默认为英文。不实现浏览器$_SERVER['HTTP_ACCEPT_LANGUAGE']自动获取语言。建议做一个开关。关闭最后一个条件。
之所以提这个要求是因为,发现使用cookie切换后,百度蜘蛛和站长模拟抓取,都是中文。无法识别切换默认cookie中的英文
if (isset($_GET[$this->langDetectVar])) {
// url中设置了语言变量
$langSet = strtolower($_GET[$this->langDetectVar]);
} elseif (isset($_COOKIE[$this->langCookieVar])) {
// Cookie中设置了语言变量
$langSet = strtolower($_COOKIE[$this->langCookieVar]);
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// 自动侦测浏览器语言
preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$langSet = strtolower($matches[1]);
$acceptLangs = Container::get('config')->get('header_accept_lang');
if (isset($acceptLangs[$langSet])) {
$langSet = $acceptLangs[$langSet];
} elseif (isset($this->acceptLanguage[$langSet])) {
$langSet = $this->acceptLanguage[$langSet];
}
}模拟抓取<?php
namespace app\index\controller;
class Test extends Common{
public function index(){
print_r($_COOKIE);
return lang('login');
$this->fetch();
}
}抓取结果Array ( [think_var] => en-us ) 登陆 最佳答案