同一篇文章,從列表頁、搜尋结果、外部分享、广告落地頁几個入口点進来,地址栏里可能各带一長串參數。對訪客来说没什么区別,對搜尋引擎来说却可能是好几個不同的 URL。參數本身不是問题,問题是当參數無限组合、每個组合都能正常打開頁面时,抓取预算被切碎,頁面信号也被分散。
先盘清楚站点里到底有哪些參數
把最近一段時間日誌里出現過的带參數地址拉出来看一遍,通常能归成几類:
- 追踪類:utm_source、utm_medium、gclid、fbclid、spm 這類,来源是投放和分享,頁面内容完全一致。
- 篩選與排序類:價格区間、品牌、排序方式、每頁條數,會改變列表内容,但组合數量可能非常庞大。
- 會话類:sessionid、sid、token,一般由程序自動附加,同一訪客不同時間訪問都可能不一样。
- 分頁與定位類:page、p、from 等,用于翻頁或定位到某個位置。
一份可以照着做的自查清單
- 随手打開一個内頁,複製地址,看有没有自動多出參數。
- 给同一個地址补上 utm_source=test,看頁面是否返回 200 且正文與規范地址一致。
- 检查 canonical 标簽指向的是不带參數的規范地址,還是目前這個带參數的地址。
- 翻一遍站点地图,確認里面只出現規范地址,没有带參數的版本。
- 抽查内部連結,看是否混用了带參數與不带參數两種寫法。
- 检查篩選頁、排序頁目前是否允许抓取,是否需要收敛。
- 確認跳轉之後落到的地址是規范地址,而不是另一條带參數的地址。
不同類型的參數,處理方式不一样
追踪參數
追踪參數對頁面内容没有影响,最省事的做法是在服務器或 CDN 层做一次重定向,把带追踪參數的請求指向不带參數的地址;或者在頁面 head 里輸出 canonical 指向規范地址。两者選其一即可,注意不要同时给出互相矛盾的信号。
篩選與排序參數
先判断這些组合有没有真實搜尋需求。有稳定搜尋量的篩選组合,可以留少量给搜尋引擎抓取,比如按品牌或按品類。纯粹的排序、每頁條數這類變化,通常不值得單獨建索引,可以用 robots.txt 限制抓取,或者在頁面上加 noindex。動手屏蔽之前先看日誌,別把本来有流量的頁面一起挡掉。
會话參數
會话 ID 最好不出現在 URL 里,改用 Cookie 传递。如果确實已经存在,可以在 robots.txt 里做規則限制,也可以让程序在跳轉时直接去掉這類參數。
處理完,還要回日誌里看一眼
改完之後隔一段時間再看日誌:带參數的請求占比有没有下降,規范地址的抓取是否增加,服務器上重复 URL 的處理压力有没有變化。如果只是加了 canonical,而内鏈里仍然大量使用带參數的地址,效果會打折扣,因為蜘蛛大部分時間還是顺着内鏈走。
參數治理不是一次性動作。投放連結、分享组件、分頁插件升級时,都可能重新带出舊參數,定期抽查比一次性大掃除更管用。