永久链接格式设为postname时导致页面显示错误的解决办法

2012年7月5日20:35:15 技术分享 发表评论 1

Bruce老师的细心指导下,修改了 Reeoo.com 的永久链接格式,从原来的 /%category%/%post_id% 的格式修改为 %postname% ,以便于url变得更有意义一些,当然这个前提是 Reeoo.com 所有的文章标题都是被收录的网站的名称,不需要另外再去重新编辑slug之类的。

以上两个不同的URL格式的差别,只有在文章页(single)才显示,分类页及其它页面基本都是一样的,所以无需做过多的修改,另外再安装 Dean's Permalinks Migration 插件更是连301都不需要做。

安装这个插件后,会自动读取当前的URL格式,保存一下然后去修改永久链接格式,当访问旧地址时会自动301跳转到新地址。

本以为一切都顺风顺水的,但当检查地址是否全部正确的时候,发现很多以前的老文章访问时,页面的内容结构会由读取 single.php 文件变成读取 page.php 文件,而访问附件的地址时则是正常的,但url不会跳转,注意看以下两个截图的地址栏:

永久链接格式设为postname时导致页面显示错误的解决办法

永久链接格式设为postname时导致页面显示错误的解决办法

进一步检查这些显示有错误的文章内容时,发现这些文章内容是完全正常的,随意添加一点内容再更新文章时,页面依然显示错误的。

于是又将文章内容里的图片删掉,重新添加一下图片,再保存时显示就正常了,基本上判定为图片上传的时候有问题。而出现错误的文章发布时间集中在2010年1月份之前,回想在最早开始给Reeoo添加内容时,因为嫌每个文章上传一次图片麻烦,所以有时会一下子上传一堆图片,然后写每个文章时直接复制HTML代码过去修改,以达到更快速简便的效果。

再加上最早的时候使用的是WordPress2.8的版本,之后经历过几次大版本升级,数据的升级可能不完善,于是就导致了这个问题的出现。

确定为图片上传的问题后,改为去检查媒体库,发现里面有接近200来张的图片是没有附属的,也即是在数据库里这些图片没有被指定附加在哪个文章里,于是只需要重新为这些图片指定附属的文章,问题完美解决。

永久链接格式设为postname时导致页面显示错误的解决办法