網站收錄

canonical 指向了別的 URL:頁面一直不進索引的一種常见原因

rel=canonical 本来是用来指定同一内容的首選地址,但很多站点在模板里把它指到了列表頁、上級栏目甚至別的域名,结果等于主動把收錄信号让了出去。本文梳理 canonical 指错的几種典型情况、自查顺序,以及什么情况下不该急着加這個标簽。

網站收錄

canonical 指向了別的 URL:頁面一直不進索引的一種常见原因

有些頁面内容寫得完整,内鏈也有,蜘蛛日誌里能看到抓取记錄,但過了一两個月在索引里就是找不到。排查模板时经常能看到同一個問题:頁面的 rel=canonical 指向了另一個 URL。這相当于在告诉搜尋引擎“這一頁不是正主,請去看那一頁”,收錄信号自然就被让出去了。

canonical 在收錄鏈路里做的是什么

需要先分清一件事:canonical 不是用来决定“收不收錄”的開關,它表達的是“這一组内容相近的 URL 里,我認為哪一個才是代表”。搜尋引擎會把它当作一個較强的參考信号,但最终仍會结合内容、内鏈、外鏈、歷史表現等因素自己判断。

正因為它是參考而非命令,所以用错的後果往往是渐進的:一開始可能還照常收錄,等搜尋引擎確認了你的指向,才慢慢把這一頁合並到目标 URL 上。运营端看到的現象就是“這頁越来越难搜到,索引里也查不到了”。

指向错的几種典型情况

列表頁的全部分頁都指向第一頁

分類頁、文章列表頁在模板里统一輸出 canonical,值寫成不带分頁參數的主地址。第 2 頁、第 3 頁上的每一條内容都带着“我是第一頁”的信号,這些分頁本身很难被單獨收錄,翻頁里獨有的那部分内容也就不容易被索引到。

带參數的頁面全部指向無參數版本

篩選、排序、跟踪參數這類 URL,如果全部 canonical 到干净地址,在參數只是排序變化时是合理的;但如果參數决定了完全不同的内容集合,比如不同城市的列表、不同規格的商品,统一指向就會让這些頁面互相挤压,最後只留一個。

模板里寫死了一個示例地址

改版或套用主题时比較常见:canonical 的地址被硬编碼成某個示例頁,所有頁面都指向它。這種错誤覆盖面最大,也最难從單個頁面上看出来,通常要抽查多個不同栏目才會發現。

把内容指向了站外

有的站点因為内容同时發布在別處,就在自己頁面上 canonical 到對方域名。這等于主動放弃這一頁作為首選地址,如果對方站点並不稳定,最终可能两邊都拿不到應有的收錄。

多語言、多地区版本互指混乱

語言版本之間應该用 hreflang 互相說明,而不是用 canonical 互指。把英文頁 canonical 到中文頁,會让英文版本失去獨立收錄的机會。

自查时按什么顺序看

  1. 先抽查三類頁面:首頁、一個栏目列表頁、一篇内頁。看它們的 canonical 是否指向自己。
  2. 再看分頁和带參數的 URL,確認指向的對象和内容集合是否匹配。
  3. 检查是否有多個 canonical 标簽同时出現,這種情况通常會被整体忽略。
  4. 確認 canonical 指向的地址本身可訪問,返回正常狀態碼,不是 404 或跳轉鏈。
  5. 核對它和 noindex、robots.txt 之間有没有互相矛盾:一個说別收錄我,一個说以我為准。

不是所有頁面都该急着加 canonical

如果站内每一個 URL 的内容本来就各不相同,頁面上又没有真正重复的版本,自引用的 canonical 是安全做法,但加上一层指向別處的标簽反而增加出错概率。以下几種情况更适合先別動:

  • 頁面内容獨立,没有對應的重复版本;
  • 两個頁面只是主题相近,目标關鍵詞和正文並不重合;
  • 還在測試 URL 结构,地址随时可能調整。
判断要不要合並,先問一句:如果只留其中一個地址,用戶和搜尋引擎看到的東西會不會變少?如果會變少,就不该合並。

改回来之後怎么观察

把错誤的 canonical 修正為自引用或正确的目标地址後,不要期待第二天就看到變化。可以先在抓取日誌里確認這些頁面重新被訪問,再通過站内搜尋、内鏈锚文本等方式给它們补一些入口。索引的合並和拆分本身需要時間,通常按周观察比按天观察更靠谱。

同时留意一件事:如果這些頁面之前被合並到了別的 URL 上,現在拆開,等于重新让搜尋引擎認识两個獨立的地址,短期内表現可能會有波動,属于正常范围。修 canonical 的目标是让信号和頁面结构保持一致,而不是短期内让收錄數字變好看。