这个坑值得记一笔。以前靠 GSC 的网址参数工具把 utm 参数告诉 Google,工具下线后带参数的地址又开始被单独收录,同一篇文章出现十几个版本。

刚开始盯着「canonical 没有忽略参数,带参数的页面被当成独立 URL」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。参数工具已经停用,历史设置不再对抓取生效;站内分享按钮把 utm 参数写进了内链,蜘蛛顺着爬;内链生成的参数组合几乎无限,抓取预算被摊薄。

动手时先抽查带参数地址的实际访问量

grep -c 'utm_source' access.log

然后在 canonical 里只保留路径部分

add_filter('wpseo_canonical', function($c){ return strtok($c, '?'); });

给参数页加 robots 兜底

Disallow: /*?utm_

等前面都确认过,再确认参数页不再进索引

site:www.example.com inurl:utm_source

别只看报错消失,验证要多做一步。site 查询里带 utm 的地址数量持续下降,日志里这类请求占比降到一成以下,同一篇文章的收录版本收敛为一个。

参数工具下线不影响已有的 canonical 信号,但站点自己用参数做内链的习惯不改,屏蔽再多也追不上新生成的组合。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189