同一個頁面,往往不止一個 URL 能把它打開。带 www 和不带 www、末尾有没有斜杠、路径大小寫不同、带不带跟踪參數,在浏览器里都顯示正常,用戶看不出区別,但蜘蛛看到的是几個不同的地址。入口一多,抓取预算、收錄判断和後續的資料統計都會被分散。
URL 變体通常從哪来
- 协议與主机名:http 與 https 同时可訪問,www 與不带 www 並存,或者带預設端口(:80、:443)的寫法也返回 200。
- 路径寫法:/about 與 /about/ 都能打開,大小寫混用(/News 與 /news)指向同一頁,路径中出現连續斜杠。
- 查询參數:跟踪參數(utm_ 系列、ref、from)、會话 ID、參數顺序颠倒(?a=1&b=2 與 ?b=2&a=1)、空參數。
- 编碼差异:中文或空格被编碼成 %E4%B8%AD 的形式,與可讀形式並存且都能訪問。
- 歷史遗留:改版後舊目錄仍可訪問,站内連結有的指向新地址、有的還指向舊地址。
為什么值得花時間收敛
蜘蛛是围绕 URL 排队抓取的。如果同一個頁面存在五個可訪問地址,它可能按五條记錄分別排队、分別重訪,原本留给重要頁面的抓取額度就被摊薄了。另一方面,多個變体各自被收錄时,會形成内容重复,頁面之間互相竞争,标簽、摘要和外鏈信号也难以集中到一個地址上。
更麻烦的是排查。日誌里同一篇文章出現十几行不同 URL,每行狀態碼都是 200,你很难判断蜘蛛到底抓了多少真實内容,是抓取不足還是重复消耗。
收敛入口的具体做法
- 先定規范地址:确定每個頁面唯一對外使用的协议、主机名和路径寫法,寫進团队的發布規范,而不是每次靠個人习惯。
- 用 301 而不是 302:其余變体全部 301 到規范地址,跳轉目标直接落地,不要再经過多級跳轉。协议和主机名的统一尽量在服務器或 CDN 层完成。
- 站内連結寫法统一:導航、面包屑、正文内鏈、分頁連結全部使用規范地址,連結里不要顺手带上跟踪參數。
- Sitemap 只放規范 URL:提交非規范地址,等于主動把變体送進抓取队列。专题頁、活動頁上线时同样按這條检查。
- canonical 指向自己:規范頁面上的 canonical 應自指,非規范地址统一跳到規范地址即可,不要让两邊给出互相矛盾的信号。
- 參數在源头控制:外部分享、广告投放用的參數尽量在落地时清理,或通過服務端規則让带參地址也跳回規范地址。
怎么核對收敛是否生效
把服務器日誌按 URL 归類,統計每個變体的抓取次數和狀態碼占比,間隔一两周對比一次,看非規范地址的請求是否在减少、301 是否稳定返回。再用站内搜尋指令查看是否有重复收錄的頁面,抽查 Sitemap 中的地址是否都能直達且返回 200。
如果發現某個變体仍在被大量抓取,先看它是不是還有入口:常见原因是舊模板残留的連結、站内搜尋或标簽頁生成的带參地址,以及手机端與 PC 端使用了不同的主机名。
收敛不是一次性的動作。發新内容、改版、上活動頁时都可能引入新的變体,把它当成發布流程里的一個检查項,比事後集中處理轻松得多。
URL 變体不會直接影响頁面的内容质量,但它决定了蜘蛛把有限的抓取次數花在哪里。入口干净,抓取日誌才讀得懂,後面的鏈路诊断和内容優化才有可靠的起点。