站点运营

站点运营:canonical 标簽自查,別让同一内容向蜘蛛發出矛盾信号

canonical 标簽看着简單,却是最容易埋坑的地方:模板自動生成、改版忘记更新、分頁和多語言混用,都可能让同一個頁面向搜尋引擎發出互相矛盾的信号。本文给出一套可以落地的自查流程,從抽样看源碼到全站導出比對,帮你在改版前後把這件事理清楚。

站点运营

站点运营:canonical 标簽自查,別让同一内容向蜘蛛發出矛盾信号

canonical 标簽的作用只有一句话:当一個内容存在多個可訪問的 URL 时,告诉搜尋引擎哪個是主版本。听起来简單,但它出错的方式特別多,而且大多不會报错,只會在索引里慢慢表現成“這個頁面好像不太對”。

為什么 canonical 容易出错

因為它通常不是人工寫的,而是模板輸出的。模板一旦寫死,栏目改结构、URL 改規則、換域名,它都不會自動跟着變。再加上它属于“看不见的标簽”,日常没人會盯着看,問题往往积累很久才被發現。

常见問题清單

  • 指向了一個已经 404 的舊地址;
  • 指向的地址本身還要经過 301 才能到達;
  • 同一頁面輸出了两個甚至更多 canonical;
  • 分頁列表的每一頁都 canonical 回第一頁;
  • 列表頁與詳情頁互相指向,形成回路;
  • 寫的是相對路径,协议、www 與根域名混用;
  • 移動端頁面 canonical 指向桌面端,但两邊内容並不一致;
  • 多語言站点把所有语種都指向主語言版本。

一次能落地的自查流程

  1. 先抽样。從首頁、栏目頁、詳情頁、分頁、带參頁各挑几個,直接看源碼里的 canonical 是什么。
  2. 再全站導出。用爬虫工具跑一遍,把 URL 與 canonical 两列導出成表格。
  3. 做比對。把结果分成几類:自引用、指向站内其他頁、指向 404 或 5xx、缺失、重复輸出。
  4. 核對一致性。canonical 指向的地址,是否和 sitemap、内鏈、重定向目标说的是同一件事。
  5. 修模板而不是修頁面。發現問题優先改模板,避免下次更新又回到原点。

判断时可以參照的几條准則

  • 用绝對 URL,带上协议和域名,减少歧义;
  • 每頁只保留一個;
  • 自引用是正常且推荐的,不需要刻意去掉;
  • 需要整頁替換时用 301,canonical 處理的是“同一内容的多份副本”;
  • 不要指望用 canonical 掩盖结构問题,它只是一個建议信号。
canonical 是提示,不是命令。搜尋引擎完全可以忽略它。如果你需要靠它来“救”一個本该修好的结构,那說明真正的問题在別處。

几個容易忽略的地方

分頁是一個典型。列表的第二頁、第三頁各自有獨立内容,把它們全部 canonical 到第一頁,等于告诉搜尋引擎後面几頁不用單獨看。除非你确實打算让它們合並,否則保持自引用更合适。

多語言是另一個。hreflang 负责說明语種之間的關系,canonical 负责說明同一语種内的主版本,两者分工不同,不要用 canonical 把不同语種合並成一個。

最後是改版节点。換域名、改 URL 規則、調整栏目结构之後,模板里的 canonical 往往還指向舊地址。把這項检查放進上线清單,比事後翻索引省事得多。

這套自查不需要一次做完全站。先抽样,再導出比對,把明顯的矛盾和指向失效地址的情况清掉,通常就能解决大部分問题。