一個带篩選功能的列表頁,往往能自動生成成百上千個地址:颜色、尺碼、價格区間、排序方式、頁碼,再混進投放用的追踪參數。對用戶来说這很方便,對搜尋引擎来说,這些地址大多是同一批内容的不同排列。放任不管,蜘蛛的抓取額度會耗在大量近似頁面上,真正需要被收錄的頁面反而排不上队。
先给參數分個類
處理方式取决于參數會带来什么變化,可以先按下面四類归一下:
- 追踪類:utm_source、gclid、from、spm 之類,纯粹用于統計,對頁面内容没有任何影响。
- 排序與视图類:sort、order、view、list_mode,内容集合相同,只是顺序或展示方式不同。
- 篩選類:color、size、price_min 等,可能组合出有意义的新頁面,也可能只是空结果頁。
- 分頁類:page、p,通常属于内容的一部分,但深度越深,價值越低。
分類之後你會發現,真正值得让蜘蛛抓的其實没几個,大部分地址是工具和前端交互顺手产生的副产品。
能收敛就別让它炸開
- 追踪參數優先在入口處處理。在服務器或 CDN 层识別並忽略這些參數,或把带參地址 301 到干净地址。至少要做到站内連結不带追踪參數,否則蜘蛛顺着内鏈爬一圈,就會带出一整套重复地址。
- 排序和视图參數用 canonical 收敛。让這些地址的規范版本指向預設视图,站内也只用不带參的預設地址做連結。canonical 是提示不是强制,所以別指望它單獨解决問题,内鏈一致才是關键。
- 篩選组合先篩選再决定去留。先看哪些篩選组合确實有獨立搜尋需求,這類可以做成可索引的落地頁;其余组合让它們只在用戶点击时通過 AJAX 或表單触發,不進入可抓取的連結体系。
- 用 robots.txt 挡住並不等于不會被索引。如果外部有連結指向某個被屏蔽的带參地址,它仍可能以「無摘要」的形式出現在结果里。真要让它彻底消失,用 noindex 更稳妥,但前提是這個頁面本身能被抓取到。
- 分頁保留可抓取,但控制暴露深度。不要把几十分頁的連結全塞進頁脚,可以只保留前後几頁,配合「查看全部」或加载更多的方式减少地址數量。
站内連結是最容易失控的一环
很多參數地址不是外鏈带進来的,而是自己站内的按钮和跳轉造出来的。检查三件事:排序按钮是否生成了 a 标簽;站内跳轉时是否把目前頁的參數一路带下去;模板里的面包屑和導航是否只輸出規范地址。把這几處收干净,參數地址的數量通常會立刻下降一大截。
怎么驗證有没有做對
- 在服務器日誌里統計带參地址的抓取次數占總抓取的比例,處理前後做對比。
- 在索引报告的「已排除」里按原因分组,看重复、已發現未抓取、被 robots.txt 屏蔽的條目是不是集中在參數地址上。
- 抽查几個典型參數组合,確認它們返回的規范地址、狀態碼和 meta 指令符合预期。
參數處理没有一劳永逸的開關。列表頁會改版,前端框架會換,追踪參數也會變,所以更适合的做法是把它当成一項定期检查的工作,而不是上线时配一次就結束的任務。
回到最基本的原則:一個内容尽量只有一個主地址,其余變体能收敛就收敛;實在收敛不了的,至少別主動把它們喂给蜘蛛。