站内的篩選、排序、分頁和跟踪連結都會生成带參數的 URL。這類地址蜘蛛能不能抓到、该不该让它抓,是很多站点在抓取环节上反复纠结的問题。處理得好,蜘蛛會把時間花在真正有用的頁面上;處理得不好,抓取资源會被大量互相重复的地址稀释掉。
參數 URL 通常從哪几個地方冒出来
先看来源,再决定怎么處理。常见的几類:
- 列表篩選:價格区間、品牌、颜色、規格等條件组合,每勾一次就生成一個新地址。
- 排序:按销量、按價格、按上架時間排序,同一批商品出現多個地址。
- 分頁:page=2、page=3 這類地址,属于正常内容,通常需要被抓。
- 跟踪參數:utm_source、from、ref 之類的投放和分享标记,對頁面内容没有任何影响。
- 會话與临时參數:會话 ID、時間戳、随机串,同一頁面每次訪問地址都不一样。
其中只有一部分值得占用抓取资源,另外一部分應当尽早收口,否則會持續制造重复内容,也會让蜘蛛在内鏈里绕圈子。
先分清:哪些參數 URL 值得让蜘蛛抓
判断标准可以简單一点:這個地址對應的頁面,是否有獨立的内容價值,以及是否可能有用戶直接在搜尋里找它。
- 值得抓:分頁參數、有稳定搜尋需求的篩選组合,比如某個品牌或某個品類下的篩選结果頁。
- 不值得抓:排序參數、跟踪參數、會话參數,以及多個條件叠加出来的長尾篩選地址。
难点常在于中間地带:篩選组合既可能有搜尋需求,又會無限膨胀。這时可以采用有限入口加其余收口的方式,只把少數几個重点组合放出来,其余组合的頁面不進入抓取范围,站内用戶依然能正常使用篩選功能。
三種常见收口手段,各有适用场景
canonical 指向規范版本
如果多個地址指向同一份内容,可以在頁面上用 canonical 指向規范地址。要注意 canonical 是建议而不是强制,蜘蛛可能忽略明顯不合理的寫法,所以規范地址本身要在站内被稳定地連結到,不能只靠一條 canonical 声明。
robots.txt 屏蔽與 noindex 是两回事
用 robots.txt 屏蔽一批參數目錄,可以让蜘蛛不再去請求它們,成本最低。但要清楚一点:被 robots.txt 挡住的頁面,蜘蛛通常不會去讀頁面上的 noindex。所以先屏蔽再加 noindex 這個顺序,往往達不到预期效果,两者需要分開考虑,按頁面情况選一個用。
頁面上別铺太多參數連結
很多參數 URL 之所以被發現,是因為頁面里到處都是篩選和排序的連結。如果這些地址不打算抓取,就不要让它們以可跟随連結的形式大量出現在頁面上,或者至少让它們不出現在蜘蛛能稳定走到的主路径上。
内鏈與 Sitemap 要跟收口策略保持一致
收口之後,内鏈和 Sitemap 就成了蜘蛛發現 URL 的主要入口。有两点值得注意:
- Sitemap 只放規范地址:不打算抓取或已决定合並的參數地址,不要寫進 Sitemap。放進去了,等于又给蜘蛛递了一份待抓清單。
- 内鏈指向規范版本:站内跳轉如果大量使用带參數地址,收口的效果會被抵消一部分。列表、推荐位、面包屑尽量指向干净的規范地址。
服務器侧也要配合
參數 URL 容易绕過缓存,每個组合都走一次資料库查询,服務器压力會明顯上升。如果這些地址不打算被抓,减少它們被請求的机會本身就是一種减压;如果决定保留部分可抓的篩選頁,則要考虑缓存和响應時間的稳定,避免蜘蛛在抓這些頁面时频繁遇到超时。
怎么驗證收口有没有生效
- 看服務器日誌里參數 URL 的請求占比,收口之後占比通常應逐步下降。
- 看站点後台或站長平台里的已發現、已抓取資料,確認參數地址没有持續堆积。
- 抽查重点篩選頁,確認它們的 canonical、内鏈指向與预期一致。
參數 URL 的處理没有一套通吃的方案,更多是取舍:保留哪一部分、放弃哪一部分,然後让机器人协议、頁面标记、内鏈和 Sitemap 说同一件事。方向一致,蜘蛛的抓取路径才會慢慢收敛到真正重要的頁面上,而不是散落在無數種參數组合里。