wordpress根据浏览器语言访问不同网页

做CMS,有时候需要根据不同语言让访客只能访问特定的网页,

主要是判断浏览器的值:HTTP_ACCEPT_LANGUAGE

网上有很多这样的判断,但是如果定义“else”访问网站本身,就会陷入死循环,打开根目录下的index.php (不是修改模板目录下的Index.php), 修改如下:

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if($lang==”zh”) header(“location: http://www.lesight.com/cn-index.htm”);//此大写代码为添加。
/**
 * Front to the application. This file doesn’t do anything, but loads
 * wp-blog-header.php which does and tells to load the theme.
 *
 * @package
 */

/**
 * Tells to load the theme and output it.
 *
 * @var bool
 */
define(‘WP_USE_THEMES’, true);/** Loads the Environment and Template */
require(‘./wp-blog-header.php’);
?>

其中解释如下:

1. 取SERVER['HTTP_ACCEPT_LANGUAGE'的前两位,判断如果是ZH,则是中文简体或者繁体,全部跳转到CN-INDEX.htm。

2. 注意 hearder函数的用法,次函数只能放在最上方,在运行该函数之前不能运行去他任何语言。location和冒号(:)之间不能有空格,特别注意。

在修改此问题的时候,会容易发现本来的网站错位,请查看我的另外一个帖子。

另外的一个问题是浏览器类型,一般用$_SERVER["HTTP_USER_AGENT值判断,上边的代码在IE6和IE8测试过,不知道其他浏览器是否会有用,若哪位测试过请告诉我一下le@lesight.com, 非常感谢。如果在其他浏览器不能使用,则需要加上$_SERVER["HTTP_USER_AGENT判断。

备注一下其他从网上搜到的代码,我做了测试,不能用,但是可以参考:

<?php error_reporting(E_ALL ^ E_NOTICE); // 分析 HTTP_ACCEPT_LANGUAGE 的属性
// 这里只取第一语言设置 (其他可根据需要增强功能,这里只做简单的方法演示)
preg_match('/^([a-z\-]+)/i’, $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$lang = $matches;
switch ($lang) {
       case ‘zh-cn’ :
               header(‘Location: http://www.lesight.com/cn-index.htm’);
               break;
       default:
               header(‘Location: http://www..lesight.com’);
               break;
}
?>

 上述不打断,估计去掉default之后的也能用,如果有其他的语言需要判断,可以继续添加CASE 格式。此方法是判断所有的值,不是取了两位,故还应添加繁体等。

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
 switch ($lang){
      case “zh”:         //echo “PAGE FR”;
       include(“www..lesight.com/cn-index.htm”);//include check session FR        
    break;
    default:         //echo “PAGE EN – Setting Default”;      
    include(“www.lesight.com/index.htm”);//include EN in all other cases of different lang detection      
    break; }
?>

 上述不打断,估计去掉default之后的也能用

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if($lang==”zh”) header(“location:cn-index.htm”);
else header(“location:www..lesight.com”);

?>

 上述不打断,故去掉了else之后的所有。
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
 switch ($lang){
      case “zh”:  //echo “PAGE FR”;
       header(location:http://www..lesight.com/cn-index.htm);//include check session FR        
    break;
    default:         //echo “PAGE EN – Setting Default”;      
    header(location:http://www..lesight.com/index.htm);//include EN in all other cases of different lang detection      
    break; }
?>

同样问题,不打断。去掉default之后的。

原创帖子,转载请注明,谢谢,地址:http://www.lesight.com/life-marking/根据不同语言访问不同网页.htm。

或许你对这些信息感兴趣:

  • wordpress页面不居中解决方法
    修改wordpress代码的时候,发会发现错位,整个页面不居中分布了,而是居左了。主要是要查看如下几个方面: 1. 源文件中是否有<!DOCTYPE html PUBLIC ...
  • Advanced Random Posts 2.3随机文章显示
    作为随机文件显示的插件,Advanced Random Posts 2.3主要是显示在widget侧边栏。可以是图片形式显示,也可以是文字列表形式。而且可以仅显示当前所在目录的随机文章。 当前版本是...
  • WordPress Download Monitor 3
    download monitor确实是一款很好的下载控制插件。最新版本是3.35。有时候CMS企业网站需要下载一些PDF文件之类的,所以这个插件是必不可少的。折腾了很长时间,网上很多说明都比较笼统,结...
  • wordpress安装完后台空白的解决办法
    数据库恢复后,后台进不去了,可以显示登录界面,但是登陆后一片空白,源文件只有寥寥几个字符。把wp-admin文件夹删除后重新覆盖也不见效果。 google一下,有如下两个办法: 1。 插件...
  • wordpress针对百度的优化方案
    Wordpress在google的优化做的非常好,毕竟是英文博客,但是针对中文baidu的优化好像不怎么样,发一个帖子之后好长时间没有收录。从网上到处搜刮了一下,发现如下策略: 1。 添加htt...


感谢您来过,请留个脚印吧!Leave a comment

您的留言Your comment