当一個頁面可以通過多组參數组合訪問时,蜘蛛會把這些组合当成不同的 URL 分別發現。常见的情况是:同一批商品既有颜色篩選、價格排序,又有分頁和追踪參數,URL 數量在短時間内成倍增長。抓取预算並没有增加,结果就是真正需要更新的頁面回訪變慢。
先確認哪些參數真的改變了内容
不是所有參數都值得被当作獨立頁面。可以抽样對比:去掉參數後,HTML 主体、标题、主要文本是否基本一致;如果只是排序不同或篩選後項目顺序變化,内容重叠度很高,通常不需要獨立抓取。
- 篩選參數:同一分類下不同條件的结果頁,若只是項目子集變化,需评估是否有獨立搜尋需求。
- 排序參數:按價格、销量、上架時間排序,通常内容相同,只是顺序不同。
- 分頁參數:已有分頁序列的讨论,這里關注的是分頁與篩選叠加後产生的组合數量。
- 追踪參數:来源、活動、會话 ID 等,不應出現在站内連結中,也不應被蜘蛛大量發現。
- 展示參數:列表视图、網格视图、每頁數量等,多數情况下不影响核心内容。
從連結暴露端控制组合增長
蜘蛛發現 URL 的主要途径仍然是連結。站内篩選如果全部以可抓取的 a 标簽輸出,组合數會迅速膨胀。可以考虑:
- 让篩選结果通過表單提交或 JavaScript 交互触發,不生成大量静態可抓連結。
- 保留少量有價值的篩選入口,其余组合不主動暴露。
- 排序切換預設使用同一 URL,或通過前端參數控制,不寫入服務端連結。
- 分頁與篩選不要互相叠加成無限路径,必要时限制可抓取的组合范围。
canonical、robots 與 noindex 的邊界
canonical 可以告诉搜尋引擎哪個 URL 是主要版本,但它不阻止蜘蛛抓取參數頁。robots.txt 的 Disallow 能减少抓取,但被屏蔽的 URL 仍可能因外鏈或歷史记錄被發現;如果頁面本身需要參與索引,屏蔽後也無法传递信号。noindex 适合不希望出現在结果中的頁面,但蜘蛛仍需抓取才能看到该标簽。
這三種手段解决的是不同問题:canonical 處理重复信号,robots 處理抓取訪問,noindex 處理索引收錄。把它們混用,容易得到“抓取没减少、索引也没收敛”的结果。
日誌中的核對清單
用服務器日誌按路径前缀、參數數量、响應狀態分组,观察一段時間内的抓取分布:
- 同一路径下带參數的 URL 請求量是否遠高于不带參數的版本。
- 參數组合是否在持續新增,且没有對應的内容更新。
- 參數頁返回的狀態碼是否正常,内容是否與主版本高度相似。
- 被大量抓取的參數頁是否反過来挤占了栏目頁、詳情頁的回訪。
- 站内連結、站点地图、外部入口中是否仍在輸出這些參數组合。
把抓取机會留给内容更新
參數去重不是一次性的清理,而是連結生成規則的長期约束。每次新增篩選、排序或追踪逻辑时,先回答两個問题:這個组合有没有獨立内容價值;它會不會以可抓取連結的形式暴露给蜘蛛。如果答案是否定的,就在前端和連結輸出层收敛,而不是等到日誌里出現大量重复抓取後再补救。
最後需要提醒的是,不同站点的參數结构和抓取表現差异很大。以上清單适合作為排查起点,具体取舍仍要结合自身日誌、内容更新频率和抓取预算来判断,不必追求一次性覆盖所有组合。