搜尋抓取

URL 參數與抓取路径:篩選、排序和追踪參數该怎么收敛

带參數的 URL 會让同一份内容衍生出大量地址,抓取配額被慢慢摊薄。這篇文章說明參數如何撑大 URL 空間,怎么区分该保留和该收敛的參數,以及内鏈统一、canonical、robots.txt 與 Sitemap 各自的處理邊界,最後给出驗證收敛效果的方法。

搜尋抓取

URL 參數與抓取路径:篩選、排序和追踪參數该怎么收敛

同一個列表頁,加上排序參數、篩選參數、追踪參數之後,可能對應几十甚至上百個可訪問的 URL。這些地址都能返回内容,也都可能被内鏈或外部連結指向,蜘蛛一旦開始跟,抓取配額就會被慢慢摊薄。參數本身不是错誤,問题在于没有邊界。

參數是怎么把 URL 空間撑大的

參數對抓取的影响来自组合爆炸。一個頁面有三個篩選维度,每個维度五個取值,理论组合就上百。如果篩選结果頁之間還能互相連結,蜘蛛會顺着這些連結繼續扩散,而這些頁面大多内容高度相似,對用戶價值有限。

追踪參數更隐蔽。分享連結带上 utm_source、fbclid、ref 之類,用戶複製传播,外部平台也可能带来這種带參數的地址。它們指向同一份内容,却各自獨立成一條抓取路径。

先分清哪些參數该留,哪些该收

判断标准可以简單一点:這個參數會不會改變頁面的主要内容。

  • 改變内容的參數:分類篩選、分頁、語言、商品規格。這些通常值得保留,但要有明确的可抓邊界。
  • 不改變内容的參數:會话 ID、排序方式(預設排序除外)、追踪參數、纯展示開關。這類應尽量统一到規范 URL。
判断一個參數值不值得被索引,可以問一句:用戶會想把這個 URL 收藏或分享出去吗?

收敛 URL 的几種做法

内鏈只指向規范版本

站内連結是最可控的入口。分類導航、面包屑、相關推荐里的連結,都應指向不带追踪參數、參數顺序固定的版本。蜘蛛主要跟着内鏈走,内鏈干净,抓取路径就干净。

canonical 要指向真正的規范 URL

带參數的頁面可以保留訪問能力,但 canonical 應统一指向不带參數的主版本。注意 canonical 是提示而不是指令,如果站内大量連結仍指向參數 URL,效果會打折,所以内鏈统一要優先做。

robots.txt 屏蔽要谨慎

直接屏蔽參數确實能阻止抓取,但如果這些 URL 有外鏈,被屏蔽之後蜘蛛拿不到頁面,也就看不到頁面上的 canonical,容易造成判断混乱。屏蔽更适合那些确定不需要被索引、也没有外鏈價值的技術參數,比如會话 ID。

Sitemap 只放規范 URL

Sitemap 里出現的每一條都會被当作候選抓取目标。把带參數的變体寫進去,等于主動增加抓取负担。只提交确定要索引的規范地址即可。

篩選頁要不要让蜘蛛抓

這取决于篩選頁有没有獨立價值。像“某城市某價位的房源”這種组合,用戶會直接搜尋,頁面内容也足够獨立,可以考虑保留並给它規范 URL。而纯粹的组合篩選、结果很少、内容和父級几乎一致的頁面,更适合用 nofollow 控制内鏈被發現,或者不生成可抓連結,由前端狀態實現。

怎么驗證收敛有没有生效

  • 看服務器日誌里带參數的請求占比,做收敛前後的對比。
  • 在搜尋控制台查看已索引的地址中有多少是參數版本。
  • 抽查几個主要列表頁,確認站内連結是否统一指向規范 URL。

這些指标不會立刻變化,通常需要几周時間让抓取队列自然更新。

小结

參數管理的核心不是把所有參數都砍掉,而是让 URL 空間有邊界:站内連結指向同一版本,canonical 明确,Sitemap 只放该索引的地址,剩下的技術參數尽量不進入抓取路径。做到這几点,抓取配額才會更多地花在真正需要被索引的頁面上。