站点运营

站点运营:canonical 自查,別让規范地址指错方向

canonical 是頁面告诉搜尋引擎“哪個地址才算正身”的方式,寫對时無人察觉,寫错时也不报错,只會慢慢表現為抓取分散、同一内容多個地址各拿一部分信号。本文整理一份自查思路,覆盖自引用寫法、參數頁與篩選頁、分頁處理,以及與 sitemap、robots、hreflang 的一致性检查,适合日常维護和改版前後對照使用。

站点运营

站点运营:canonical 自查,別让規范地址指错方向

canonical 是一個不影响用戶、也不影响頁面正常打開的标簽,所以它常被忽略。但它决定了搜尋引擎在這個頁面存在多個訪問地址时,把哪一個当作主版本。寫對的时候没人注意,寫错的时候通常也不报错,只會慢慢表現為抓取分散、同一份内容被多個地址各分走一部分信号、改版之後舊地址迟迟不退场。

先確認頁面是不是真的需要它

不是每個頁面都必须寫 canonical,但绝大多數正常頁面應该寫自引用,也就是指向目前頁面的完整地址。最常见的错誤来自模板複製:詳情頁模板忘了改,结果全站詳情頁的 canonical 都指向栏目頁,或者栏目頁统一指向首頁。這類错誤一旦成批出現,等于主動告诉搜尋引擎“這些頁面不用單獨看”。

  • 协议和域名要和實际訪問一致:https 頁面寫了 http 地址,或者 www 寫成了不带 www,等于把主版本让给了另一個地址。
  • 末尾斜杠、大小寫、參數顺序保持统一,別让同一個栏目出現两套寫法。
  • 列表頁、詳情頁、专题頁一般建议自引用,除非你确實打算把它們合並成一個地址。

參數頁與篩選頁怎么處理

排序、篩選、跟踪參數會生成大量高度相似的地址。處理时需要成体系,而不是逐頁凭感觉寫。

  1. 參數不改變内容主体,比如排序方式和分頁之外的纯展示參數:canonical 指回不带參數的干净地址。
  2. 參數带来的是不同内容集合,比如篩選後的獨立列表:可以考虑自引用,同时评估這個集合是否值得被單獨抓取。
  3. 跟踪參數:canonical 指回干净地址,別把带跟踪參數的地址当成主版本。

關键是一致性。同一個栏目里,一部分篩選頁自引用、另一部分指回列表頁,搜尋引擎很难判断規律,判断成本最後會轉嫁到抓取效率上。

分頁的 canonical 別寫反

分頁是容易出错的地方。常见做法是第 2 頁及之後自引用,而不是所有分頁都指回第 1 頁。全部指回第一頁,會让深层内容失去被單獨看待的机會。具体策略要结合站内實际情况决定,但至少不要在分頁之間形成互相指向的环,也不要让分頁的 canonical 指到一個被屏蔽或带 noindex 的地址上。

和 sitemap、robots、hreflang 對齐

  • sitemap 里提交的地址,尽量和 canonical 声明的地址一致,避免提交清單和頁面声明互相矛盾。
  • canonical 指向的地址不應被 robots.txt 屏蔽,也不應带 noindex,否則信号之間會打架。
  • 多語言站点中,hreflang 使用的地址和 canonical 要能對得上,別一套指向 A、一套指向 B。
  • 镜像站或备用域名做跳轉时,canonical 與跳轉目标保持一致,別一邊跳一邊声明另一個地址。

排查时從哪里入手

  1. 從抓取日誌里看搜尋引擎實际訪問的地址,再和頁面里声明的 canonical 做對比,找出明顯不一致的栏目。
  2. 抽查各栏目模板,確認没有统一的错誤 canonical,尤其是改版後新上线的模板。
  3. 观察搜尋结果中展示的地址,是否出現大量非预期域名或參數地址。這只是參考,不能作為唯一依據。
  4. 改版、換域名、栏目合並时,先梳理 canonical,再處理跳轉和 sitemap,顺序反了容易留下尾巴。
canonical 是建议,不是强制指令。但把它当成指令来寫,通常比把它当成装饰来寫要安全。

這份自查不需要一次做完。選一個栏目,把模板、分頁、參數三種情况各抽几個頁面看一遍,通常就能發現一批共性問题。發現之後優先改模板,而不是逐頁手工修补,否則下一次上新還會重复同样的错誤。