很多站点的 URL 看起来差不多,点開才發現後面挂着一串參數:?utm_source=...、?from=...、?ref=...。對訪客来说,地址栏長一点可能無所谓;對搜尋蜘蛛和站点运营来说,同一篇内容如果存在多個參數版本,就會带来重复地址、抓取浪費和統計噪声。URL 參數本身不是問题,問题在于没有邊界地使用。
參數通常從哪里来
在動手清理之前,先弄清楚參數是谁加上的。常见来源包括:
- 篩選和排序:列表頁按價格、時間、热度排序,或按分類、标簽篩選。
- 分頁:部分程序用 ?page=2 而不是静態路径。
- 广告和渠道跟踪:utm_source、utm_medium、gclid 等。
- 站内搜尋:?s=關鍵詞 或 ?q=關鍵詞。
- 會话與用戶标识:sessionid、uid 等。
- 分享和外鏈:来自社交平台、邮件或合作方的跳轉參數。
這些參數有些是功能必需,有些只是运营标记,還有一些是第三方自動追加。判断标准很简單:去掉參數後,頁面主体内容是否基本不變。如果不變,它大概率只是一個“地址變体”。
參數泛滥會带来什么
最直接的影响是蜘蛛可能把同一個頁面抓很多次。抓取预算有限,尤其是中小站点,如果大量參數地址被反复發現,真正需要更新的内容反而排不上队。其次,用戶分享出去的連結可能五花八门,統計工具也會把一次訪問拆成多個来源,導致渠道資料失真。再次,缓存和 CDN 可能把带參數的請求当成新资源,降低缓存命中率。
URL 參數自查清單
- 導出样本 URL:從訪問日誌、搜尋控制台、站点地图和站内連結中,收集最近一段時間的 URL,按參數名分组。
- 标记内容型參數:哪些參數會改變頁面主要内容,比如篩選出不同商品列表、不同文章分頁。這類需要保留,但要控制组合數量。
- 标记跟踪型參數:utm、ref、from、spm 等,通常只影响統計,不影响内容。
- 检查 canonical:確認主要内容頁是否指向不带跟踪參數的規范地址。canonical 不能跨内容使用,也不要把分頁全部指向第一頁。
- 检查 robots 與 noindex:對站内搜尋结果頁、复杂篩選组合、會话參數頁,可以考虑屏蔽抓取或禁止收錄,但不要誤伤正常内容。
- 检查内鏈:站内連結尽量使用干净地址,避免複製带跟踪參數的 URL 作為導航或正文連結。
- 检查站点地图:站点地图中不要放入带跟踪參數、會话參數或大量篩選组合的地址。
處理策略:保留、收敛、屏蔽
该保留的
分頁參數、真正改變内容结果的篩選參數,可以保留。但要尽量让參數數量少、命名稳定,並给每個篩選组合一個可被理解的含义。不要為了“多生成頁面”而随意组合參數。
该收敛的
- 广告跟踪參數只在落地頁生效,站内跳轉时去掉。
- 分享連結使用统一短鏈或規范地址,而不是直接複製带參數的浏览器地址。
- 會话 ID 尽量用 Cookie 承载,不要長期出現在 URL 中。
- 相同内容的不同參數版本,用 canonical 指向主地址。
可以屏蔽的
站内搜尋结果頁、排序參數、價格区間等组合數量很大的地址,可以通過 robots.txt 限制抓取,或在頁面层面加 noindex。但要注意,robots.txt 只是阻止抓取,不是阻止收錄;如果其他頁面連結過去,搜尋引擎仍可能收錄無描述的结果。所以通常要配合 noindex 和連結控制。
容易踩的坑
不要把 robots.txt 当成萬能钥匙:屏蔽抓取後,如果外部連結大量指向该地址,它仍可能出現在搜尋结果里,只是没有摘要。更好的做法是從源头减少這類地址的暴露。
另一個常见問题是 canonical 寫错。比如把所有分頁都指向第一頁,或者把不同篩選结果都指向同一個列表頁。這類操作可能让蜘蛛忽略真正有差异的内容。canonical 應该用于“相同或高度相似”的頁面,而不是用来掩盖内容差异。
小结
URL 參數自查不需要一次做完,可以先從跟踪參數和站内搜尋參數開始。每周抽一点時間,看看日誌和搜尋结果中出現了哪些奇怪的參數地址,判断它是功能所需還是运营噪声。把该保留的保留,该收敛的收敛,该屏蔽的屏蔽,站点结构會清爽很多,蜘蛛和統計工具也能少做一些無用功。