这个坑值得记一笔。文章页自己返回 200,canonical 却写在另一条会 301 的地址上,GSC 里这条 URL 一直显示已排除,怎么请求收录都没用。

真正麻烦的地方在于,几个原因的现象几乎一样。canonical 指向的地址本身会跳转,信号被判定为不明确;页面内链和 sitemap 用的又是第三条地址;主题模板在迁移后没有同步改 canonical 输出。

先确认 canonical 目标的状态码与跳转链

curl -sIL https://www.example.com/new-post/ | grep -E 'HTTP|location'

随后把 canonical 改成当前页的最终地址

add_filter('wpseo_canonical', 'self_canonical');

剩下的就是统一内链与 sitemap 的写法

grep -rn 'canonical' /www/wwwroot/site/wp-content/themes/

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

这类改动我都写进变更记录,过两周再出问题时能对上号。

怎么算真的好了,看的是同一批现象。两到三周后这条 URL 进入已编入索引,canonical 指向与最终地址一致,报告里的冲突提示消失。

canonical 必须是最终可访问的 200 地址,指向一个还需要跳转的地址,等于让蜘蛛再猜一次,通常会失败。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189