使用Redirection插件要加小心

刚刚登录google网站管理员工具时,发现在Sitemap中有一个警告,警告如下:

Table 1. Sitemap 错误和警告

状态 详细信息

网址无法追踪

HTTP 错误:

301 (永久转移)
当我们从您的 Sitemap 中测试网址实例时,我们发现有些网址重定向至其它位置。我们建议让您的 Sitemap 包含指向最终目的地(重定向目标)的网址,而不是包含重定向的其它网址。

URL:

https://blog.easwy.com/archives/xlink-href-can-not-generate-html-hyperlink/

检测到问题的日期:

2009-2-25


尝试用firefox打开google给出的链接,出现了404 not found错误。再仔细看一下地址栏的URL链接,发现链接由

https://blog.easwy.com/archives/xlink-href-can-not-generate-html-hyperlink/

变成

https://blog.easwy.com/archives/xlink-href-can-not-generate/-hyperlink/

注意显示为粗体的部分。也就是说,在URL网址中的”-html“被置换成”/“,难怪Google提示无法打开网址。

既然google提示网址被301永久重定向了,会不会和我用的Dean’s Permalinks Migration插件Redirection插件有关呢?只有这两个插件会301永久定向我的博客链接。

登录wordpress后台,对这两个插件进行了检查,应该不是Dean’s Permalinks Migration插件,它的设置很简单,只是把我旧的永久链接结构,重定向新的永久链接结构(见更改永久链接结构所需的插件一文),不会导致这个问题。那就只剩下Redirection插件了。仔细查看之下,果然发现了问题。

我创建了一条正则表达式(regex)重定向规则,把”/blog/archives/([a-zA-Z0-9-]*).html“全部重定向为”/blog/archives/$1/“。但是正则表达式的写法有问题,在正则表达式中,”.“代表任意字符,上述表达式中的”.html“会匹配到”-html“,所以就导致301重定向了。而重定向后的网址是不存在的,所以才会出现404 not found错误。

问题的原因找到了,解决办法也就简单了,把regex表达的规则改为”/blog/archives/([a-zA-Z0-9-]*)\.html“,对”.“进行一下转义,OK,问题解决了!

现在觉得,Redirection插件功能确实强大,但正因为它太强大了,一旦设置不好,就会导致很奇怪的问题。看来用的时候要加小心。

“使用Redirection插件要加小心”的3个回复

  1. 这个错误我也有,不过是因为我装了一个翻译插件,它自动生成缓存,而后把文章按照不同语种保存到不同文件夹下,结果提示了,但是我能正常打开,而且都是翻译好的

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注