之前我更改了今日杂记的固定链接形式,也用301进行了重新定向(参见:WordPress更改固定链接形式后用301重新定向),今天在数据里替换站内链接时发现一个问题(参见:WordPress更换固定链接后用phpMyAdmin批量替换站内链接),百度已经收录了部分更改后的固定链接,新旧固定链接同时存在,还出现了一种新的链接,今日杂记并没有使用的链接,“todaym.com/archives/iphonerar.html”这种形式,访问这个链接也能转跳到新的“todaym.com/archives/123.html”这种形式的新链接,虽然这个链接能访问、能转跳,但是不用想对百度肯定不友好,退一步讲,不管SEO这些,自己看了心里也不舒服。
想了想,应该是.htaccess文件里301重定向代码的问题,之前的代码如下:
RedirectMatch 301 ^/([0-9]+)/([0-9]+)/(.*).html$ /archives/$3.html
问题就出在那个“$3”,这段代码让百度以为只是把“/([0-9]+)/([0-9]+)/”改成了“/archives/”,后面的“abc-123.html”这种字母、横线加数字组合形式的链接还是没有改变,而我希望百度认为“abc-123.html”这种字母、横线加数字组合形式的链接变成了“789.html”纯数字形式的链接。但是,上面的代码,你又不能像下面的代码这样更改,更改后出现错误,转跳不成功。
RedirectMatch 301 ^/([0-9]+)/([0-9]+)/(.*).html$ /archives/(\d+).html
目前我还没有找到一个比较好的方法来解决这个问题,还好查询了“todaym.com/archives/iphonerar.html”这种形式链接的HTTP状态是301。
更新:我在robots.txt里禁止搜索引擎收录“/archives/*-*”这种形式的链接,这样就解决了搜索引擎收录“todaym.com/archives/abc-123-xy-78.html”这种形式的链接。