網站收錄

canonical 指向了另一個 URL:索引里最後留下谁

canonical 常被当成收錄開關,其實它只是一個合並提示。本文說明它表達什么、几種常见用法、與 noindex、robots.txt、301 同时出現时谁更優先,並给出一份上线前可以逐條核對的清單,帮你在多 URL 並存时把信号理顺。

網站收錄

canonical 指向了另一個 URL:索引里最後留下谁

canonical(rel=canonical)是頁面里最容易被随手加上、也最容易被誤解的一個标簽。不少站点把它当成收錄開關,以為寫上目标 URL,索引里就只會留那一個。實际上它给的是合並提示:這几個 URL 我認為是同一份内容,主版本是它。搜尋引擎會參考,但不保證照做,更不保證你指定的那個一定被收錄。

它表達的是合並,不是收錄

当同一份内容能通過多個 URL 打開时,canonical 的作用是减少重复判断:

  • 带排序、篩選、會话參數的版本,與不带參數的干净版本;
  • www 與非 www、http 與 https 同时可訪問的歷史遗留地址;
  • 同一篇稿子發布在多個栏目下,各自有獨立 URL;
  • 移動版、打印版與正常版並存。

它想说的是別把這些当成不同頁面,而不是让某個頁面被收錄。能不能進索引,還要看内容质量、抓取情况、URL 是否規范這些更基础的東西。

三種常见用法

參數頁指向干净版本

列表頁被排序、篩選參數切出几十個地址,每個地址内容大同小异。這时可以让參數版指向不带參數的版本。前提是干净版本自己能稳定返回 200,且内容确實覆盖了參數版的主要内容,否則用戶從搜尋结果点進来會觉得對不上。

多域名或镜像站指向主站

跨域 canonical 是較强的合並信号,但不是强制指令。如果两個站内容完全一致、又都有獨立外鏈和流量,更彻底的做法的确是把其中一個做規范跳轉,而不是長期靠标簽维系。标簽适合過渡期,不适合当永久方案。

内容合並後舊頁指向新頁

栏目調整、文章重寫时,舊 URL 往往還有内鏈、還有外鏈、還有零散流量。直接删掉返回 404,這些积累就浪費了;可以先让舊頁保留、canonical 指向新頁,同时逐步把站内連結換成新地址,等外鏈和流量自然衰减後再做跳轉或下线。反過来,如果舊頁内容已经完全不同,就不该再用 canonical 硬合並。

和別的指令撞在一起时會怎样

實际排查中,問题多半不是單條寫错,而是几條信号互相打架:

  • canonical 指向 A,但這個頁面本身寫了 noindex。noindex 會让目前 URL 登出索引,合並的意义被削弱,甚至導致 A 也没被收錄。
  • canonical 指向 A,但 robots.txt 挡住了 A。蜘蛛抓不到 A 的内容,合並判断會打折,只能靠歷史資料推测。
  • canonical 指向 A,而 A 返回 404 或 5xx。信号落空,等于白寫。
  • canonical 指向 A,頁面同时又 301 到 B。跳轉通常優先處理,蜘蛛會跟到 B,canonical 的實际效果要按 B 来判断。
  • canonical 與 hreflang 互相矛盾。多語言站里,两套标簽指向的地址必须能自洽,否則語言版本會被搅在一起。
一句话原則:這些信号要么互不干涉,要么指向同一個地址,最怕各指一處。

上线前的检查清單

  1. canonical 目标必须能正常訪問並返回 200,不能指向 404、跳轉鏈或需要登入的地址。
  2. 目标頁自己也要 canonical 指向自己,避免出現 A 指向 B、B 指向 C 的鏈條。
  3. 不要全站统一指向首頁,這會把整站内容都並成一份,通常是過度使用。
  4. 分頁、列表頁不要随手 canonical 到第一頁,除非你确實不打算让後面的分頁被單獨收錄。
  5. 同一批 URL 的寫法保持一致:大小寫、尾斜杠、參數顺序统一,减少無谓的重复版本。
  6. 改版換域名时,canonical 與 301 的指向要保持一致,別一個指新域名、一個指舊域名。

怎么確認有没有生效

可以用站内检索看目标 URL 有没有出現、用 URL 检查類的工具看搜尋引擎實际识別到的是哪個地址,也可以對着服務器日誌看蜘蛛是否在抓目标頁。索引报告里的重复網頁、已排除等分组,往往能侧面反映合並是否被接受。需要提醒的是,這些观察都只是參考,最终的判断在搜尋引擎那邊,标簽寫得再齐,也替代不了内容本身是否值得收錄。