列表頁上的篩選、排序、分頁按钮,對用戶来说是几秒钟的操作,對搜尋引擎来说却可能是成百上千個新地址。參數一多,蜘蛛在同一個内容集合里打轉,真正需要被抓的詳情頁反而排在了後面。
參數 URL 是怎么被制造出来的
常见的有几類:
- 篩選參數:價格区間、品牌、颜色、地区等,每多一個维度,组合數量就會相乘。
- 排序參數:按销量、按價格、按時間,同一批商品的顺序不同,URL 就不同。
- 分頁參數:頁碼本身通常可以保留,但和篩選叠加後會产生大量長尾组合。
- 跟踪與會话參數:来源标记、推荐位 ID、临时會话串,對頁面内容没有任何影响。
這些地址返回的頁面往往只有部分内容不同,标题、正文和大部分列表項高度重合。
先判断:哪些參數頁值得保留
不是所有參數頁都该被處理掉。判断标准可以简單一些:這個地址是否有真實的搜尋需求,是否有獨立于其他頁面的内容。带明确主题的篩選頁(比如“某品牌在某城市”)可能本身就有用戶主動搜尋,保留並给它稳定的标题是合理的;纯排序、纯跟踪參數則基本没有獨立價值。
處理參數 URL 的目标不是把地址數量压到最少,而是让蜘蛛把時間花在内容不同的頁面上。
可以直接用的几種做法
canonical 指向規范版本
给參數頁指定一個規范地址,让蜘蛛知道哪個版本是“主”的。注意 canonical 要自洽:規范頁自己也要指向自己,也不要在多個版本之間互相指向,形成环。
robots.txt 與 noindex 的分工
如果某個參數组合不需要被抓,可以在 robots.txt 中屏蔽對應路径模式。但要记住两者的区別:被 robots.txt 屏蔽的 URL,蜘蛛無法讀取頁面上的 noindex 指令。想用 noindex 让頁面登出索引,就不能同时用 robots.txt 挡住它,否則指令永遠送不到。
内鏈只指向規范版本
頁面上生成的連結,尽量只輸出規范形態。如果模板在每個卡片上都挂一串带參數的外鏈,等于主動把蜘蛛往重复地址上引。
Sitemap 里只放規范 URL
Sitemap 是清單,不是原料堆。把參數组合全部塞進去,等于给蜘蛛列了一份包含大量重复内容的抓取任務。清單里出現的地址,最好是真正希望被了解的那些。
用日誌確認效果
調整之後,從訪問日誌里筛出蜘蛛請求,看參數 URL 的抓取次數有没有下降、規范地址的抓取有没有上升。如果參數 URL 仍然占據大部分抓取請求,說明還有連結入口在持續暴露它們,需要回到模板层面查找。
別把路堵死
分頁和必要的篩選入口,是用戶和蜘蛛走到深层内容的通道。一刀切地屏蔽所有带問号的地址,可能让本来能被發現的頁面失去入口。留出主路径,收掉重复分支,通常比全面封禁更稳妥。