昨天有一个客户的需求,就是中文浏览器跳转另一个域名,他说自己的opencart买了个插件,插件会根据不同语言跳转不同的二级域名且显示中文,然后要求我帮忙改规则文件让中文的跳转另一个主域名,一开始我没多想,就根据他思路去改规则文件[当时脑袋短路吧],由于那个插件工作原理我不知道,因为我手上没有,又是付费的,所以我只能通过普通的规则文件写法写了重定向定义,可是那样不行,改来改去还是不行,后来我用了下下策,建立个cn子目录来实现,可还是有BUG,默认加载是不存在cn这个二级目录域名的,也就是就算我规则文件改了生效了,也需要点击那个中文的才会进入cn的二级目录[废话好多,进入正题]
于是我查了资料,写了下面的判断语句,自己本地用个php做测试
- <?php
- $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,5);
- if($language == "zh-cn") header("Location: http://cn.abc.com");
- else header("Location: http://abc.com");
- ?>
可问题来了,在谷歌下不能判断,即使我改为zh也不行,我在火狐下倒是可以的,经过调整测试,和网上的资料,把第一行后面的5改为4,还是不行,不过后来还是搞定了,用下面这样的代码:
- <?php
- $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
- if(preg_match("/zh-c/i", $language)){
- header("Location: http://cn.abc.com");
- }elseif(preg_match("/zh/i", $language)){
- header("Location: http://cn.abc.com");
- }else{
- header("Location: http://abc.com");
- }
- ?>
但是,我用火狐的时候,出现一个浏览器提示,说有一个不正确的重定向,嗯,于是我去掉了最后一句的else那一句,也就是直接判断,处理,默认情况不处理,当然了,看具体你的需求了,没有的情况不处理,则去掉第七八行,下面是几个语言的示例:
"/en/i" 英语
"/fr/i" 法语
"/de/i" 德语
"/jp/i" 日语
"/ko/i" 朝鲜
"/es/i" 西班牙语
"/sv/i" 瑞典
其他语言可以自己在网上搜索资料替换即可!
上面代码加在index.php 的最前面即可!
2014年01月23日 12:27 -9楼
厉害啊。是不是可以识别百度蜘蛛啥的?
2014年01月23日 12:43 地下1层
@小清新 可以
2014年01月23日 18:39 地下2层
@yumanutong 好吧。收藏了、哈哈。
2014年01月23日 18:46 地下3层
@小清新 蜘蛛不是浏览器,你要的网上有教程
2016年06月12日 14:33 -8楼
用来用去 就你这个跳转代码最靠谱。感谢