记录一下那天晚上的排查过程。运营把五个栏目合并成三个,被撤掉栏目下的文章全部移入新栏目,页面 canonical 仍指向已删除的旧栏目页,收录开始批量掉。

刚开始盯着「面包屑和结构化数据里的栏目链接还是旧的」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。合并脚本只改了文章归属,没重算 canonical。还有一种是旧栏目页被删成 404,canonical 指向一个死地址。

还有一种情况,站内导航批量更新了,正文里的栏目内链没动。

先抽查文章的 canonical

curl -s https://www.example.com/post-1/ | grep -o 'rel="canonical"[^>]*'

然后确认旧栏目页的返回码

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

接着把 canonical 指向新栏目

UPDATE wp_postmeta SET meta_value='https://www.example.com/new-cat/' WHERE meta_key='_yoast_wpseo_canonical' AND post_id IN (1,2,3);

旧栏目统一 301 到新栏目

rewrite ^/old-cat/(.*)$ https://www.example.com/new-cat/$1 permanent;

别只看报错消失,验证要多做一步。文章的 canonical 与面包屑都指向新栏目,旧栏目 301 生效,掉收录的趋势在一周内止住。

补一句。栏目合并要同时处理归属、canonical、面包屑和内链,漏掉任何一项都会留下自相矛盾的信号。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189