网站收录

带跟踪参数的 URL 进了索引:同内容多地址的收录治理顺序

站内页面本身正常,索引里却多出一批带 utm、from 等参数的地址,同一内容被拆成多条记录。本文拆解这些参数 URL 是怎么被蜘蛛抓到的,按跟踪类、内容类、功能类分开判断,并给出从 canonical 到 noindex 的处理顺序,以及 robots.txt 一刀切常见的几个坑。

网站收录

带跟踪参数的 URL 进了索引:同内容多地址的收录治理顺序

站内页面本身没什么问题,但用 site 查询或在索引报告里翻几页,会看到一批带 utm_source、from、spm 这类参数的地址。它们和主地址的内容几乎一样,只是被不同渠道的链接带出来的。同一内容出现多条索引地址,一方面让索引页数看起来虚高,另一方面也会分散内链和权重信号。

参数 URL 是怎么被蜘蛛抓到的

绝大多数带参数的地址不是你自己提交的,而是从外部进来的:广告投放、社交分享、邮件签名、合作方转载、站内自动生成的分享链接。蜘蛛顺着这些入口抓到参数地址后,如果页面上没有明确的规范信号,它就可能把参数地址当成一个独立 URL 处理。

另一部分来自站内。筛选、排序、分页、打印这些功能本身就会生成参数地址,如果这类链接在列表页和详情页里大量出现,蜘蛛会顺着它们一路往里走。

先分三类,再决定怎么处理

  • 纯跟踪参数:utm 系列、gclid、fbclid、spm、from、ref 等,只记录来源,不改变页面内容。这类地址应当统一归到无参数版本。
  • 会改变内容的参数:筛选、排序、分页、语言、地区。它们可能是独立页面,也可能只是同一页面的不同视图,需要逐个判断是否有独立的搜索价值。
  • 功能型参数:登录回跳、临时 token、session id。这类地址对用户和蜘蛛都没有意义,通常可以在服务端就避免写进链接。

处理顺序:从规范信号开始,而不是先封禁

很多人第一反应是在 robots.txt 里写一条规则,把带问号的地址全挡掉。这样做的问题在于,蜘蛛被挡住之后就看不到页面上的 canonical 和 noindex,已经进索引的地址反而更难清理。

  1. 保证每个参数地址都能输出正确的 canonical。无参数版本自己指向自己,带跟踪参数的版本指向无参数版本。注意是服务端输出,不要靠前端脚本后补。
  2. 统一站内链接的写法。列表页、面包屑、相关推荐里的链接都用干净地址,分享按钮也尽量避免把参数写进可抓取的链接。
  3. 对确认无价值的参数地址使用 noindex,meta 标签或 HTTP 响应头都可以。前提是页面能被抓取,否则规则不会被读到。
  4. 外部渠道的参数尽量收敛。如果同一个活动同时用了五六种参数写法,可以统一成一套,减少需要处理的 URL 变体数量。
  5. 已经进索引的地址,靠 canonical 慢慢收敛。不建议为了清理参数地址而大规模改动 URL 结构,改动本身带来的波动往往比参数地址更大。

几个容易踩的坑

  • canonical 由模板动态生成,结果把带参数的当前地址写成了规范地址,等于自己承认这是主副本。
  • canonical 和 noindex 同时出现在一个参数地址上,信号互相打架,蜘蛛的取舍不一定符合预期。
  • 把筛选参数当成纯跟踪参数处理。筛选结果如果确实是用户会搜的内容,一刀切 noindex 可能损失一部分入口。
  • 在 robots.txt 里用通配符挡住所有带问号的地址,顺带把分页和语言版本也挡住了。

怎么验证有没有效果

看三个地方:索引报告里带参数的地址数量有没有缓慢下降;日志里参数地址的抓取次数是否减少;无参数版本的主地址抓取是否更集中。这个过程通常以周为单位,前几天没变化属于正常。如果连续几周都没有动静,再回头检查 canonical 是否真的输出正确、noindex 是否被 CDN 或缓存层覆盖。

参数地址本身不是错误,问题在于同一个内容被拆成了多条索引记录。先让规范信号清晰,再考虑封禁和清理,顺序反过来往往会绕远路。