php技巧-判断浏览器语言跳转不同页面

昨天有一个客户的需求,就是中文浏览器跳转另一个域名,他说自己的opencart买了个插件,插件会根据不同语言跳转不同的二级域名且显示中文,然后要求我帮忙改规则文件让中文的跳转另一个主域名,一开始我没多想,就根据他思路去改规则文件[当时脑袋短路吧],由于那个插件工作原理我不知道,因为我手上没有,又是付费的,所以我只能通过普通的规则文件写法写了重定向定义,可是那样不行,改来改去还是不行,后来我用了下下策,建立个cn子目录来实现,可还是有BUG,默认加载是不存在cn这个二级目录域名的,也就是就算我规则文件改了生效了,也需要点击那个中文的才会进入cn的二级目录[废话好多,进入正题]

于是我查了资料,写了下面的判断语句,自己本地用个php做测试

  1. <?php
  2. $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,5);
  3. if($language == "zh-cn") header("Location: http://cn.abc.com");
  4. else header("Location: http://abc.com");
  5. ?>

可问题来了,在谷歌下不能判断,即使我改为zh也不行,我在火狐下倒是可以的,经过调整测试,和网上的资料,把第一行后面的5改为4,还是不行,不过后来还是搞定了,用下面这样的代码:

  1. <?php
  2. $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
  3. if(preg_match("/zh-c/i"$language)){
  4. header("Location: http://cn.abc.com");
  5. }elseif(preg_match("/zh/i"$language)){
  6. header("Location: http://cn.abc.com");
  7. }else{
  8. header("Location: http://abc.com");
  9. }
  10. ?>

但是,我用火狐的时候,出现一个浏览器提示,说有一个不正确的重定向,嗯,于是我去掉了最后一句的else那一句,也就是直接判断,处理,默认情况不处理,当然了,看具体你的需求了,没有的情况不处理,则去掉第七八行,下面是几个语言的示例:

"/en/i" 英语
"/fr/i" 法语
"/de/i" 德语
"/jp/i" 日语
"/ko/i" 朝鲜
"/es/i" 西班牙语
"/sv/i" 瑞典

其他语言可以自己在网上搜索资料替换即可!

上面代码加在index.php 的最前面即可!

language-phpif

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

目前评论:6   其中:访客  0   博主  0   引用   1

  1. avatar 小清新 2

    厉害啊。是不是可以识别百度蜘蛛啥的?

  2. avatar 天狼星 0

    用来用去 就你这个跳转代码最靠谱。感谢

评论加载中...

来自外部的引用: 1

  • php技巧-判断浏览器语言跳转不同页面_独善其身

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情