使用PHP实现WordPress网站迁移301重定向

作者: · 日期:2010-02-26 04:05:40 评论 »

301重定向 

301重定向在网站更换域名或者迁移中显得非常重要,对搜索引擎抓取非常之友好。 

实现301重定向的方法也有很多种:在Apache(Linux/Unix)环境下在.htaccess文件中编写301重定向指令;而IIS(Windows)环境下可以直接设置站点的重定向;WordPress当前有许多 301重定向的插件可使用;使用编程代码实现301重定向功能,这个是最能说得上通用,可忽视任何平台和环境。 

鉴于国内很多虚拟主机使用Windows Server平台,即使有些Linux和Unix虚拟主机也未见得都支持.htaccess,并且都没有权限进行对IIS设置,如何很不幸你的主机和M博客的一样,不支持.htaccess,不能设置(或懒得设置)IIS,兼且你的Wordpress的个性化URL都是使用domain.com/?p=123 这样的形式,那么推荐你使用以下代码,而插件之说,我一直坚持的观点是能可不用插件,则不用。 

PHP实现301重定向的代码: 

<?php 

if($_SERVER[‘SERVER_NAME’] == ‘mblog.cc’ || $_SERVER[‘SERVER_NAME’] == ‘mblog.cc’) { 

 $go_url = ‘http://mblog.cc’.$_SERVER[“REQUEST_URI”]; 

 header(“HTTP/1.1 301 Moved Permanently”); 

 header(“Location:”.$go_url); 

 exit(); 

?> 

将以上代码放置你的Wordpress根目录下index.php的最前面去,即可实用301重定向。 

在使用以上代码的时候,在一些虚拟主机下也出现少少意外,例如访问http://mblog.cc/?p=1 的时候却变成了http://mblog.cc/index.php?p=1,多了一个index.php,似乎显得扎眼,所以我们可以稍微对以上代码进行改造: 

<?php 

if($_SERVER[‘SERVER_NAME’] == ‘mblog.cc’ || $_SERVER[‘SERVER_NAME’] == ‘mblog.cc’) { 

 $go_url = ‘http://mblog.cc’.str_replace(‘index.php?’,’?’,$_SERVER[“REQUEST_URI”]); 

 header(“HTTP/1.1 301 Moved Permanently”); 

 header(“Location:”.$go_url); 

 exit(); 

?>
使用str_replace函数将index.php 去掉。至于一些静态的非PHP的HTML页面等就用不了。
这样即使我们换了域名之后,也可以轻松的保留了搜索引擎的抓取数据,这个Google Webmaster Tool 非常喜欢,记得更换域名之后也在Google Webmaster Tool 提交你的新域名。
另外需要注意的是,如果使用Wordpress的在线升级功能,就会覆盖掉index.php,请记得以上两种代码在覆盖后的index.php再次手工添加,或者保存在一个PHP文件中,例如在根目录下wp-301.php,再在index.php 中使用 require_once(‘./wp-301.php’);  来调用。

另外有一篇文章大家也可以参考:网站迁移的最佳方法  

  

以上原创内容,版权归M博客 Mblog.cc 所 有,如需转载请注明出处并来电邮告知

Advertisement

3 条评论

  1. reizhi说道:

    图片配的很好

  2. likekart说道:

    刚刚搬到国外,不知是否需要

  3. wanjie说道:

    先备用一下:)

评论