很多站点在运营一段時間後,會發現索引里多出一批带問号的 URL:篩選、排序、追踪、會话參數层层叠加。搜尋蜘蛛一旦在站内連結、sitemap 或外鏈中發現了這些地址,就可能持續抓取。它們不一定都有獨立内容,却會消耗抓取预算,並制造重复内容。處理參數 URL 的關键,不是全部屏蔽或全部放行,而是先分清參數類型,再决定收錄取舍。
先分清參數的類型
同样是問号後面的内容,作用差別很大。可先按下面几類去看:
- 篩選參數:如颜色、尺寸、品牌、價格区間。若篩選结果有稳定搜尋需求,且頁面能正常訪問,可能值得收錄。
- 排序參數:如按價格、销量、上架時間排序。通常只是同一批商品的顺序變化,内容重复度高。
- 分頁參數:如 page=2、page=3。是否收錄已有單獨讨论,這里只關注它不要和篩選參數混在一起。
- 追踪參數:如 utm_source、from、ref。用于統計来源,不改變頁面内容。
- 會话參數:如 sessionid、sid。每個用戶不同,最容易制造大量重复 URL。
哪些可以放行,哪些應收口
判断标准可以回到“這個 URL 是否對應一個獨立、稳定、對用戶有意义的頁面”。有獨立内容價值的篩選頁,可以保留收錄:它有固定路径、獨立标题、可正常渲染,並且站内導航能稳定指向它。相反,排序參數、追踪參數、會话參數通常不产生新内容,适合收口到基础 URL。
收口不代表粗暴刪除。更稳妥的做法是:站内連結尽量只暴露規范地址;對已经存在的參數 URL,用 canonical 指向基础頁;如果參數會動態生成無限组合,再考虑在 robots.txt 中屏蔽抓取。注意,robots.txt 是抓取屏蔽,不是索引屏蔽;被屏蔽的 URL 仍可能因外鏈被索引,且 noindex 标簽不會被看到。
處理顺序:先内鏈,再 canonical,最後才考虑屏蔽
很多參數 URL 之所以被大量發現,是因為站内連結本身就在传播它們。比如篩選按钮直接輸出新 URL,分頁連結带上排序參數,分享按钮附加追踪參數。搜尋蜘蛛顺着這些連結走,自然會把參數頁抓一遍。所以處理顺序建议如下:
- 检查站内連結:導航、面包屑、列表頁、分頁連結是否携带不必要的參數。
- 统一規范地址:让基础頁成為 canonical,參數頁尽量不參與内鏈循环。
- 合並重复入口:多個參數组合指向同一内容时,考虑 301 到基础頁或規范篩選頁。
- 再决定是否屏蔽抓取:如果參數组合無限且無内容價值,用 robots.txt 减少抓取,但不要和 noindex 混用。
- 观察日誌與索引狀態:看搜尋蜘蛛是否還在抓參數 URL,索引里是否還有重复頁面。
一個常见誤区:先给參數頁加 noindex,又在 robots.txt 里屏蔽。抓取被阻止後,noindex 無法被讀取,頁面可能長期留在索引里。
追踪參數與會话 ID 要單獨處理
追踪參數和會话 ID 通常由統計工具、广告連結或登入逻辑生成。它們不應该出現在站内連結中。若站外投放带来了带追踪參數的地址,可以在服務器端或前端做一次跳轉,把用戶和搜尋蜘蛛带到不带參數的規范 URL。這样既保留統計,又减少重复 URL 被發現。
會话 ID 更要注意。如果每個訪問者都會生成不同 URL,搜尋蜘蛛每次抓取都可能發現新地址,抓取预算會被大量消耗。優先检查服務器配置和 CMS 設定,尽量不用 URL 传递會话信息。
一份可执行的自查清單
- 從服務器日誌中抽样一周,看看带問号的 URL 被抓取的比例和频率。
- 在搜尋控制台的索引狀態里,检查參數 URL 是否被标记為重复或已發現未抓取。
- 用 site: 查询或索引工具抽查,看參數頁是否和基础頁抢同一批词。
- 检查 canonical 是否指向自己、指向基础頁,還是互相冲突。
- 確認 sitemap 中没有混入無意义的參數 URL。
- 調整後,给搜尋蜘蛛留出重新抓取和索引刷新的時間,不要频繁改動規則。
參數 URL 的處理没有一套固定答案。核心是先看内容價值,再看抓取预算。能放行的,保證它稳定、唯一、可訪問;该收口的,用内鏈、canonical 和跳轉逐步减少發現和抓取。規則简單一致,比一次性堆很多屏蔽指令更容易被搜尋蜘蛛正确理解。