網站收錄

同一個頁面被拆成多個 URL:大小寫、斜杠、协议和 www 该怎么统一

同一個頁面被 http/https、www、结尾斜杠、大小寫拆成多個能打開的地址时,收錄數字會變虚,canonical 和内鏈也容易互相打架。本文列出常见的 URL 變体類型,给出确定規范版本、用 301 收敛、统一内鏈與 sitemap 的處理顺序,並說明為什么不建议用 robots.txt 去挡這些重复地址。

網站收錄

同一個頁面被拆成多個 URL:大小寫、斜杠、协议和 www 该怎么统一

运营中常遇到這種情况:内容只寫過一次,站点却有几個地址都能把它打開。http 和 https 各一份,带 www 和不带 www 各一份,结尾加不加斜杠又能分出两份,URL 里字母大小寫再變一下,數量還會繼續翻。這些地址如果都能正常訪問,又没有被明确分出主次,搜尋引擎可能把它們当成不同頁面分別抓取,甚至分別放進索引。

先看清站点自己产生了哪些變体

不用急着改,先把變体列出来。常见的几類:

  • 协议:http:// 與 https:// 同时能打開同一個頁面。多數站点做過跳轉,但跳轉是否覆盖了所有路径、是否用的 301,需要逐個確認。
  • 主机名:example.com 與 www.example.com 各自能打開同样的内容。
  • 结尾斜杠:/about 與 /about/ 返回一样的内容,且都是 200 狀態。
  • 大小寫:/News/2024 與 /news/2024 顯示相同頁面。有的服務器区分大小寫,有的會自動轉換,行為不统一时更容易出問题。
  • 預設文件:/list 與 /list/index.html 都能訪問。
  • 參數:排序、篩選、追踪參數生成的大量地址。這一類處理方式不同,本文不展開,但排查时要注意它們是否混在里面,導致誤判。

為什么值得花時間统一

最直接的影响是判断變难。你在站長工具里看收錄量,數字里混着重复地址,就很难判断真實的内容規模,也不清楚哪些目錄真的被收錄了。内鏈和外鏈同时被分散到不同版本上,同一份内容收到的信号被摊薄。

另一個常见問题是 canonical 寫歪。比如頁面自己声明規范地址是带 www 的版本,而站内大部分連結指向不带 www 的版本,蜘蛛每次抓到的线索互相矛盾,反而更犹豫。canonical 是提示而不是强制指令,它必须和跳轉、内鏈、sitemap 的方向保持一致才有意义。

一致性比單点技巧更重要:跳轉、canonical、内鏈、sitemap、外鏈,最终指向的應该是同一個地址。

處理顺序

  1. 确定唯一的規范版本。選一個主机名和一種协议,全站统一,通常建议 https 加一個固定的主机名寫法。
  2. 用 301 把其他版本跳過去。协议、主机名、结尾斜杠、大小寫這几類,尽量在服務器层做 301。不要長期用 302 顶着,也不要用 JS 跳轉代替。
  3. 頁面 canonical 指向自己所在的規范地址。注意是“自己”,不是随手指向首頁或另一個内容相近的頁面。
  4. 内鏈、導航、面包屑统一使用規范地址。這一步最容易被忽略,模板里残留的一個舊連結,就會持續给蜘蛛送出错誤线索。
  5. sitemap 只放規范地址,不要同时提交多個版本。
  6. 外鏈能改的尽量改,改不動的不必强求,靠站内跳轉慢慢收敛即可。

要不要用 robots.txt 挡住變体

不建议。被 robots.txt 挡住的地址,蜘蛛看不到内容,也就看不到上面的 canonical 和跳轉關系,反而可能因為仍有外鏈存在而留在索引里,顯示成没有摘要的结果。挡住不等于消失,能跳轉就跳轉。

怎么確認處理生效

處理完之後隔一段時間再查:手動訪問不带协议的域名加路径,看是否都跳到同一地址;在站長工具里观察已收錄的地址形態是否逐渐收敛;翻日誌看蜘蛛是否還在抓舊版本。這個過程通常需要经過几次回訪周期,不會立刻反映出来。

站点規模大的话不必一次改完。先處理流量高、被抓取多的目錄,再逐步铺開,比一次性大改更容易定位問题,也方便對比改動前後的差异。