網站收錄

带跟踪參數的 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 或缓存层覆盖。

參數地址本身不是错誤,問题在于同一個内容被拆成了多條索引记錄。先让規范信号清晰,再考虑封禁和清理,顺序反過来往往會绕遠路。