与‘WordPress’有关的日志

WordPress 固定链接的逻辑分析

姚洪楼 发表于 学习备忘录 分类,标签:
0

之前发过一篇博客:https://www.mpyes.com/2020.08.21/23:59:00/2402
最近注意到,这其实并非我设置的固定链接与WordPress存在某些冲突的问题

我当时的固定链接格式是:http://域名/年.月.日/时:分:秒
之前可能WordPress没有考虑到我的这种链接会存在某一秒会有两篇甚至更多文章的情况
虽然正儿八经写博客根本不太可能出现,但别忘了WordPress是可以自定义文章时间的

所以,在某一个新版本,WordPress注意到了这个问题
我们知道,“域名/年”就会列出指定年份的文章列表,“域名/年/月”就会列出指定月份的文章列表,等等等等
所以WordPress索性直接将没有加入唯一定义字段的固定链接,统一作为文章列表页面去处理
比如:“http://域名/年.月.日/时:分:秒”就表示列出这一秒发布的所有文章的清单
并且:“http://域名/年.月.日/时:分:秒.html”也是同样的效果(因为新规则只考虑是否加入了唯一定义字段)
所谓唯一定义字段,常用的可能就只有 %post_id% 跟 %postname% 这两个了
比如:“http://域名/年.月.日/时:分:秒/%post_id%”或者“http://域名/年.月.日/时:分:秒/%postname%.html”等等

基于上述逻辑,再回头看:https://www.mpyes.com/2020.08.21/23:59:00/2402
其实并非什么BUG,也非代码故障,而是原来的固定链接被WordPress当成了列表去处理,而不再是文章
比如:https://www.mpyes.com/2020.08.21/23:59:00 打开后看不到评论模块,那是因为这是列表页
所以只要点击标题进入文章页 https://www.mpyes.com/2020.08.21/23:59:00/2402 便可看到评论模块了
而如果我的固定链接格式不进行修改,点击标题还是会进入 https://www.mpyes.com/2020.08.21/23:59:00
所以就会发生死循环了,造成评论模块丢失的假象(实际是URL处理逻辑优先级的问题)

========================================
上面是相关的逻辑说明,下面是打不开本博客某些文章的处理方法
========================================

本博客换过目录,很久前是/blog,后来是/r,后来直接放到了/根目录
本博客还换过域名,以前是mpyes.com,现在是mpyes.com
虽然通过301重定向、sql数据库批量替换等方法进行了一些处理
但肯定还有一些漏网之鱼没能考虑到,某些URL无法访问(包括搜索引擎索引的URL,本站文章链接的URL,等等)

如果无法打开的地址是 yaohonglou ,直接替换成 lengchugenya 就行
比如 https://www.mpyes.com/2020.08.21/23:59:00
改为 https://www.mpyes.com/2020.08.21/23:59:00

如果无法打开的地址是在目录 /blog、/r,直接去掉这个目录就行
比如 https://www.mpyes.com/2020.08.21/23:59:00
改为 https://www.mpyes.com/2020.08.21/23:59:00

如果无法打开的地址是一个数字结尾的,那么去掉这个数字试试
比如
https://www.mpyes.com/2020.08.21/23:59:00/2533
改为 https://www.mpyes.com/2020.08.21/23:59:00 然后点击文章标题
update:
WordPress似乎也对这个逻辑进行了更新,以前是某时间后面无对于文章ID,直接返回404
而现在则是忽略了时间错误,某位是数字的URL,只要该 %post_id% 存在,便会跳转到正确的地址

当然了,如果以上方法都行不通,而你又非得要用到某篇博客
那么还有一个办法自然是发邮件与我取得联系。