现场是这样的。更新 SEO 插件后,原本指向规范地址的 canonical 全部变回当前 URL,带参数的页面也开始自我声明。重复内容报告里的条目几天内涨了一倍。
真正麻烦的地方在于,几个原因的现象几乎一样。更新重置了自定义 canonical 的设置;主题里的 canonical 钩子优先级更高,先输出了;参数页重新开始输出自身地址。
动手时先抽查带参数页面的 canonical
curl -s 'https://www.example.com/a/?ref=1' | grep -i canonical
恢复自定义 canonical 配置
add_filter('wpseo_canonical', 'fix_canonical');
剩下的就是确认参数页已收敛
curl -s 'https://www.example.com/a/?ref=2' | grep -i canonical
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
别只看报错消失,验证要多做一步。带参数的页面 canonical 指回主地址,重复内容报告逐步回落。
插件更新前先看更新日志里有没有涉及 canonical 的改动,测试环境跑一遍再上生产,能省下不少排查时间。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。