站点跑起来之後,很多人會發現抓取日誌里出現大量内容几乎一样、只有尾巴上參數不同的地址。它們不是错誤頁面,也不會报 404,但會让蜘蛛在同一個内容上反复走。參數本身没错,問题在于我們是否清楚哪些參數该被当成頁面的一部分,哪些只是工具留下的痕迹。
參數為什么會變成抓取陷阱
一個列表頁加上篩選、排序、每頁條數、来源追踪,组合起来就是几十上百個地址。這些地址對用戶可能都有意义,對搜尋引擎来说却是同一份内容的多個副本。如果站内連結和外部入口又把它們混着指,蜘蛛就會把有限的抓取額度花在這些近似地址上,真正的内容頁反而排到後面。
先把參數分三類
- 跟踪類:utm_source、gclid、from、spm 之類,只用于統計来源,不影响頁面内容。這類參數通常不應该产生獨立可抓取的地址。
- 篩選排序類:價格区間、品牌、排序方式、每頁條數。它們會改變列表内容,但大量组合容易稀释權重,需要判断哪些值得被收錄。
- 會话與临时類:sessionid、token、時間戳、随机數。這類參數最好根本不進連結,一旦出現在可抓取地址里,就是無穷尽的地址生成器。
自查可以按這個顺序走
- 從服務器日誌或抓取統計里導出最近一段時間被抓取的地址,按參數名做一次聚合,看看哪些參數出現频次最高。
- 逐個參數打開對應頁面,確認内容是否真的發生變化。内容不變却生成了新地址,就是首先要處理的對象。
- 检查站内連結:導航、面包屑、相關推荐、分頁按钮,是否把带跟踪參數的地址寫進了 href。
- 检查外鏈與投放素材落地頁,確認是否需要统一到干净地址,避免蜘蛛從外部顺着參數版本進来。
- 检查站点地图與主動提交的地址列表,確認里面没有混入參數版本。
三類參數,三種處理思路
跟踪類參數,優先從源头去掉:站内連結不要带,統計代碼在跳轉或上报时處理,而不是把參數寫死在頁面里。如果已经有歷史地址存在,可以用 canonical 指向干净版本,让蜘蛛知道哪一份是正本。
篩選排序類參數,重点在取舍。與主列表高度重合、搜尋量又低的组合,可以通過 robots.txt 屏蔽部分參數路径,或者在服務端對無意义组合直接返回主列表。真正有獨立價值、有搜尋需求的篩選頁,再考虑開放抓取並配上獨立的标题與描述。
會话與临时類參數,應该尽量不出現在可抓取連結中。若歷史遗留,可在 robots.txt 中按參數名屏蔽,同时確認這些地址没有被内鏈引用。
屏蔽參數前先看清代價:robots.txt 挡住的是抓取,不是索引。如果別處還有指向该地址的連結,它仍可能出現在结果里,只是你無法用頁面上的指令去影响它。所以從連結源头清理,通常比單纯屏蔽更彻底。
内鏈與提交要保持一致
參數問题的根源往往不在服務器,而在連結习惯。同一篇文章,導航里给的是干净地址,列表頁给的是带 utm 的地址,分享按钮又给一個带 from 的地址,蜘蛛收到的就是三條互相矛盾的线索。把内鏈規則统一成一套,比事後寫規則更省事。
提交站点地图和主動推送时,也只放干净版本。提交列表本身如果混入參數地址,等于亲手把蜘蛛引向副本。
處理完之後看變化
改完不必急着下结论。隔一段時間再看抓取日誌,观察參數類地址的出現频次是否下降,内容頁的抓取次數是否上来,索引里是否還挂着重复條目。參數治理很少一次做完,新功能上线、投放活動、第三方工具接入,都可能重新引入一批參數。把它当成一項定期复查的日常動作,比一次性清理更實用。