做站時間長了,回头看抓取日誌會發現一個現象:出現次數最多的 URL 往往不是内容頁,而是篩選、排序、日歷、视图切換這些參數拼出来的地址。它們本身不算错誤,但數量會成倍甚至指數級膨胀,把抓取能力摊薄到大量重复頁面上。
组合 URL 是怎么膨胀起来的
一個列表頁如果有 5 個篩選维度、每個维度 10 個可選值,理论上就能拼出十萬級的地址。哪怕只有一部分被連結暴露出来,也足以让蜘蛛花上很久才能走完一轮,而真正更新的内容頁反而排到了後面。
- 篩選條件叠加:品牌 + 價格区間 + 颜色 + 尺碼
- 排序與视图:按價格、按销量、按上新,列表 / 網格切換
- 分頁與參數混用:同一個列表頁出現多套分頁寫法
- 跟踪參數被站内連結带進站内,如 utm、ref、from
先把參數按作用分個類
分類是後面所有處理的前提,分错了容易出現该放行的被挡住、该收敛的被保留。
- 内容參數:真正改變頁面主体内容,例如分類 ID、标簽 slug、文章 ID。
- 排序與视图參數:只改變呈現顺序或版式,主体内容基本一致。
- 跟踪參數:用于統計来源,對頁面内容没有影响。
- 會话與临时參數:sessionid、随机數、時間戳之類。
控制手段要配合使用
robots.txt 與 noindex 的分工
Disallow 能减少抓取,但被屏蔽的 URL 仍可能作為無内容的地址留在索引里;noindex 需要頁面被抓到之後才生效。两者不是替代關系。常见做法是:纯排序、纯跟踪類參數用規則挡住抓取;有獨立價值但不想收錄的頁面,允许抓取、返回 noindex。
canonical 與内鏈收敛
canonical 只作為合並信号,不能代替内鏈管理。如果站内到處鏈向各種參數版本,蜘蛛仍會優先去爬它們。内鏈层面尽量只指向規范版本:篩選後的連結用按钮或交互组件承载,或至少不放在主導航、面包屑、頁脚這類高频位置。
Sitemap 只放規范 URL
Sitemap 是主動提交入口,往里塞參數地址等于主動邀請抓取。分頁、篩選、排序頁不要進 Sitemap,規范内容頁保持單一地址,lastmod 與真實更新時間對應。
用抓取日誌核對效果
- 按參數名統計抓取次數占比,看看哪些參數最耗资源。
- 抽查被频繁抓取的组合地址,確認返回狀態碼與頁面主体内容。
- 核對實际被抓取的 URL 與頁面声明的 canonical 是否一致。
- 調整後隔一段時間再看趋势,確認參數類 URL 的抓取量是否下降、内容頁抓取是否上升。
几個容易踩的坑
- 用一條規則把带問号的地址全部挡掉,會连带誤伤真正的内容參數。
- 分頁地址一律 noindex,會切断蜘蛛沿列表向深层頁面前進的路径。
- 只改 robots 不清理内鏈,蜘蛛仍會不断發現並尝试這些地址。
- 站内跳轉連結里带跟踪參數,等于自己给自己制造重复 URL。
收紧參數 URL 的目标是让抓取更集中,而不是削减站点規模。調整前後都要用日誌驗證,避免把有用的入口一起挡在门外。
落到执行上,可以先把參數列一張清單,标记每個參數的性质,再决定是挡抓取、只 noindex,還是允许抓取並做規范化。之後每隔一段時間回看日誌,按實际抓取分布微調規則,比一次性大改更容易控制風險。