站内搜尋頁和篩選參數地址,往往不是刻意做出来的入口,而是功能自然产生的“副产品”。用戶搜一次、勾一個篩選、点一次排序,地址栏就多出一串參數。功能上没問题,但對蜘蛛来说,這些地址都是可以顺着連結爬進去的頁面。數量一多,就容易把站点的地址空間撑得很大。
這類地址為什么會失控
核心原因是组合。假设一個列表頁有 5 個篩選维度,每個维度 4 個選項,理论上就能组合出上千個地址。如果這些组合還能叠加排序、頁碼、视图切換,數量會再翻几倍。其中绝大多數组合頁没有獨立價值:内容和其他组合高度重合,甚至只是空结果。
另一個来源是站内搜尋结果頁。很多模板會把搜尋框做成表單 GET 提交,任何關鍵詞都能生成一個 /search?q=xxx 的地址。如果這個地址可被抓取、可被索引,蜘蛛只要發現一次入口,就可能顺着站内相關推荐反复爬取不同關鍵詞的结果頁。
自查:先看清有哪些參數地址
- 在服務器日誌或爬虫日誌里筛出带 ? 的請求,按參數名归類,比如 q、s、keyword、page、sort、order、filter、price、color、view 等。
- 統計每個參數被爬取的频次和返回狀態,注意是否存在大量 200 狀態但内容雷同或為空的頁面。
- 检查這些地址是否有内鏈指向:列表頁的篩選連結、搜尋頁的“相關搜尋”、分頁组件、标簽云。
- 確認它們目前的索引狀態與 canonical、noindex 設定是否一致。
- 检查带追踪參數(utm、from、ref 等)的地址是否會被正常頁面鏈出。
處理思路:按價值区分,而不是一刀切
不是所有參數地址都要屏蔽。真正值得保留的是那些能形成獨立主题、有稳定需求、内容确實不同的篩選结果,比如“某城市二手房”“某品牌某型号”。這類可以考虑做成固定路径的静態頁,配獨立标题和描述,而不是靠參數拼出来。
其余低價值组合,比較稳妥的做法是分层處理:
- 站内搜尋结果頁:一般不建议让外部索引。可以在 robots.txt 里屏蔽對應路径,同时在頁面上加 noindex,两者配合,避免地址被抓取後還被展示。
- 排序與视图參數:canonical 指回不带该參數的預設列表頁,同时用 rel="nofollow" 處理排序連結。
- 多维度篩選:限制可组合的维度數量,或者只允许“單维度 + 單值”被抓取,其余组合通過參數顺序统一、服務端合並。
- 追踪參數:在服務端 301 到干净地址,或在頁面輸出时统一 canonical。
屏蔽和 noindex 能减少無效抓取,但不等于内容就會被收錄或排名提升。它們的作用是让蜘蛛少花時間在無意义的地址上。
別忽略前端渲染带来的連結
有些篩選是前端 JS 動態生成的,頁面源碼里看不到連結,但渲染後會出現。如果蜘蛛具备渲染能力,同样能發現這些地址。所以自查时不要只看 HTML 源碼,還要看渲染後的 DOM 和實际發出的請求。
改完之後看什么
調整後的一两周内,重点關注日誌里這些參數地址的請求占比是否下降、抓取是否更多落在内容頁和栏目頁上。同时留意站内搜尋功能是否仍然正常——屏蔽爬虫不等于屏蔽用戶,別把功能一起關掉。
最後提醒一点:參數地址管理是長期工作。每次改版、增加篩選维度、接入新的搜尋组件,都可能重新引入一批地址。把它寫進上线自查清單,比事後补救省力得多。