疆飞
.NET永远年轻,永远热泪盈眶...
展开边栏 收起边栏
多语言网站 根据用户语言进行跳转
近期在做一个项目的时候用户要求网站要中英两种语言。当时设想 中文则使用 /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);
至于蜘蛛的判断,我是从网上抄的,它究竟有没有必要,对SEO有没有帮助我也不太了解了,希望知情者能给我留言进行互动!大家互相学习,共同进步!
文章搜索
联系疆飞
- QQ932557101
- emailmail@jiangfei.net
- weibo@疆飞 (@jiangfei1006)
- twitter@疆飞 (@jiangfei1006)
PS:没事不要瞎联系,除非你想请我吃饭...
热门标签更多
Copyright © 2008-. JiangFei.net all rights reserved
苏公网安备32048202001026号苏ICP备18062911号