背景知识,我们管理着一个由25个不同WP站点组成的网络,这些站点都运行在相同的代码库中。最近我们有一个SEO分析师加入,他注意到有几个网站有奇怪的404问题,对于这样的网址:
**/category/featured-article/ryan-mcnamara-new-different/news/page/2/**
所以我禁用了所有插件和挂钩,尝试全新安装,这些东西仍在发生。事实证明,只有网站的永久链接结构才会以.html结尾。所以我深入研究了重写代码,结果发现这是网址发生的最新情况:**/category/featured-article/ryan-mcnamara-new-different/news**
**/%category%/%postname%/**
,那么
可用的重写规则($wp_rewrite->rewrite_rules()
)然后这个规则
匹配:**(.+?)/([^/]+)(/[0-9]+)?/?$**
,导致404符合预期。**/%category%/%postname%.html**
,那么这个
规则匹配:**(.+?)/?$**
,映射到
**index.php?category_name=$matches[1]**
,因此该类别为何
当用户/机器人找到这些类别页面并单击时,呈现
他们被带到的分页链接
**/category/featured-article/ryan-mcnamara-new-different/news/page/2/**
,哪个
导致404。第一个问题是人们如何首先找到这些页面,这是我可以处理的问题。这个论坛的问题是这是一个错误,重写WP有默认值,或者paginate_links函数是否应该更聪明地创建分页URL?有没有人见过这个问题?
警告:不,我不能强制所有网站删除.html,并且我没有能力为此问题更改核心WP代码