站内的篩選、排序、分頁和追踪參數,很容易在短時間内衍生出大量内容相近的 URL。這些地址指向同一份正文,却各自占用抓取配額,還會让日誌分析變得难以判断。下面按“先確認重复来源,再统一規范形式,最後修正輸出入口”的顺序,整理一套可执行的排查方法。
一、先確認重复發現是否真的存在
不要凭感觉下结论。從服務器訪問日誌中按路径前缀做聚合,观察一段時間内同一份内容對應了多少個 URL。
- 把查询串參數排序後再聚合,看同一组參數的不同书寫顺序是否被分別抓取;
- 統計带 sort、page、from 等參數的抓取占比;
- 對比抓取频次最高的那些 URL,是否都落在同一份正文上;
- 检查同一地址是否同时存在带末尾斜杠與不带斜杠两個版本。
如果重复比例明顯超出预期,再進入下一步;若重复量很小,優先處理影响更大的問题。
二、重复入口通常来自哪里
1. 站内連結的參數寫法不统一
列表頁的排序按钮、分頁组件、分享連結可能各自拼接參數,導致同一個目标頁被多個入口指向。检查模板是否固定了參數顺序,或者干脆省略預設值不輸出。
2. 追踪參數進入了可抓取連結
統計或投放用的參數如果直接寫進 href,會被当成新 URL 發現。這類參數更适合只在外鏈或前端脚本中拼接,不進入站内锚点。
3. Sitemap 與内鏈的規范不一致
站点地图里是規范形式,内鏈却是带參數的版本,两套入口會同时被抓取。建议以規范 URL 為准,统一两處輸出。
三、收敛顺序建议
- 确定規范形式:明确大小寫、末尾斜杠、參數顺序的唯一寫法,並寫進模板约定。
- 頁面級声明:在重复頁面上用 canonical 指向規范 URL,確認该地址可正常訪問且狀態碼正常。
- 連結級修正:让站内所有入口都輸出規范形式,這一步通常收益最直接。
- 抓取級约束:對确實没有检索價值的參數组合,可在 robots.txt 中屏蔽,但要先驗證不會连带挡住規范 URL。
- 提交級统一:站点地图只保留規范 URL,避免與内鏈形成两套体系。
收敛參數入口的目的是减少無效抓取、让日誌更可讀,並不等同于能提升收錄或排名,實际效果還取决于内容本身與整体结构。
四、容易踩坑的几種做法
- 用 robots.txt 屏蔽分頁參數,结果切断了通往深层内容的抓取路径;
- canonical 指向一個會跳轉或返回错誤狀態的地址,反而增加判断成本;
- 只改前端不补服務端跳轉,參數版仍可被直接訪問並被抓取;
- 把篩選结果頁整体设成不索引,却仍保留在站点地图中,信号自相矛盾。
五、顺带關注服務器侧的表現
重复抓取叠加时,带宽與動態渲染開销會同步上升。排查期間留意响應時間是否随並發抓取明顯抖動,若有異常先看缓存命中與資料库查询,再考虑是否需要放缓抓取节奏。稳定且可预期的响應,比短時間放開抓取更有價值。
六、改動之後的驗證
上线後观察两到四周:日誌中带參數 URL 的抓取條數是否下降,規范 URL 的抓取是否保持稳定,带宽與峰值负载是否有所回落。同时抽查若干深层頁面,確認抓取路径没有被誤伤。若某項指标出現異常,優先回退影响面最大的那一步,而不是同时調整多項配置。