sitemap 里列了 500 条 /product/a/ 地址,这些页面的 canonical 全指向 /product/b/,Search Console 报已提交的网址标记为重复。日志里能对上时间点,这种反而好排。
商品合并后 canonical 批量改到了新品页,sitemap 生成器还按旧表输出原地址。旧地址没有做 301 仍然返回 200,两处信号相反,抓取工具只能相信 canonical。这一点先确认清楚,后面就不用反复试。
wp sitemap rebuild curl -s https://example.com/product/a/ | grep -i canonical # 与 sitemap 里的 loc 逐条对比
「canonical 与 sitemap 冲突」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
处理上按这个顺序:导出 sitemap 的 URL 和页面 canonical 做对比;生成时读 canonical 值,指向别处的就不写进 sitemap;合并过的旧地址改成 301,别留 200。
结果对不对很好判断,sitemap 里不再出现 canonical 指向别处的地址,冲突提示消失。
