網站收錄

同一頁面出現多個 URL 變体:收錄核對先從 URL 規范化入手

站内連結、外鏈和 sitemap 里混用 http 與 https、带與不带 www、大小寫、尾斜杠等寫法,會让同一個頁面派生出多個都能返回 200 的地址,各自被抓取、各自被判断。本文按服務器跳轉、站内引用、canonical 與 sitemap 的顺序,說明如何核對哪些變体真正進入了索引,並把它們收敛到唯一入口。

網站收錄

同一頁面出現多個 URL 變体:收錄核對先從 URL 規范化入手

同一個頁面,因為协议、域名前缀、大小寫、尾斜杠、預設端口、入口文件名的不同寫法,可能在服務器上對應出好几個都能返回 200 的地址。這些地址各自被抓取,也各自進入判断流程,索引里就可能出現重复條目。

先分清抓取與收錄在這件事上的区別

URL 變体被抓取,只能說明蜘蛛拿到了這份 HTML;能不能進入索引,還要看该變体是否符合收錄條件。抓取量上涨不等于收錄量上涨,当同一份内容以多個地址被反复抓取时,抓取预算被摊薄,真正需要被收錄的規范版本反而可能更新變慢。

變体通常從這几處冒出来

  • 协议:http 與 https 並存,站内連結没有全部替換。
  • 主机名:带 www 與不带 www 各自可訪問。
  • 路径大小寫:/About 與 /about 在大小寫敏感的服務器上是两個地址。
  • 尾斜杠:/list 與 /list/ 都被返回 200。
  • 預設端口與入口文件::80、:443、/index.html 被顯式寫進連結。
  • 反向代理與 CDN:回源域名、临时域名被外部連結引用。

核對顺序

  1. 先確認索引里到底有几個變体。用 site 查询與索引报表按主机名、协议分別統計,不要只看總量。
  2. 再测服務器的跳轉行為。對每個非規范變体發起請求,看它是 301 到唯一版本,還是直接返回 200。返回 200 的變体越多,需要收敛的工作量越大。
  3. 检查站内連結與模板。導航、面包屑、分頁、结构化資料里的 URL 是否统一使用規范版本。模板一處混用,就會在全站铺開。
  4. 检查 sitemap 與 canonical。sitemap 里只應出現規范 URL;canonical 指向應與 301 目标一致,两者指向不同版本时,蜘蛛會拿到矛盾的信号。
  5. 回看日誌中的命中口径。按主机名統計抓取次數,判断哪個變体在被反复抓取,優先處理高频的那個。
  6. 確認外部来源。站長後台的外鏈、合作方投放、舊活動頁是否還在引用废弃變体。

處理时的原則

一個頁面只保留一個入口 URL,其余變体用 301 永久跳轉到它。canonical 是补充說明,不是 301 的替代品:服務器能做的归一,優先在服務器层完成,canonical 留给無法直接跳轉的场景。

  • 跳轉目标應是最终版本,不要串成 http → 带 www → https 的多跳鏈條。
  • 跳轉上线後,把站内連結改成直接指向最终版本,减少一次跳轉。
  • 更新 sitemap 並重新提交,让蜘蛛尽快看到規范地址。
  • CDN 與反向代理的缓存需要同步刷新,避免舊跳轉規則被缓存住。

几個容易踩的坑

  • 只改了首頁,内頁模板依舊輸出舊域名。
  • canonical 寫着 A 版本,服務器却把 A 301 到 B 版本。
  • 大小寫不做统一,外鏈带来的大寫地址長期留在索引里。
  • 把測試域名直接 301 到正式站,把測試頁面的關联一並带過去。
URL 規范化的目标是让判断對象變少、让更新更集中,並不保證某個版本一定被收錄。核對时以日誌和索引报表的實际資料為准,逐項確認後再動手改。