做蜘蛛池或站内引流时,入口頁上的目标連結往往是直接從後台报表、統計工具或別處頁面複製過来的,末尾常常带着 utm_source、spm、from、ref 這類跟踪參數。這些參數對人没有影响,對搜尋蜘蛛却是另一回事:同一個目标頁,因為參數不同,可能被当成多個 URL 分別抓取。下面把這件事拆開说清楚。
搜尋蜘蛛怎么判断带參數的 URL 是不是新地址
搜尋引擎處理 URL 时會先做一轮規范化。协议和主机名大小寫、預設端口、结尾多余的斜杠、片段标识(也就是 # 後面的内容),這些通常會被合並。但查询字符串(?a=1 這样的部分)一般會保留,因為參數在很多时候确實對應着不同的内容。
所以對搜尋蜘蛛来说,/page 和 /page?utm_source=x 是两個不同的 URL。它不會因為參數名恰好叫 utm 就自動忽略,是否忽略取决于搜尋引擎自身的參數處理規則和该站点的歷史表現,這部分你無法直接控制,只能在連結寫法上减少歧义。
會带来哪两種结果
结果一:抓取预算被重复消耗
入口頁如果给每個目标連結都拼上不同的跟踪參數,蜘蛛跟進时就會為同一份内容多次發起請求。抓取预算是有限的,重复請求多了,真正需要被發現的新 URL 排队時間就更長。對蜘蛛池這類靠入口頁批量分發連結的场景,這種浪費會明顯影响效率。
结果二:參數頁與干净頁内容相同,被归一
如果參數纯粹是統計用途,頁面内容和不带參數的版本完全一致,搜尋引擎在整理索引时通常會把它們归並到其中一個版本。归並的结果不一定是你期望的那個 URL,观察收錄情况时如果只盯着带參地址,很容易誤判成没被抓到。
入口頁連結的規范寫法
- 入口頁上只寫干净的目标 URL,把跟踪參數交给落地頁的前端脚本或後續跳轉處理;
- 确實需要区分来源时,用清晰的路径区分,或在带參頁面上設定 canonical 指向不带參的版本;
- 對明确無意义的參數(會话 ID、排序參數、随机會话串),可以在 robots.txt 里屏蔽對應路径,但要记住:屏蔽之後该 URL 就不會被抓取;
- 检查入口頁模板,避免程序在循环生成連結时统一拼接參數。
什么时候參數是必须保留的
並不是所有參數都该清理。分頁參數(page=2)、篩選條件(color=red)、語言或地区切換,這些通常會真實改變頁面内容,属于有意义的 URL 组成部分,不适合一概屏蔽或重寫。判断标准很简單:去掉參數後,頁面内容是否仍然一致。一致就倾向清理,不一致就保留。
日誌里怎么確認是入口頁在带參
在服務器訪問日誌中,如果出現大量形如 /target?utm_source=...&spm=... 的請求,且路径部分相同、只有參數不同,基本可以判断入口頁在批量輸出带參連結。可以進一步統計這些請求的蜘蛛 UA 占比、返回碼分布和請求間隔,再决定是改入口頁寫法,還是加 canonical 做归並。如果參數值看起来像随机串,還要排除是統計脚本自己發起的請求,而不是蜘蛛抓取。
提示:參數屏蔽建议在確認该 URL 内容與干净版本重复、且不需要被單獨處理之後再执行,否則容易连带切断唯一入口。
几個常见誤区
- “參數是我們自己加的,搜尋引擎應该知道可以忽略”——它並不知道,查询字符串是 URL 的一部分;
- “加了 canonical 就萬事大吉”——canonical 是建议性信号,最好和干净的連結寫法配合使用;
- “把带參數 URL 全封掉最省事”——封掉的同时也封掉了這些地址的抓取能力,若某條連結是唯一通路,就等于断鏈。
把入口頁的連結寫法收干净,通常不需要任何額外工具就能减少一批無意义的抓取請求。至于收錄和排名,仍取决于頁面内容本身和搜尋引擎的判断,連結寫法只解决“別把预算浪費在重复地址上”這一件事。