从旧站迁移时批量生成了 canonical,其中一批指向了已经删除的地址,这些页面全部被排除在索引之外。

把日志和配置对完,能解释这个现象的基本就这几处。迁移脚本按旧 ID 拼接地址,新站没有对应页面。少数情况下是canonical 指向的地址返回 404,标签被判定无效。

少数情况下是sitemap 里仍提交着这些页面。

批量检查 canonical 目标的状态码

curl -s -o /dev/null -w '%{http_code}' https://www.example.com/a/

接着把无效页面改成自指或删掉标签

add_filter('wpseo_canonical', 'self_canonical');

从 sitemap 里移除这些地址

SELECT ID FROM wp_posts WHERE post_status='publish';

当时还开着另一个排查窗口,两边日志对照着看才定位到。

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

别只看报错消失,验证要多做一步。canonical 目标全部返回 200,页面逐步恢复收录,报告里的排除条目减少。

提醒一点。canonical 指 404 比不写更糟,不写蜘蛛还能自己判断,指向死链等于明确告诉它这条页面不必收录。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189