很多站点把注意力放在标题、内鏈和 sitemap 上,却忽略了 URL 參數。篩選、排序、分頁、广告跟踪碼、會话 ID 這些參數會组合出數量庞大的地址。對訪客来说,它們可能只是換個排序方式;對蜘蛛来说,却是一批内容相似、入口分散的頁面。抓取预算被消耗在重复地址上,真正需要被發現的栏目和文章反而排到了後面。
為什么 URL 參數容易失控
參數通常由程序自動生成,上线时看起来正常,但每一次篩選、排序、分享、广告投放都可能追加新的參數。常见的有:
- 篩選參數:如颜色、價格区間、标簽组合,容易产生成百上千個排列。
- 排序參數:按價格、销量、時間排序,内容主体相同,只是顺序變化。
- 跟踪參數:utm_source、utm_medium、ref、from 等,用于統計流量来源。
- 會话參數:sessionid、sid 等,同一頁面给不同訪客生成不同地址。
- 辅助參數:打印頁、分享頁、预览參數,往往不是正式内容。
問题不在于參數本身,而在于没有给它們设定邊界。如果所有带參數的地址都能返回 200 狀態碼,蜘蛛就會把它們当作獨立頁面處理。
先做一次參數盘点
不要凭感觉判断哪些參數有問题。可以從服務器訪問日誌、搜尋引擎後台的抓取統計、站点地图和内部連結中收集带參數的 URL,然後按下面的步骤整理:
- 導出最近一段時間的訪問日誌,篩選出包含問号的請求地址。
- 把參數名和參數值分類,統計每個參數出現的频率和产生的 URL 數量。
- 标记哪些參數會影响頁面正文内容,哪些只是改變展示方式或統計来源。
- 找出被蜘蛛频繁抓取、但内容高度相似的參數组合。
- 记錄這些地址是否出現在 sitemap、導航或文章内鏈中。
盘点完成後,你會得到一張參數清單。接下来不是一刀切屏蔽,而是按用途分別處理。
分類處理不同參數
篩選與排序參數
如果篩選结果有獨立價值,比如某個分類下的價格区間列表,可以考虑保留並規范 canonical,让蜘蛛知道哪個是主要版本。如果只是同一批内容換顺序,建议让排序參數不生成獨立可抓取地址,或者在頁面上用 canonical 指向不带排序參數的主地址。
跟踪與會话參數
utm 參數、广告来源參數、會话 ID 通常不影响正文。它們适合在服務器或 CDN 层面做重定向或忽略處理,也可以统一 canonical 到干净地址。不要让這些參數進入 sitemap,也不要把带跟踪碼的連結大量放在站内。
分頁與打印頁
分頁是正常浏览需求,但不要把每一頁都塞進 sitemap,也不要把分頁地址做成唯一入口。打印頁、分享頁如果内容與正文一致,可以用 canonical 指回正文,或者直接禁止抓取。具体采用哪種方式,要看頁面是否给訪客提供了獨立價值。
用 canonical 和 robots 配合
canonical 适合告诉搜尋引擎哪個地址是主要版本,robots.txt 适合阻止蜘蛛訪問某些參數模式。两者可以配合,但不要互相矛盾。例如,一個頁面 canonical 指向 A,同时 robots.txt 又禁止抓取 A,就會让蜘蛛难以判断。建议先梳理出主要版本,再决定哪些參數地址需要屏蔽。對于已经被收錄的重复地址,可以通過站点地图和内部連結逐步把權重集中到主地址。
參數治理的目标不是消灭所有带問号的 URL,而是让蜘蛛把抓取精力放在真正重要的頁面上。
检查 sitemap 和内部連結
sitemap 里如果混入大量带參數的地址,等于主動把蜘蛛引向重复頁面。定期检查 sitemap,只保留規范後的正文、栏目和重要聚合頁。内部連結同样要留意:導航、相關推荐、标簽頁、分頁連結中是否夹带了跟踪參數。把站内連結统一成干净地址,能减少蜘蛛發現重复入口的机會。
养成定期复查习惯
參數治理不是一次性的。新功能上线、广告投放、模板改版都可能引入新的參數。建议每個季度做一次简單复查:看日誌里是否出現新的參數模式,看搜尋引擎後台的抓取分布是否集中在少數重复地址上,看 sitemap 是否被污染。發現異常後,先小范围調整,再观察抓取和收錄變化,避免一次性改動過多規則。
URL 參數自查不需要复杂工具,關键是建立清單、分類處理、保持連結干净。把重复入口收敛之後,重要頁面會更容易被蜘蛛發現,站点运营也會少一些反复解释的麻烦。