Notice: register_sidebar的调用方法不正确。“边栏1”侧边栏的参数数组中未设置id,缺省为“sidebar-1”。要消除此通知并保持现有的侧边栏内容,请手动将id设置为“sidebar-1”。 请查阅调试WordPress来获取更多信息。 (这个消息是在4.2.0版本添加的。) in /data/htdocs/seven2_blog/wp-includes/functions.php on line 3898
使用 PHP 的 header 函数将非 www 重定向到 www 版本的URL | Seventwo Blog
Warning: Parameter 1 to wp_default_scripts() expected to be a reference, value given in /data/htdocs/seven2_blog/wp-includes/plugin.php on line 601

使用 PHP 的 header 函数将非 www 重定向到 www 版本的URL

2010-12-09 | 分类: SEO

自己身边做 SEO 的朋友越来越多(吴伟定、汇哥、黄蛟、鹏哥哥、通心菜),他们都建议自己建设网站时是面向搜索引擎的。而 SEO 最基本的是同一网页只对应一个url,一般都会将非 www 版本的URL 301重定向到 www 版本的URL ,如果 http 服务器是 Apache 通过 .htaccess,但目前国内的虚拟主机是 IIS 或者无法修改 .htaccess 这样的话唯有通过 PHP 的 header 函数将非 www 版本的URL 301重定向到 www 版本的URL。

在《谷歌搜索引擎优化初学者指南》文中的提到:

请注意避免:

 无论是从根目录还是子域名(例如 “domain.com/page.htm” 和”sub.domain.com/page.htm”)访问的内容都是相同的。

 在您的内部链接结构中混合使用www.和非www.版本的URL

 在URL中使用奇怪的大写(大部分用户喜欢小写而且小写也便于他们记忆)

在《百度官方的搜索引擎优化指南》文中“2.1.4 规范、简单的url”的“我们建议”详细内容如下:

 网站中同一网页,只对应一个url

 如果网站上多种url都能访问同样的内容,会有如下危险:

 搜索引擎会选一种url为标准,可能会和正版不同

 用户可能为同一网页的不同url做推荐,多种url形式分散了该网页的权重

 如果你的网站上已经存在多种url形式,建议按以下方式处理:

 在系统中只使用正常形式url,不让用户接触到非正常形式的url

 不把Session id、统计代码等不必要的内容放在url中

 不同形式的url,301永久跳转到正常形式

 防止用户输错而启用的备用域名,301永久跳转到主域名

 使用robots.txt禁止Baiduspider抓取您不想向用户展现的形式

PHP 代码如下:


/**
 * use a php header function to do a 301 redirect from non-www version to www version
 * For more info visit:  http://www.seven2.com.cn/archives/805/
 * @author  seven2
*/

$http_host = $_SERVER['HTTP_HOST'];
$url_arr   = array();
$url_arr   = explode('.', $http_host);

if ($url_arr['0'] != 'www') {
    $request_uri = ($_SERVER['REQUEST_URI'] == '/index.php') ? '/' : $_SERVER['REQUEST_URI'];
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www." . $http_host . $request_uri);
    exit();
}

我已经在 CodeIgniter、WordPress(如 http://www.seven2.cn)、ECShop 测试过了。