站点运营

站点运营: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 是建议,不是强制指令。但把它当成指令来写,通常比把它当成装饰来写要安全。

这份自查不需要一次做完。选一个栏目,把模板、分页、参数三种情况各抽几个页面看一遍,通常就能发现一批共性问题。发现之后优先改模板,而不是逐页手工修补,否则下一次上新还会重复同样的错误。