1

一点背景知识,我们管理着一个由 25 个不同的 WP 站点组成的网络,这些站点都运行相同的代码库。最近我们有一位 SEO 分析师加入,他注意到一些网站存在奇怪的 404 问题,如下所示:

**/category/featured-article/ryan-mcnamara-new-different/news/page/2/**

所以我禁用了所有插件和钩子,尝试全新安装,但这些东西仍在发生。事实证明,只有网站的永久链接结构以 .html 结尾。所以我深入研究了重写代码,结果发现这就是 URL 发生的事情:**/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 代码

4

0 回答 0