站内搜尋頁、排序篩選、會话與追踪參數,往往是站点 URL 數量增長最快的部分。它們對用戶有用,但對蜘蛛来说,很多组合既没有獨立内容,也没有對應的搜尋需求,却會持續占用抓取资源,把蜘蛛從真正需要被發現的頁面引開。下面按“先分類、再取舍、後监控”的顺序,梳理一遍比較稳妥的處理方式。
一、先把參數 URL 分類,別一刀切
同样是带參數的 URL,處理方式差別很大,可以先按下面的维度分一分:
- 分頁參數:列表翻頁,通常属于有效路径,建议保留可抓取,並提供規范的翻頁連結。
- 排序參數:同一批内容換顺序展示,一般不需要作為獨立頁面被抓取。
- 篩選參數:要看篩選维度能否构成稳定、有實际内容的列表。品類、地区這類常见篩選可以保留少數组合,多條件叠加則應限制。
- 會话與追踪參數:對頁面内容没有影响,尽量在服務器端忽略或重定向到干净地址。
- 站内搜尋參數:结果頁随查询词無限變化,属于需要重点约束的部分。
分類之後往往能發現,真正值得蜘蛛抓的只是其中一小部分,其余大多是路径上的噪声。
二、组合爆炸是怎么發生的
假设一個列表頁有 5 個篩選维度,每個维度 4 個取值,理论组合數就是 1024 種。頁面上的篩選入口如果是普通 a 标簽,蜘蛛會顺着連結层层叠加條件,把大量高度相似的頁面翻出来。這些頁面内容重复度高,渲染過程還要反复查询資料库,占用服務器资源。
一個實用的观察方法是:在抓取日誌里按 URL 是否带參數分组,看參數 URL 在總抓取量中的占比。如果它長期占了明顯的大头,而對應頁面並没有带来訪問,通常說明抓取路线需要收敛。
三、内鏈结构上的取舍
抓取入口决定蜘蛛往哪走,所以調整要從内鏈入手,而不是只依赖屏蔽規則。
- 把有價值的列表頁放進導航、栏目頁和面包屑,让蜘蛛優先沿這些路径前進。
- 篩選、排序這類交互,尽量用表單提交或前端事件触發,而不是把每一種组合都寫成可直接跟随的連結。
- 站内搜尋结果頁一般不建议作為可收錄頁面。若確認不需要,可以在頁面上加 noindex;注意 noindex 生效的前提是蜘蛛能抓到该頁面,如果同时在 robots.txt 里屏蔽了整個目錄,标簽就看不到,反而容易留下大量空壳 URL。
- 分頁保持线性结构,避免“跳到任意頁”的連結堆叠。
站内搜尋頁的两種常见做法
一種是把结果頁完全屏蔽抓取,代價是屏蔽之後 noindex 無法生效;另一種是允许抓取但加 noindex,让蜘蛛看到明确信号後逐步降低訪問。两種做法各有取舍,建议先在測試目錄观察日誌,再决定是否全站推行。
四、给蜘蛛一條清晰的抓取路径
- 确定一组入口頁:首頁、主要栏目、少量核心列表。
- 從入口頁出發,用内鏈把蜘蛛引到内容詳情頁,路径尽量控制在三到四跳以内。
- 只把稳定、有實际内容的列表 URL 寫入 sitemap,不要把所有參數组合都提交。
- 對确實不需要抓取的參數目錄,在 robots.txt 里做相對宽松的屏蔽,避免誤伤正常頁面。
- 上线後看两到四周日誌,观察參數 URL 的抓取占比是否回落。
五、上线後要盯的几個數字
- 參數 URL 抓取占比:是否在缓慢下降,而不是反复波動。
- 有效列表頁的抓取频次:收敛之後,核心頁面有没有得到更多訪問。
- 响應狀態分布:如果參數頁大量返回 200 但内容雷同,說明收敛還不够。
- 服務器负载:參數頁被大量抓取时,查询和渲染压力會明顯上升,收敛後通常會缓解。
整体思路是:把有限的抓取机會優先留给有内容、有入口、有更新價值的頁面。篩選參數和站内搜尋頁並非不能存在,但需要被明确划出邊界,蜘蛛才不會在一片相似 URL 里反复打轉。