站点运营

站点运营:canonical 标簽的寫法與自查,別让頁面互指同一個地址

同一份内容常常有多個可訪問地址,canonical 就是告诉搜尋引擎哪個是首選版本的一句话。本文梳理 canonical 的寫法要点、自引用检查、與 noindex 和 301 冲突时的處理,以及上线前的自查清單,帮你避免把错誤信号發给蜘蛛。

站点运营

站点运营:canonical 标簽的寫法與自查,別让頁面互指同一個地址

canonical(rel="canonical")是頁面里的一句话:這份内容真正的地址是哪一個。用得好,能减少多個地址互相分散;用错,等于亲手把蜘蛛引向別處。

canonical 到底解决什么問题

同一份内容出現多個可訪問地址是很常见的:带參數的活動連結、HTTP 與 HTTPS 並存、带 www 與不带 www、打印頁、移動版頁面等。canonical 的作用是声明這些地址里哪個是首選版本。

要清楚它的定位是建议而不是指令,最终判断權仍在對端。它也不能替代重定向:如果舊地址本就不该再被訪問,用 301 更干净。

自引用 canonical:最基础也最容易漏

每個正常頁面都應该有一條指向自己的 canonical,地址與目前頁面的規范地址完全一致,包括协议、域名、路径、大小寫和结尾斜杠。

漏掉自引用本身不一定立刻出問题,但当頁面被多個參數地址訪問时,缺少這條声明會让版本判断變得模糊。

寫法上的几個要点

  • 使用绝對地址,寫全 https:// 與域名,避免相對路径带来的歧义。
  • 一個頁面只寫一條 canonical,不要重复出現多個标簽。
  • 大小寫、结尾斜杠、參數顺序要和頁面對外的主地址保持一致。
  • 指向的目标必须可訪問且返回 200,不要指向 404、301 或者被 robots 屏蔽的地址。
  • 不要跨域名乱指,除非确實是同一内容的分站或镜像關系。
  • 移動端與桌面端是两套地址时,桌面版指向自身、移動版指向桌面版是常见做法,但要與站点整体策略一致。

几個容易打架的组合

canonical 與 noindex 同时出現

一個頁面既声明 canonical 指向 A,又加了 noindex,信号是矛盾的。常见结果是這個頁面不被保留,但它未必會按你的设想把價值传给 A。两者通常選一個用。

canonical 與 301 混着用

如果 A 頁面 301 到 B,B 又 canonical 回 A,就形成閉环。蜘蛛在中間来回绕,最後可能两個地址都得不到明确结论。改版或合並内容时,先把跳轉關系理清,再补 canonical。

分頁與篩選頁

列表頁的翻頁不要全部 canonical 到第一頁,那會让後續頁面的内容被忽略。篩選參數生成的地址,更合理的做法是治理參數本身,或者對無價值的组合做屏蔽,而不是一律指向列表主頁。

上线前的自查清單

  1. 随机抽 20 個頁面,检查 canonical 是否指向自己,且與目前 URL 完全一致。
  2. 搜尋全站模板,確認没有把 canonical 寫成固定的主頁地址。
  3. 检查 canonical 目标地址的返回碼,確認是 200。
  4. 检查是否與 noindex、robots 屏蔽、301 存在冲突。
  5. 活動頁、专题頁這類临时地址,確認指向的是你真正想保留的版本。
  6. 用爬虫工具跑一遍,把 canonical 指向與预期不一致的頁面列出来逐條確認。

別把它当成重复内容的萬能解药

canonical 處理的是同一份内容的多個地址,不是两篇相似但不同的文章。如果两個頁面内容确實不同,硬指到同一處,反而會让其中一個頁面的價值被抹掉。

canonical 是一條声明,不是一道命令。寫之前先想清楚:這些地址里,你到底希望蜘蛛记住哪一個。