很多站点在篩選、排序、分頁、分享連結里都會附带參數。對用戶来说,這些參數只是目前视图的狀態;對搜尋蜘蛛来说,它們却可能變成一條條新的 URL。蜘蛛並不總是能判断“?color=red”和“?color=blue”背後是同一套内容,于是同一頁面被拆成多個地址,抓取路径也跟着變散。
參數 URL 通常從哪里進入抓取队列
蜘蛛發現參數 URL 的入口,往往不只在 Sitemap 里。常见的来源有:
- 頁面上篩選、排序、分頁的連結,直接带着參數輸出。
- 分享按钮或营销連結里的跟踪參數,比如 utm 系列。
- 站内搜尋、會话 ID、来源标记等動態參數。
- 外部站点複製過去的带參連結。
- JavaScript 渲染後才出現的篩選連結。
如果這些入口在站内反复出現,蜘蛛就會沿着它們不断扩展。它可能觉得每個參數组合都是一個獨立頁面,還會把其中一部分当作需要抓取和更新的 URL。
抓取注意力被分散之後會發生什么
最直接的影响是抓取资源被摊薄。假设一個列表頁有颜色、尺碼、排序、頁碼四類參數,每類又有多個取值,组合出来的 URL 會迅速膨胀。蜘蛛每次来訪能抓的頁面數量有限,如果大量請求都花在參數组合上,真正需要更新的内容頁反而可能被推後。
其次,日誌里會出現大量狀態正常、内容相近的 URL。它們互相之間没有明确的主次,蜘蛛在計算權重和判断重复内容时容易摇摆。更麻烦的是,某些參數组合可能返回空结果或错誤頁,這些地址一旦被大量發現,也會進入抓取队列,消耗站点响應能力。
參數本身没有错。問题在于同一種内容有没有稳定的規范地址,以及站内是否把規范地址当作唯一入口。
先区分哪些參數值得保留
整理的时候,不建议一刀切。可以先把參數分成三類:
- 影响内容的參數:比如分頁的 page、商品篩選里會改變结果集的關键參數。這些頁面用戶能看到不同内容,通常需要让蜘蛛抓取。
- 只影响展示的參數:比如排序方式、每頁條數、主题样式。内容主体接近,最好只保留一個預設地址。
- 跟踪與临时參數:比如 utm、session、来源标记。它們不改變頁面内容,通常不需要被蜘蛛抓取和收錄。
分類之後,規范 URL 的選擇會更清楚。分頁參數一般保留,排序和跟踪參數尽量從可抓取路径里拿掉。
用 canonical 和内鏈统一主路径
對于内容相同但參數不同的地址,可以在頁面里輸出指向規范 URL 的 canonical。canonical 需要稳定、可訪問,並且和站内主要連結指向的地址一致。如果 canonical 指向 A,内鏈却大量指向 B,蜘蛛會收到相互矛盾的信号,抓取路径仍然會分叉。
内鏈是蜘蛛最常走的路径。列表頁、詳情頁、相關推荐里的連結,最好都使用不带多余參數的地址。篩選連結如果必须存在,可以做成用戶点击时才展開,或者用按钮配合脚本提交,而不是在 HTML 里直接铺出成百上千條參數連結。
Sitemap 也一样。它适合放規范 URL 和重要分頁,不适合把各種參數组合都塞進去。Sitemap 越干净,蜘蛛從這里繼承到的抓取優先級就越集中。
robots 與抓取控制要谨慎
有些站点會用 robots.txt 屏蔽參數目錄或參數關鍵詞。這個做法可以减轻抓取负担,但要避免誤伤。比如分頁參數、篩選後能看到獨立内容的關键參數,一旦被屏蔽,蜘蛛就無法繼續沿着列表發現更深的 URL。屏蔽之前,最好先看服務器日誌:哪些參數 URL 被频繁抓取、返回什么狀態、是否有内鏈指向它們。
如果只是不想让跟踪參數進入索引,可以用 canonical 加上頁面級 noindex 来處理,而不是直接切断整段路径。具体用哪種方式,取决于该參數是否影响用戶看到的内容,以及站点是否依赖這條路径做 URL 發現。
服務器日誌是检驗整理效果的起点
參數整理不是一次性工作。改完内鏈、canonical 和 Sitemap 之後,可以观察一段時間服務器日誌,看带參 URL 的抓取比例有没有下降,規范 URL 的响應是否稳定。如果參數 URL 仍然大量出現,要回头检查是不是還有舊模板、外部連結或 JS 生成連結在持續輸出。
同时留意服務器稳定性。參數 URL 變多时,單位時間内的請求數可能上升,動態查询也會更重。抓取高峰期如果响應變慢,蜘蛛的調度节奏會受影响,規范 URL 的抓取也可能被拖後。把無意义參數從抓取路径里清理掉,本身也是在给服務器减负。
總结一下:參數 URL 不一定要全部封死,但需要有一條清晰的主路径。先分類,再统一内鏈、canonical 和 Sitemap,最後用日誌驗證。蜘蛛的抓取注意力有限,把入口收拢到真正重要的地址上,URL 發現和抓取路径都會更可控。