很多站点的正文頁面數量並不夸張,但站内搜尋頁、篩選頁、排序頁却能把 URL 總量放大好几倍。這些頁面由參數自動生成,没有人工审核,也缺少固定的内鏈入口,蜘蛛一旦走進去,很容易在排列组合里反复绕圈,既浪費抓取资源,也让真正需要被發現的正文頁排在後面。
一、先摸清哪些參數會生成新 URL
動手處理之前,先把參數来源列清楚。常见的几類:
- 站内搜尋:?q=、?s=、?keyword= 這類由訪客輸入决定的頁面,内容组合几乎是無穷的。
- 篩選與排序:?color=、?brand=、?price=、?sort=、?order= 等,單一维度還好,多维度叠加就會迅速膨胀。
- 追踪參數:utm_source、utm_medium、gclid 等投放參數,同一篇内容會派生出若干版本。
- 分頁:?page= 與篩選條件组合後,數量往往再翻一倍。
把最近一周的訪問日誌拉出来,按參數名做一次分组統計,就能看出哪些參數被蜘蛛高频訪問,哪些只是偶尔出現。這一步不需要复杂工具,用脚本或表格分组即可完成。
二、按頁面類型選擇處理方式
1. 站内搜尋结果頁
這類頁面通常不值得被索引,建议在頁面头部加 noindex, follow,让它仍然能传递連結價值。如果直接寫進 robots.txt 屏蔽,蜘蛛就看不到 noindex 标簽,對應 URL 仍可能出現,只是没有摘要,展示效果反而更差。
2. 篩選與排序參數
不要一刀切。可以按「是否有真實搜尋需求」做白名單:例如「品牌 + 分類」這種组合有用戶主動搜尋,可以保留並寫好标题與描述;其余没有搜尋量的组合统一 noindex,或者用 canonical 指向不带參數的列表主頁。排序參數一般直接 canonical 到預設排序即可。
3. 追踪參數
最干净的做法是在服務端或 CDN 层把 utm 類參數剥离並 301 到不含參數的 URL;退一步,也可以在頁面上把 canonical 固定寫成干净地址。
另外要注意參數顺序:?a=1&b=2 與 ?b=2&a=1 在很多系統里會被当成两個不同 URL,最好在服務器层做一次统一归一化。
三、上线前的自查清單
- 列出站点所有會产生新 URL 的參數名,並标注各自用途。
- 站内搜尋頁是否已設定 noindex,是否與 robots.txt 規則冲突。
- 篩選頁是否有白名單策略,還是全部放行。
- canonical 指向的目标頁面本身是否可索引,避免指向一個 noindex 頁面。
- 同一组參數不同顺序,是否會被归一化到同一個地址。
- 站内搜尋頁的 follow 是否會让蜘蛛顺着结果爬到大量随机内容,必要时改為 nofollow。
- sitemap 中是否混入了參數 URL,需要清理。
四、几個容易踩的坑
- robots.txt 屏蔽與 noindex 同时使用,導致 noindex 永遠不生效。
- 列表頁 canonical 一律指向首頁,把分類主题也一起合並掉。
- 篩選頁上其實放了優质正文,却因為整站規則被一起屏蔽。
- 只在模板里改了規則,忘了歷史生成的參數 URL 仍在被抓取。
參數治理的目标不是把所有带參數的 URL 都杀掉,而是让值得被發現的頁面留下明确入口,让無意义的排列组合失去被反复抓取的机會。
這項工作不需要一次做完。可以先從流量最大、參數最杂的栏目開始,處理完一個再观察日誌變化,逐步把規則补齐。規則确定之後,最好记錄在站点运维文档里,避免下次改模板时又被無意覆盖。