这个坑值得记一笔。文章改版时把旧地址批量设成 410,canonical 却仍指向旧地址,蜘蛛读到 410 后把整组页面判为已删除,新地址两周内也没能进索引。

刚开始盯着「新旧地址内容一致,canonical 却指向了不存在的旧版」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。canonical 在数据库里是绝对路径,批量改版只改了路由;410 页面没有保留任何跳转,蜘蛛认为内容永久消失;sitemap 里同时提交了新旧两套地址。

动手时先抽查 canonical 与状态码

curl -s https://www.example.com/new/post-1024/ | findstr /i canonical

然后确认旧地址返回什么

curl -s -o NUL -w "%{http_code}\n" https://www.example.com/old/post-1024/

随后把旧地址改成 301 指向新地址

curl -sI https://www.example.com/old/post-1024/ | findstr /i "HTTP location"

同步修正 canonical 与 sitemap

curl -s https://www.example.com/sitemap.xml | findstr /c:"post-1024"

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

改完先别撤,确认这几项。旧地址改为 301、canonical 指向新地址后,新页面一周内进索引,410 记录从报告里消失。

410 是不可逆信号,改版时只要还有页面 canonical 指向旧地址,就不能把旧地址设成 410。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189