带參數的 URL 在站内很常见:篩選、排序、分頁、跟踪来源、會话标识,随手一点就可能生成一個新地址。讨论收錄时,容易把“蜘蛛抓不抓”和“索引收不收”混在一起,结果規則互相打架。更稳的做法是先按參數用途分類,再分別决定抓取层和索引层怎么處理。
抓取允许不等于希望被收錄
robots.txt 的 Disallow 管的是抓取,不是索引。一個 URL 被 Disallow 後,蜘蛛通常拿不到頁面内容,也就看不到頁面里的 noindex。反過来,noindex 需要蜘蛛至少抓取一次才能讀到。所以如果某個參數 URL 确定不想進索引,優先让它可抓取,再用 noindex;如果它只是數量太大、抓取成本高,才考虑在抓取层拦掉。
常见參數類型與處理方向
- 篩選和排序參數:如果篩選结果能形成稳定、有搜尋需求的頁面,可以保留;如果只是同批商品的換序展示,通常用 canonical 指回主列表頁,或让内鏈只指向預設排序。
- 跟踪參數:如来源、活動、渠道标识。這類參數不改變頁面内容,适合在規范 URL 中统一去掉,内鏈和 sitemap 都不要带。
- 會话 ID 和临时令牌:會為同一頁面生成大量地址,通常直接在抓取层限制,同时保證正常用戶訪問不受影响。
- 站内搜尋和结果頁:多數时候不该被索引,可以用 noindex,但不必急着 Disallow,除非蜘蛛已经大量抓取。
- 分頁參數:要單獨判断,第 2 頁以後是否值得收錄,取决于内容是否獨立、是否有用戶直接訪問的需求。
用一套顺序做判断
- 這個參數 URL 是否有獨立且稳定的内容,而不是同一批内容的重新排列?
- 用戶會不會直接搜尋到它,或者從站外連結進入?
- 它會不會批量生成近似頁面,把抓取预算拉走?
- 站内有没有稳定的入口和連結指向它,還是只靠參數拼接?
- 半年後是否還有人维護,還是活動結束就變成死連結?
五個問题里,如果多數答案是否定的,就不必让它進入索引。判断完再選手段:抓取层拦截、頁面級 noindex、canonical 收敛,三種方式的目标不同,不要混着用。
索引层的几個配合点
canonical 是建议信号,不是强制指令。如果頁面内容确實不同,硬指 canonical 通常無效;如果内容相同,内鏈、sitemap 和 canonical 最好指向同一個規范 URL。sitemap 只放希望被收錄的規范地址,不要把带跟踪參數的版本也塞進去。内鏈也一样,預設排序、預設篩選的連結優先。
不要用 robots.txt 屏蔽一個 URL,又指望頁面里的 noindex 生效。蜘蛛拿不到頁面,就看不到 noindex。
定期抽查,別只看規則
規則定完之後,還要看實际结果。日誌里可以观察蜘蛛抓了哪些參數、返回什么狀態碼、同一類參數是否被反复抓取。索引抽查則看目标 URL 是否進入索引、展示的是哪個版本。把同一批 URL 隔一段時間再對一次,比一次性改完更可靠。
參數 URL 的處理很少一步到位。先分類,再按“抓取层管成本、索引层管质量”的思路小步調整,观察一段時間再收窄或放宽,通常比一次性全站規則更可控。