搜尋抓取

篩選參數與排序參數:列表頁组合出的 URL,怎么让蜘蛛少走弯路

列表頁上的篩選、排序、分頁參數叠加後,會产生大量内容重复的地址,持續消耗抓取资源。本文說明參數 URL 的常见来源、如何判断哪些值得保留,以及 canonical、robots.txt、内鏈和 Sitemap 各自能做什么,最後给出用訪問日誌驗證調整效果的方法。

搜尋抓取

篩選參數與排序參數:列表頁组合出的 URL,怎么让蜘蛛少走弯路

列表頁上的篩選、排序、分頁按钮,對用戶来说是几秒钟的操作,對搜尋引擎来说却可能是成百上千個新地址。參數一多,蜘蛛在同一個内容集合里打轉,真正需要被抓的詳情頁反而排在了後面。

參數 URL 是怎么被制造出来的

常见的有几類:

  • 篩選參數:價格区間、品牌、颜色、地区等,每多一個维度,组合數量就會相乘。
  • 排序參數:按销量、按價格、按時間,同一批商品的顺序不同,URL 就不同。
  • 分頁參數:頁碼本身通常可以保留,但和篩選叠加後會产生大量長尾组合。
  • 跟踪與會话參數:来源标记、推荐位 ID、临时會话串,對頁面内容没有任何影响。

這些地址返回的頁面往往只有部分内容不同,标题、正文和大部分列表項高度重合。

先判断:哪些參數頁值得保留

不是所有參數頁都该被處理掉。判断标准可以简單一些:這個地址是否有真實的搜尋需求,是否有獨立于其他頁面的内容。带明确主题的篩選頁(比如“某品牌在某城市”)可能本身就有用戶主動搜尋,保留並给它稳定的标题是合理的;纯排序、纯跟踪參數則基本没有獨立價值。

處理參數 URL 的目标不是把地址數量压到最少,而是让蜘蛛把時間花在内容不同的頁面上。

可以直接用的几種做法

canonical 指向規范版本

给參數頁指定一個規范地址,让蜘蛛知道哪個版本是“主”的。注意 canonical 要自洽:規范頁自己也要指向自己,也不要在多個版本之間互相指向,形成环。

robots.txt 與 noindex 的分工

如果某個參數组合不需要被抓,可以在 robots.txt 中屏蔽對應路径模式。但要记住两者的区別:被 robots.txt 屏蔽的 URL,蜘蛛無法讀取頁面上的 noindex 指令。想用 noindex 让頁面登出索引,就不能同时用 robots.txt 挡住它,否則指令永遠送不到。

内鏈只指向規范版本

頁面上生成的連結,尽量只輸出規范形態。如果模板在每個卡片上都挂一串带參數的外鏈,等于主動把蜘蛛往重复地址上引。

Sitemap 里只放規范 URL

Sitemap 是清單,不是原料堆。把參數组合全部塞進去,等于给蜘蛛列了一份包含大量重复内容的抓取任務。清單里出現的地址,最好是真正希望被了解的那些。

用日誌確認效果

調整之後,從訪問日誌里筛出蜘蛛請求,看參數 URL 的抓取次數有没有下降、規范地址的抓取有没有上升。如果參數 URL 仍然占據大部分抓取請求,說明還有連結入口在持續暴露它們,需要回到模板层面查找。

別把路堵死

分頁和必要的篩選入口,是用戶和蜘蛛走到深层内容的通道。一刀切地屏蔽所有带問号的地址,可能让本来能被發現的頁面失去入口。留出主路径,收掉重复分支,通常比全面封禁更稳妥。