站点运营

站点运营:URL 參數與篩選連結的治理,別让排序和跟踪參數生出重复頁面

站内篩選、排序和跟踪參數常常在無意間生成大量可抓取地址,消耗抓取配額並制造重复内容。本文從參數来源讲起,說明哪些參數值得保留、哪些應合並或屏蔽,给出從連結源头到服務器返回的處理顺序,以及處理完之後该在日誌里观察哪些變化。

站点运营

站点运营:URL 參數與篩選連結的治理,別让排序和跟踪參數生出重复頁面

很多站点在内容數量上没有明顯增長,抓取日誌里的 URL 却翻了好几倍。翻一翻被频繁請求的地址,往往不是新頁面,而是同一批内容套上不同參數的版本:?utm_source=…、?orderby=price、?page=2&filter=red。參數本身没有错,但当它可以被蜘蛛自由组合时,一個栏目就可能衍生出成百上千個可抓取的地址。

參數是從哪里進来的

先要弄清楚這些地址是天然存在的,還是被頁面連結带出来的。常见来源有三個:

  • 外部推廣:广告、邮件、社交平台附加的跟踪參數,通常只出現在少數落地頁上。
  • 站内交互:篩選、排序、分頁、视图切換,往往由前端拼接進連結或表單。
  • 程序與中間件:會话标识、語言偏好、缓存标记,有时會被服務端自動附加到 URL 上。

外部来源的參數影响相對有限,真正需要處理的是站内交互生成的連結,因為它們會被蜘蛛反复爬到,並顺着内鏈扩散到全站。

判断這段參數该不该被抓

不是所有带參數的地址都要屏蔽。判断标准可以简單一些:這段參數是否产生了用戶看得见、且值得被搜尋到的獨立内容。

  • 值得保留:真正的内容篩選,例如某品牌、某價格区間或某场景的聚合頁,有獨立标题、稳定地址和持續價值。
  • 應当合並:排序方式、每頁條數、列表與網格视图切換,内容相同,只是排列或呈現不同。
  • 應当屏蔽或丢弃:會话标识、跟踪參數、空篩選值、無效的排序字段。

處理顺序:先改連結,再谈規則

不少站点一上来就寫 robots.txt 或加 canonical,结果參數連結仍然從頁面里被蜘蛛發現,只是抓回来被拦掉了。更稳妥的顺序是:

  1. 從連結源头减少:排序、视图切換這類交互尽量走前端狀態,不生成可点击抓取的連結;跟踪參數只在外部落地頁使用,站内連結不再携带。
  2. 给出規范地址:确實要保留的篩選頁,在頁面上加自引用 canonical,指向该篩選结果自身的干净 URL,而不是一律指回主列表。
  3. 统一參數寫法:同一個篩選值只用一種形式,避免大小寫、參數顺序、空值造成多個地址。
  4. 必要时才用 robots.txt:屏蔽只對抓取生效,被屏蔽的地址仍有可能被收錄成無描述的结果。屏蔽與 canonical 同时使用时,要確認两者不冲突。
  5. 服務端兜底:對無意义的參數直接 301 到干净地址,或明确返回 404,比放任程序生成空白頁更清晰。

几個常见誤区

  • 把過滤參數整体屏蔽,等于把有價值的篩選聚合頁一起關掉。
  • canonical 一律指向主列表頁,但篩選頁在标题和内容上差异很大,用戶点進来會觉得货不對板。
  • 只在頁面里加 canonical,站内連結却仍然大量指向带參數的地址。
  • 分頁參數與多個篩選參數叠加,形成组合爆炸,却没有對這類组合做任何限制。

處理之後要看什么

規則生效不等于問题解决,還是要去日誌里看真實請求。重点观察三件事:带參數請求的占比是否下降;被請求的參數组合是否集中在少數几類;改動過的地址返回狀態碼是否與预期一致。也可以定期從站内連結出發抓一遍 URL,統計參數出現的模式,通常比翻代碼更快找到入口。

參數治理的目标不是让带參數的 URL 彻底消失,而是让每一類參數都有明确归属:要么是值得收錄的獨立頁面,要么是不该浪費抓取资源的重复地址。