同一段内容,從不同入口点進去,可能得到几個看起来不一样、實际指向同一頁面的 URL。對用戶来说頁面没變;對爬虫来说,這是几個彼此獨立的地址,會被分別抓取、分別评估。结果就是抓取額度被摊薄,索引里多出几條内容几乎一样的记錄,外鏈带来的信号也被拆散。
常见的 URL 變体有哪些
- 协议與主机:http 與 https、带 www 與不带 www、顯式寫出預設端口(:80、:443)。
- 大小寫:/About 與 /about 在多數服務器上是两個不同路径,除非服務器做了统一處理。
- 末尾斜杠:/tag 與 /tag/ 在部分服務器配置下會返回两份内容。
- 預設文件名:/index.html、/default.aspx、/home 與目錄根地址並存。
- 查询參數:utm_* 跟踪參數、排序、篩選、分頁、會话 ID,以及參數顺序不同。
- 编碼寫法:同一路径用不同轉义方式表達,中文路径尤其容易出現。
锚点(# 之後的部分)通常不參與索引判定,它更像是頁面内的定位,不會被当作獨立 URL 收錄;但很多人把它和查询參數混在一起判断,反而模糊了重点。
為什么變体多了,收錄會變乱
内鏈只要有一處寫成變体形式,蜘蛛就可能顺着它發現這個新地址。每個變体被單獨抓取一次,消耗的是同一份抓取額度;如果它們都返回 200,且没有明确的規范化信号,搜尋引擎只能自己去猜哪個是代表版本。猜错的时候,出現在索引里的可能是一個带跟踪參數、内容不全或很少被連結的版本。
外鏈的情况更麻烦:別人用哪個版本連結你,你控制不了,于是權重也被分到不同地址上。
先量一遍站内到底有几個版本
- 用站内搜尋或站点地图導出,看看内鏈里混用了哪些寫法。
- 看服務器日誌,確認爬虫實际訪問過哪些變体形式。
- 看收錄情况,核對是否出現了同名的多個版本。
- 抽查導航、面包屑、分頁、分享按钮生成的連結,這几處最容易漏。
處理顺序:先定主版本,再收敛
- 确定唯一主版本:协议、主机名、末尾斜杠規則、大小寫規則,一次性定下来並寫進团队文档。
- 服務器层做 301:把其它變体永久重定向到主版本。大小寫统一、末尾斜杠统一、去掉預設文件名,都放在這一层解决。
- 改内鏈、站点地图、canonical:全部指向主版本。canonical 是提示而非指令,和 301 一起用效果更稳,單獨用不一定被采纳。
- 處理參數頁:能静態化的篩選结果尽量做成静態路径;纯篩選、排序類參數頁,可以 canonical 到主列表頁,或用 robots 規則限制抓取,但不要一刀切屏蔽掉有真實搜尋需求的頁面。
- 保持重定向简洁:避免 A→B→C 的多跳,也不要让 301 指向一個 302 或 JS 跳轉。
自查清單
- 首頁在 http/https、www/非 www 下分別返回什么狀態碼。
- 站内是否存在同一個頁面的大寫與小寫两個連結。
- 目錄地址與 index.html 地址是否都返回 200。
- 分享出去的連結是否带 utm 參數。
- 重定向鏈是否超過一跳。
規范化不是一次性的動作。新增栏目、模板改版、投放活動,都可能重新引入變体,定期抽查比一次大掃除更有效。
把同一頁面收敛到一個地址,不會立刻带来什么變化,但它减少的是後續所有环节的噪声:抓取更集中、重复内容更少、外鏈信号不再分散。做收錄相關的工作时,這一步通常比追着收錄數量更值得先做。