WordPress 301重定向跳转带www域名

作者 FarLee 2010年2月28日 4:22:23   ‖浏览(13,961)

这两天一直在看301转向(301 Redirect)的问题,因为现在WordPress博客用的虚拟主机空间是Windows Server,IIS下使用ISAPI Rewrite实现301重定向 让人大费周折,各种详细的301重定向代码可以点击前面这2个链接查看。不过最令人郁闷的是虚拟主机空间商的Windows IIS默认安装的是ISAPI Rewrite 1.3版本,根本无法实现301转向。

所以要实现301 重定向,将带有www的域名301跳转到不带www的顶级域名,只能从WordPress博客程序代码入手了。对于WordPress博客系统,其实完全可以抛开复杂的Rewrite,IIS等等,只需要几句PHP代码;或者更简单的安装301重定向插件就可以解决www域名的301跳转问题了,多个域名重定向到一个主域名也一样。我们先看用php代码实现WordPress 301重定向的几种方法。

WordPress 301重定向跳转代码

修改根目录下的wp-blog-header.php文件,打开该php文件,在标记<?php    ?>内加入如下301重定向代码:

if ( strtolower( $_SERVER['SERVER_NAME']) != 'farlee.info') {
$URIRedirect=$_SERVER['REQUEST_URI'];
if(strtolower($URIRedirect)=="/index.php"){
$URIRedirect="/";
}
header('HTTP/1.1 301 Moved Permanently');
header('Location:http://h.farll.com'.$URIRedirect);
exit();
}

将带有www的域名www.farlee.info 301跳转到了不带www的顶级域名farlee.info。这段代码也适合将一个域名301转向,跳转到另外注册的一个域名上,比如你的博客更换域名的时候,可以将原来的老域名301重定向到新的域名上来。

根据在我的博客上的测试,这段php代码对于WordPress博客首页的301转向没有问题,正确返回了301 HTTP 状态码;但是对于使用WordPress永久固定链接的博客内页,比如文章页面和分类页面等,301重定向后虽然域名已经去掉了www,整个内页网址却成了带有?查询语句的动态地址(url重写使用的是IIS下的ISAPI Rewrite),可能是url重写方式不同的影响。所以最好还是要找更好的方法。

采取一个折中的办法,将WP博客中所有带有www域名的网址全部301转向到不带www的WordPress博客首页,301重定向代码如下:

if ( strtolower( $_SERVER['SERVER_NAME']) != 'farlee.info') {
header('HTTP/1.1 301 Moved Permanently');
header('Location:http://h.farll.com');
exit();
}

注意:上面代码中的exit();不能遗漏了,否则返回302 HTTP header状态码。当然上面的这段代码也可以加到主题文件中的heade.php中(补上<?php ?>加在代码最前面)。

其实上面的代码就是在普通的php 301转向代码前面,加了一条判断是不是不带www顶级域名的if语句。因此如果是基于asp语言的 zblog 博客系统,也可以用下面的代码实现301转向:

if Request.ServerVariables("SERVER_NAME")=www.farlee.info then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://h.farll.com"
end if

注意:zblog-asp中301重定向不能用response.redirectresponse.redirect实现的只是对浏览器的重定向,而不是内容的重定向,所以不会返回301 状态码。

WordPress 301重定向跳转插件

WordPress 博客系统给我们提供了丰富的插件,301重定向插件也一样,一抓一大把,下面找了几个可以试试。

1. Permalinks Migration Plugin for wordpress:国内人士开发的插件,修改了wordpress永久固定链接后,可以将原来的固定链接结构的网址301重定向到新的固定链接网址页面上。

2. Platinum SEO plugin:这是个WordPress SEO 套装插件,除了包含和上面这个的插件相同的固定链接301重定向转向功能外,还有其他有利SEO的设置。如果要求整套seo方案的,建议用这个插件。


“WordPress 301重定向跳转带www域名”文章评论(13)

  1. 不知道为什么,我不有设置,WP也自动转向,但同一个空间上的其他站却不。

    • 那更好了,可能是你的WP主题默认支持301转向

  2. Simple 301 Redirects

    这个插件如何!

  3. 恩,我试试那个国人开发的插件吧!

  4. 很受用,成功定向,谢谢分享

  5. 请问博主Wordpress中如何将不带www的域名转向到带www的域名呢?我直接将代码中的网址掉换过来却不行了,怎么回事啊?

Trackbacks/Pingbacks

  1. 泛域名解析设置影响seo和Google PR值 - 远方博客
  2. 百度第一天收录页面第二天消失删除 - 远方博客
  3. Joomla SEO优化设置9大步骤 – 远方博客
  4. LNMP安装配置-linux Nginx/Mysql/Php/Phpmyadmin(CentOS vps) – 远方博客
  5. LNMP安装配置-linux Nginx/Mysql/Php/Phpmyadmin(CentOS vps) – | 第一整站站
  6. WordPress 301重定向跳转带www域名 | 爱早餐
  7. My Technology Website

来说兩句