網站收錄

末尾斜杠與大小寫不统一:同一頁面出現两個收錄地址时的收敛顺序

站内同一個頁面有时會因為末尾斜杠、大小寫、預設文件名或跟踪參數的不同,被搜尋引擎当成两個地址分別抓取和收錄。本文按訪問返回、canonical、内鏈、sitemap、日誌的顺序,說明如何確認規范地址、用 301 與連結统一做收敛,以及收敛之後该观察什么。

網站收錄

末尾斜杠與大小寫不统一:同一頁面出現两個收錄地址时的收敛顺序

同一份内容在索引里出現两個地址,最常见的来源不是内容本身,而是 URL 寫法不统一:一個带末尾斜杠、一個不带;一個全小寫、一個大小寫混用;一個指向目錄、一個指向 /index.html;或者被外鏈带進来一串跟踪參數。這類問题不會让頁面立刻掉出索引,但會分散内鏈指向、让日誌與索引統計對不上,排查收錄时很容易被带偏。

先看清“两個地址”到底差在哪

  • 末尾斜杠:/guide 與 /guide/
  • 大小寫:/Guide 與 /guide(在部分服務器或框架上是同一资源,在另一些上是两個不同资源)
  • 預設文件名:/guide/ 與 /guide/index.html
  • 协议與主机名:http 與 https、www 與不带 www
  • 跟踪參數:?utm_source=… 被外鏈或分享連結带進来

把這些類型先分開,再决定用哪一條規則收敛。多數站点只需要一條原則:一個頁面只保留一種寫法。

核對顺序:從訪問返回開始

  1. 用带斜杠、不带斜杠、不同大小寫的地址分別訪問,看返回的是 200 還是 301、302。
  2. 如果多個寫法都返回 200,說明服務器没有做归一化,這就是根因,先修這里。
  3. 對比两邊頁面的 canonical:如果各自指向自己,等于向搜尋引擎声明這是两個獨立頁面。
  4. 統計内鏈:站内有多少連結指向 A 寫法,多少指向 B 寫法。
  5. 检查 sitemap、RSS、分頁、面包屑里出現的寫法是否一致。
  6. 在日誌里看蜘蛛分別抓了哪些寫法、狀態碼是什么、频率如何。

顺带確認:是不是真的同一份内容

有些寫法不同,内容其實也不同,比如篩選參數改變了列表结果、或大小寫在服務端映射到不同目錄。這種情况不属于归一化問题,硬做 301 反而會丢頁面。判断方法很简單:對比正文主体是否一致,而不只是看标题。

收敛動作,按代價從小到大

  • 服務器层 301:把非規范寫法 301 到規范寫法,這是最彻底的一步,也是優先要做的。
  • canonical 统一:两邊都指向規范地址,作為過渡信号。
  • 内鏈與 sitemap 统一:站内不再輸出非規范寫法,sitemap 只放規范地址。
  • 外鏈處理:能联系到来源的請對方改成規范地址,联系不到的靠 301 兜住。
注意:301 與 canonical 不要互相打架。如果 A 301 到 B,而 B 的 canonical 又指回 A,信号會互相抵消,收敛過程會被拉長。

收敛之後看什么

不要当天就下判断。先在日誌里確認非規范寫法被抓到时返回的是 301,再观察一段時間内该寫法的抓取量是否下降、規范寫法的抓取量是否上升。索引里舊寫法消失通常明顯滞後,几周到几個月都可以算在正常范围内。

如果几個周期過去两個寫法仍然都在索引里,回到第一步复盘:常见原因是還有没清理干净的入口,比如外站舊連結、模板里残留的拼接連結、被缓存住的分頁路径。

日常怎么少踩這個坑

  • 上线前把 URL 規則定下来,寫進团队規范
  • 連結由统一的生成函數輸出,避免在模板里手寫字符串
  • sitemap 交给程序生成,只輸出規范地址
  • 定期用日誌抽样,看是否存在非規范寫法的抓取

URL 归一化属于基础工作,做一次能省掉後面很多“為什么收錄數對不上”的解释成本。它不保證收錄结果,但能让後續的判断有據可依。