做抓取日誌分析时,经常會遇到一種情况:頁面内容明明只有一份,日誌里却出現了好几種 URL 寫法,抓取次數被摊薄,内鏈權重也被拆散。這通常不是蜘蛛“抓错了”,而是站点自身的 URL 規范化没有统一。
一、同頁多入口的常见表現
- 带尾斜杠與不带尾斜杠同时返回 200,内容一致;
- 路径大小寫混用,例如 /News/ 與 /news/ 都能打開;
- http 與 https、www 與非 www 並存,且各自都能訪問;
- 同一列表頁被 /list、/list/、/list/index.html 三種形式命中;
- URL 中夹带 utm_、from、spm 等跟踪參數,每次分享都生成新入口;
- 中文或空格參數出現编碼與未编碼两種寫法。
這些形態如果都能返回 200,蜘蛛會把它們当作不同资源分別抓取,同一份内容被重复消耗抓取预算。
二、影响不只是“重复”
入口分散會带来几個连鎖問题:内鏈指向不统一,導致同一頁面的内部與外部信号被拆到多個 URL 上;Sitemap 里提交的形態與頁面 canonical 标注的形態不一致,让抓取調度與實际規范地址對不上;日誌統計时,你很难判断某個栏目到底是抓取不足,還是被拆成了多條记錄。排查孤岛頁、抓取断层时,這類問题還會伪装成別的原因,让人誤判方向。
三、核對顺序
- 先定唯一規范形態。确定协议、主机名、路径大小寫、是否保留尾斜杠,並寫成一句话規則,避免多人协作时各自理解。
- 检查服務端是否强制跳轉。非規范形態應返回 301 到規范地址,而不是返回 200,也不是 302 到另一個非規范地址。
- 核對 canonical。每個頁面 canonical 應指向自身規范地址,且全站寫法一致,不要出現 canonical 指向一個會 302 的地址。
- 核對 Sitemap。Sitemap 中只放規范地址,避免把带參數、带尾斜杠的變体也提交進去。
- 核對内鏈。站内連結、面包屑、分頁連結统一使用規范形態,减少一次多余跳轉。
- 核對參數。只保留业務必需參數,跟踪類參數尽量在服務端 301 剥离,或至少不參與内容生成。
- 核對静態资源與接口。静態文件、图片 CDN 域名不必參與規范化,但要確認它們没有被誤寫入頁面主連結。
容易漏掉的两個点
一是分頁與篩選:列表頁翻頁參數顺序不同、篩選條件顺序不同,會生成大量等價 URL;二是前端拼接:JS 渲染时用目前地址拼接連結,如果目前地址本身是非規范形態,生成的内鏈也會跟着變成非規范形態,問题會沿連結一路扩散。
四、收敛後的驗證
改完之後不要只看首頁。抽取几十個典型頁面,分別用規范與非規范形態請求,確認非規范形態返回 301 且落在同一最终地址,最终地址返回 200。再回看一段時間内的抓取日誌,观察同一内容對應的 URL 形態數量是否下降,規范地址的抓取占比是否上升。如果日誌里仍有大量變体入口,多半是某個入口没有真正走到跳轉規則上。
規范化不是一次配置就結束的事,新增栏目、改版、接入新 CDN 或更換前端框架时,都可能重新引入不统一的寫法,建议把它纳入上线检查項。