多语言网站 根据用户语言进行跳转
近期在做一个项目的时候用户要求网站要中英两种语言。当时设想 中文则使用 /cn 二级目录,英文使用 /en 目录,而不加目录访问时根据用户计算机所使用的语言进行判断,并跳转至对应的目录下。起初做了一个根据用户安装语言进行判断的实例,但是在模拟蜘蛛抓取的时候发现百度总是进入英文目录,之前没有做过多语言的网站,所以这块应该如何处理自己也不是非常清楚,于是在就判断计算机安装语音的基础上又增加了对主流搜索引擎的判断,使国内的主流搜索引擎进入中文页面,而其他搜索引擎进入英文页面。下面是整个实例代码:
<?php $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); //获取用户语言 $lang = substr($lang,0,2); //获取语言简写 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']); //获取蜘蛛爬行 $lang_cn = 'https://www.jiangfei.net/ly/index.html'; //定义中文链接 $lang_en = 'https://www.jiangfei.net/ly/en.html'; //定义英文链接 //按蜘蛛类型判断 if (strpos($useragent,'googlebot')){ //google 谷歌 header("location: ".$lang_en); } elseif (strpos($useragent,'baiduspider')) {//baidu 百度 header("location: ".$lang_cn); } else if (strpos($useragent, 'msnbot')){ //bing 必应 header("location: ".$lang_cn); } elseif (strpos($useragent, 'slurp')){ //Yahoo 雅虎 header("location: ".$lang_en); } elseif(strpos($useragent, 'sosospider')){ //sousou 搜搜 header("location: ".$lang_cn); } elseif (strpos($useragent, 'sogou spider')){//sougou 搜狗 header("location: ".$lang_cn); } elseif (strpos($useragent, 'yodaobot')){ //youdao 有道 header("location: ".$lang_cn); } //按用户浏览器语言判断 elseif($lang = "zh" ){ //中文用户 header("location: ".$lang_cn); //非中文用户 }else{ header("location: ".$lang_en); } ?>
如果想获取用户安装语言进行判断,先使用:
$lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); //获取用户语言
这时我输出 下面代码的时候会得到:zh-cn,zh;q=0.8,en;q=0.6
echo $lang;
其实我们主要是需要前面的zh-cn,如果网站有更多语言需要的话 如 繁体中文,那需要截取前面5个字符,由于只有简体中文,那我就只截取了前面两个字符,只保留前面的 zh,用于对搜有中文(繁体和简体)用户的判断。
$lang = substr($lang,0,2);