入口頁上挂的目标連結,如果带上 ?utm_source=xxx、&ref=123 之類的尾巴,站長常會纠结两件事:搜尋蜘蛛會不會把它当成一個新 URL 反复抓?參數堆多了,會不會干脆跳過不抓?這两個担心都有道理,但答案取决于參數的類型和數量,不能一概而论。
搜尋蜘蛛對带參數 URL 的基本態度
並不存在“带參數就不抓”的規則。搜尋引擎真正權衡的是两点:這個地址會不會批量生成高度相似的頁面,以及抓它值不值得占用有限的抓取预算。因此實际表現是分层的:
- 结构简單、數量可控的參數,例如分頁參數,通常仍會被正常抓取。
- 取值可以無限组合的參數——排序、篩選、價格区間、多條件叠加——容易被降频甚至跳過,因為每種组合都可能對應一個几乎相同的頁面。
- 會话類參數(sessionid、token、時間戳、随机數)每次訪問都不同,這類地址一般不會被当作獨立頁面處理。
入口頁给目标 URL 挂參數,會带来什么
入口頁本身的作用是让搜尋蜘蛛發現目标 URL。如果入口頁里輸出的連結带了一串跟踪參數,最直接的影响是:搜尋蜘蛛拿到的並不是你想让它抓的那個規范地址。後續可能出現几種情况。
- 抓取预算被摊薄。同一個目标頁面以多個參數版本出現,搜尋蜘蛛需要分別請求,真正有價值的地址反而排到後面。
- 重复内容風險。如果參數不影响頁面主体内容,多個版本内容高度相同,彼此之間會互相竞争。
- canonical 與入口頁連結打架。目标頁自己声明了規范地址,而入口頁却指向带參數的版本,等于给搜尋蜘蛛發了两個不同的信号。
- 入口頁自身的價值被稀释。入口頁輸出的連結越杂乱,越容易被判断為低质量連結集合,连带影响入口頁的抓取频率。
更稳妥的做法
- 入口頁只輸出規范 URL。去掉 utm、ref、from 之類纯統計用途的參數,让搜尋蜘蛛第一眼看到的就是最终希望被訪問的地址。
- 參數确實需要保留时,做規范化處理。在目标頁上加 rel=“canonical” 指向無參數版本,或让带參數地址 301 到規范地址。
- 跟踪統計不要走頁面上可见的連結。統計需求可以用服務端日誌、跳轉中間件或前端事件完成,不必把參數寫進 HTML。
- 把參數數量和取值固定下来。如果某個列表頁必须带參數,尽量控制在少數几個维度,避免“任意组合”式的 URL 爆炸。
- 用 robots.txt 兜底明顯無意义的部分。對确定不需要被抓的參數模式可以屏蔽,但要注意別顺手挡掉真正需要收錄的地址,改動後先在日誌里观察一段時間的抓取變化。
參數不是完全不能用
带參數的 URL 本身不是問题,問题在于“不可控的數量”和“無意义的取值”。像分頁、分類這類邊界明确、内容确有差异的參數,搜尋引擎是能處理的。真正容易被忽略的,是入口頁這個环节——很多人精心整理了目标站的 URL 结构,却在入口頁随手贴了一條從後台統計工具里複製的带參連結,等于把前面做的規范化工作又打散了。
一個简單的自检清單
- 入口頁上每條目标連結是否都是最终希望被訪問的地址。
- 頁面里是否混入了統計參數、會话參數或临时 token。
- 目标頁的 canonical 是否與入口頁連結指向一致。
- 带參數地址被請求时,日誌里是否出現了大量參數變体。
- 調整連結形式後,入口頁自身的抓取频率有没有異常波動。
搜尋蜘蛛對待參數 URL 的方式,本质上是對抓取预算的分配。入口頁要做的是减少歧义,让每條連結只指向一個明确的地址,而不是把選擇權交给搜尋引擎去猜。