站内連結里带問号的情况很常见。列表頁的篩選、排序、翻頁、渠道追踪,稍微不留神就會生成大量參數组合。對用戶来说這些連結能用,對蜘蛛来说却可能是一片没有邊界的空間。
蜘蛛是怎么遇到參數連結的
蜘蛛不會主動猜參數,它只會顺着頁面上的 href、Sitemap 和外部引用走。參數連結的入口通常集中在几個地方:
- 列表頁和詳情頁里直接寫成带參數的 href;
- Sitemap 中混入了排序或渠道參數版本;
- 站外分享、广告投放带来的追踪連結被別的頁面轉引;
- 前端篩選组件在地址栏直接改寫 query。
入口越多,组合越容易失控。一個商品列表如果同时有颜色、尺碼、價格区間、排序方式,參數笛卡尔积可以轻松到几千條 URL。
真正的問题不在數量,而在重复
參數泛滥通常带来两個直接影响。一是抓取時間被分走,蜘蛛把額度花在几十種排序视图上,真正需要更新的詳情頁反而排到後面。二是重复内容判定,同一批資料被包装成多個地址,蜘蛛需要自己判断哪個是主体,判断失誤时可能出現收錄地址来回切換。
但也要注意另一面:有些參數确實代表不同的内容,比如按城市划分的门店列表、按标簽聚合的文章集合。這類頁面拦掉,等于把一條真實的内容分支關掉了。
先给參數分類,再决定放行還是收敛
可以放行的一類
- 參數决定内容主体,去參數後頁面内容明顯不同的;
- 有獨立搜尋需求、站内也确實把它当成落地頁在运营的;
- 數量可控,人工能列出完整清單的。
建议收敛的一類
- 排序參數,如 sort=price、order=asc,内容集合不變只是顺序不同;
- 展示類參數,如视图模式、每頁條數、語言切換的临时參數;
- 會话與追踪參數,如 utm_*、sid、from、ref;
- 可以被站内搜尋、表單提交触發的查询串。
几種收敛手段的用法
- 内鏈只鏈規范版本。頁面里生成連結时去掉排序、追踪參數,让蜘蛛顺着内鏈走到的預設就是干净地址。
- canonical 指向無參數版本。前提是頁面内容确實一致,如果參數改變了主体,canonical 指向別處反而會带来混乱。
- robots.txt 里做通配拦截。例如拦掉带 sort= 或 utm_ 的路径。寫法要谨慎,通配符寫得過宽可能顺带拦住正常目錄。
- Sitemap 只放規范 URL。Sitemap 是主動提交的清單,把參數版本放進去等于主動扩大了抓取面。
- 篩選交互尽量少改地址。能用前端组件完成、不产生新 URL 的交互,就不要每次都改寫 query。
收敛的目的是减少無效抓取,不是把頁面藏起来。動手之前先確認這些參數頁有没有流量和轉化,有的话更合适的做法是把它整理成一個規范地址,而不是简單拦掉。
怎么知道收敛有没有起作用
處理完之後不要只看表面,翻一段服務器日誌更實在。重点看三件事:带參數請求在蜘蛛總請求里的占比有没有下降;被拦的參數路径是否還在被反复尝试;規范版本地址的抓取次數有没有相應上升。如果占比没變化,通常是内鏈里還残留着带參數的 href,或者站外引用一直在把舊連結带回来。
參數治理不是一次性的工作。新上线的篩選項、新的投放渠道、新的前端组件,都會重新引入參數。把「連結生成时是否带無意义參數」寫進上线检查清單,比事後從日誌里找問题要省事得多。