从Bo-Blog 搬到WordPress 的301重定向

约三个月前,我从Bo-Blog 搬到了WordPress,当时我最为困扰的有两个事情:日志数据搜索收录

因为自动批量转换工具无效,我只好手动转移了几篇流量不错的日志;因为要尽量降低搬家造成的SEO 损失,我只好用到了301。现在三个月过后,看看之前做的效果如何。

搬家最怕也是最坏的结果就是,原来辛辛苦苦爬上去的收录排名,一夜之间就消失得无影无踪了。所谓的“几篇流量不错的日志”,也是建立在“搜索引擎收录”之上的,所以在搬家前我做了大量的SEO 工作,还不是简单的301 重定向就能解决的。当时从Bo-Blog 搬到WordPress 的情况比较特殊与复杂,如下:

一、更换博客主目录

从原来Bo-Blog 的www.ZFreet.com/blog/ 换到了现在的www.ZFreet.com/ 根目录,这点对SEO 的影响其实不大。

二、Bo-Blog 的别名URL 结构

当我自定义了日志链接的别名时,Bo-Blog 的URL 结构是这样的:www.ZFreet.com/blog/post/XXX.php;我现在的WordPress 用的别名URL 结构为www.ZFreet.com/post/XXX.html ,尽可能的,我不改动别名(XXX 部分),但是Bo-Blog 的URL 要区分大小写,而WordPress 不分;搜索引擎也是会区别大小写的。

三、Bo-Blog 的伪静态默认URL 结构

如果没有定义链接别名,Bo-Blog 默认的URL 结构是这样的:www.ZFreet.com/blog/post/read.php/ID.htm,以ID号自动生成htm 文件;现在的WordPress 每篇日志都有别名,不存在ID号的情况。但是,要让原来的ID号自动对应到现在的别名URL,是几乎不可能的事情,所以在写301 的时候,就只有手动对应了,这个比较麻烦。

四、Tags 的URL 结构

Bo-Blog 的Tags 是:www.ZFreet.com/blog/go.php/tags/XXX/ ,直接是目录形式;WordPress 的是:www.ZFreet.com/post/tag/XXX/ 。不要小看这个东西,个别比较新鲜的Tags 也会成为访问入口,这个结构比较一致,容易转换。

在这次搬家过程中,301重定向要尽量满足上面的四点,才能尽可能的保住搜索流量,为此,我在.htaccess 文件里这样写道:

# ID
RewriteRule ^blog/read.php/8.htm /post/repair-new-notepad.html [R=301]

# Post
RewriteRule ^blog/post/(\w*).php$ /post/$1.html [R=301] RewriteRule ^blog/read.php/(\w*).htm$ /post/$1.html [R=301]

# Tags
RewriteRule ^blog/go.php/tags/(\w*)/ /post/tag/$1 [R=301]

# Feed
RewriteRule ^blog/feed.php /feed [R=301]

# Links
RewriteRule ^blog/ / [R=301]

其中的#ID 就对应到上面的第3点,得手动转换日志,然后把每一篇的别名都写一条301,幸好只转了少许的几篇,工程量还不算太浩大。

在用了上面的301条件后,搜索引擎并不能全部保留住原来Bo-Blog 里的内容,因为很多链接都空了,会跳到404,所以那些没有手动转换的日志,会陆续的消失。

写了301 的则会保留,依然是原来Bo-Blog 的结构,会自动跳到现在对应的日志,对访问者没有任何影响,不过排名会下降。当我发现某篇写了301 的日志无法带来搜索流量时,我就会撤掉那条301,让它们自生自灭。

现在回看,301重定向的效果基本达到了我的需求,让想留的东西能留住(比如,但还是旧的URL),不需要的东西慢慢消失。等后面继续的逐步稳定后,我会试图删除原来所有旧的带blog/ 的抓取结果,估计完全达到平滑转换的效果,需要至少一年的时间。

另,.htaccess 是个很神奇的东西,可以用很精简的语句实现一些貌似繁杂的功能。所以,建议,如果要玩网站的话,尽量玩基于L.A.M.P. 环境的主机。