事情本身不复杂,线索都在日志里。商品详情页原来 canonical 指向 /p/123.html,改成 /product/123 之后,搜索里 A 版还在,B 版被标成备用网页,两边点击量一起往下掉。

第一反应是「内链和 sitemap 仍大量指向旧地址,信号互相抵消」,验证下来不成立。

真正麻烦的地方在于,几个原因的现象几乎一样。旧地址没有做 301,只是把 canonical 换了个目标。也可能是新地址自身没有自引用,标签被判成指向不明。

另外,CDN 还缓存着带旧 canonical 的 HTML。

动手时先看两个地址当前输出的 canonical

curl -s https://www.example.com/p/123.html | grep -i 'rel="canonical"'

再往下把旧地址改成 301 单跳

rewrite ^/p/(\d+)\.html$ /product/$1 permanent;

随后确认新地址自引用

curl -s https://www.example.com/product/123 | grep -i canonical

末了清掉旧地址的 HTML 边缘缓存

curl -X PURGE https://www.example.com/p/123.html

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

恢复的判定其实很直接。旧地址返回 301,新地址 canonical 指向自身,GSC 里备用网页标记消失,A 版两周内移出索引。

这里还有个坑。换 canonical 目标时先让旧地址退出抓取路径,两条指令同时给会互相打架。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189