列表頁加一排篩選條件、一個排序下拉,用戶找東西通常更快,但搜尋引擎蜘蛛顺着這些連結走進去,會發現一批内容高度相似的 URL:同一批商品按價格排序、按颜色篩選、带上追踪參數……這些地址本身不算错誤,問题在于被發現得太多,會挤占站点本就有限的抓取资源。
參數 URL 是怎么被蜘蛛發現的
常见入口大致有几類:
- 篩選條件寫成可点击的 a 連結,蜘蛛會逐個跟進;
- 排序功能用連結實現,每点一次都产生一個新地址;
- 站内搜尋结果頁被用戶複製分享,或被外站引用;
- 頁面連結由 JS 拼接,渲染完成後同样可能被讀取。
判断标准其實很简單:只要在 HTML 里以可点击連結的形式出現,蜘蛛就有机會走進去。按钮、表單提交、纯 JS 事件通常不會額外产生被抓取的 URL,除非它們最终輸出了可連結的地址。
為什么不能放任不管
參數頁大多只是同一批内容的重新排列,對用戶有價值,對索引却容易造成重复。当這些地址大量進入待抓取队列,直接後果是:
- 抓取资源被分散,新發布的規范頁面反而排在後面;
- 日誌里出現大量相似抓取记錄,排查問题變困难;
- 部分參數頁被抓取後進入索引,與主頁面争抢展示。
注意,這里说的不是“參數頁必须全部封掉”,而是要让蜘蛛把精力放在值得收錄的地址上。
先分清哪些參數值得保留
- 有真實检索需求的组合:比如品牌、颜色、尺碼這類用戶會主動搜尋的篩選维度,其中一部分可以保留為可收錄的落地頁。
- 只是排序或视图切換:按價格、销量、上架時間排序,一般不构成獨立内容。
- 會话與追踪參數:utm、来源标记、session id 之類,對抓取没有帮助。
- 分頁參數:保留,但要注意與規范形態的配合,別让翻頁連結無限制地扩散。
收口的几種做法
從連結出口控制
最直接的一步是改連結本身的形態。排序、视图切換改用按钮或表單提交,不再生成可点击地址;确實需要保留的篩選連結,限制维度组合,避免出現三层以上嵌套。站内搜尋的结果頁連結,一般不建议作為普通入口暴露给蜘蛛。
robots.txt 要谨慎使用
用 Disallow 拦住參數路径,能减少一部分抓取,但被拦下的 URL 仍然可能因為外鏈而被索引,只是内容無法被抓取判断。所以它更适合用来處理确實不需要抓取的路径,而不是当作萬能開關。
用 canonical 表態
對保留下来的篩選落地頁,如果内容與主列表高度重合,可以在頁面上声明規范地址,让蜘蛛知道哪個版本才是主体。canonical 是提示而非强制,所以前提是頁面本身不要互相矛盾。
Sitemap 只提交規范形態
站点地图里尽量只放确定要收錄的地址,不要把所有參數组合都塞進去。提交的样本越干净,蜘蛛對站点结构的判断越清晰。
站内搜尋頁單獨處理
搜尋结果頁數量不可控,通常建议加 noindex,同时用 robots.txt 阻止抓取。两者结合,既避免索引,也减少抓取消耗。
建议的處理顺序
- 先看服務器日誌,確認哪些參數组合真的在被抓、频率如何;
- 区分需要保留和需要收口的參數,列一份清單;
- 改連結出口,把排序、视图切換這類操作從連結改成交互控件;
- 對保留頁面加 canonical,明确規范形態;
- 更新 robots.txt 與 Sitemap,只保留必要路径;
- 持續观察两到四周日誌,確認抓取分布是否朝预期方向變化。
不要一次性把所有參數路径全禁掉,先小范围調整,再根據日誌反馈决定下一步。參數治理是随业務變化反复調整的過程,不是一次性的開關。
站点功能會不断更新,新的篩選维度、新的排序方式都可能带来新的參數 URL。把這件事放進定期巡检的清單里,比事後集中處理要轻松得多。