11/10/2009

更改永久链接(Permalink)

终于痛下决心改变原有的永久链接结构了,下面所说的都是wp环境下的问题,其他环境的博客请不要对号入座。由于每改动一次链接对网站流量来说就像是一次地震,虽然有很好的重定向,但是也不能完全解决问题,所以做出这样的决定也是无奈之举,趁现在流量还不算太大的时候改变要比流量大了之后再修改要好很多。

一、原因分析

由于之前为了链接优化,听从了他人的建议,将永久链接结构改成了/archives/%postname%.html这样的形式,这种形式的好处是,在搜索引擎里就能抓取到连接中的文字,这对于搜索优化效果应该是最好的,而从google搜索一下试试就知道,事实也正是如此,链接中的字很明显的变成了搜索关键词,并加以粗体显示:

gudinglianjie

而百度搜索不能识别这种链接中的中文,中文部分显示乱码,可以自行测试。

在链接地址的显示上也有所差异:

以“做啥网采纳了我的建议”这篇文章为例,在firefox,chrome下显示:

http://www.keege.com/archives/做啥网采纳了我的建议.html

在IE下实现则是这样的:

http://www.keege.com/archives/%e5%81%9a%e5%95%a5%e7%bd%91%e9%87%87%e7%ba%b3%e4%ba%86%e6%88%91%e7%9a%84%e5%bb%ba%e8%ae%ae.html

在多数情况下拷贝的链接都是第二种形式,这种形式的链接将中文文字全部转化成编码,所以使得链接变得很长,使用起来不方便,而前一种形式在有些网站是支持的,但是也不完美,经常由于中英文混搭导致链接不完整,例如,在做啥上就将这篇文章的链接变成了这样:

http://zuosa.net/qeip.u做啥网采纳了我的建议.html

只将前面英文部分转换成了链接,而中文部分则被忽略,这样导致的结果是点击链接之后打开的是http://www.keege.com/archives/,到达不了该篇文章,导致404错误。

二、解决问题

将链接结构调整为/archives/%post_id%.html这种短结构,上面那篇文章的链接变成了http://www.keege.com/archives/812.html

简单了很多,在各种浏览器下均如此现实,在链接传递过程中也不会出现被截断的现象。

唯一的缺点是无法实现上文中提到的搜索引擎链接优化效果,不过好在现在的搜索引擎技术有了长足的进步,这些小问题已经不是阻碍搜索引擎收录的门槛。

三、重定向

接下来所要做的就是重定向,否则那些搜索引擎或者各大网站收录的你的文章链接都将失效,这将会被搜索引擎认为很不友好,会降权或者惩罚,我试过.htaccess和Dean's Permalinks Migration插件,均无法完美完成这个任务,如果你的%postname%是英文的连接结构那么Dean's Permalinks Migration插件则是首选,简单快捷的实现重定向,含中文的则无法实现。

今天花了一些时间终于找到了一个插件可以完美实现包含中文的链接结构%postname%到%post_id%的重定向,该插件为Permalink Redirect,目前2.04版本,激活该插件后在Old Permalink Structures:区域填上以前的链接结构(/archives/%postname%.html)保存即可,这将对《放羊博客》在用户阅读体验上有所提升。该插件还能完美重定向你的feed和hostname,这里不再详细介绍。

目前测试没有发现问题,如有任何异常,欢迎报告。

PS:昨天查看主机的发现,一段时间没上来看我的1G空间用掉了700M多,对于只装几个wp博客的服务器实在不正常,即使我装了很多插件和主题用于测试,但也不至于700M之多,并且这个数字还在增加,打开cpanel仔细排查之后发现error_log文件就占到了600M左右,着实把我吓着了,由此可见服务器稳定和网站优化是多么重要。