站点运营

站点运营:canonical 自查,把规范地址指对地方

canonical 写起来只有一行,却直接影响页面以哪个地址被收录。本文梳理几种常见的写错方式,比如全站写死同一个地址、指向已失效地址、与 noindex 冲突、分页页面全部指向第一页等,并给出一份可顺序执行的自查清单,以及改完之后该怎么观察验证,供日常维护和改版时参照。

站点运营

站点运营:canonical 自查,把规范地址指对地方

做站点运营,canonical 是一个写起来只有一行、但影响面不小的标签。它本质上是在说明:这一组内容相近的地址里,站点认可哪一个是主版本。写对了,可以避免多个地址互相争夺同一个页面的展示机会;写错了,可能把本来正常的页面直接合并掉。

canonical 解决的是什么问题

同一个页面,往往会有多个可达地址。带 www 和不带 www、带结尾斜杠和不带、加上跟踪参数、大小写不同、打印页版本、分页后的第一页……这些地址打开的可能是同一份内容。如果不给提示,搜索引擎需要自己判断哪一个是主版本,过程里既有不确定性,也占用抓取资源。canonical 就是把这份判断明确下来。

常见的几种写错方式

  • 全站写死同一个地址。模板里硬编码了首页地址,结果所有页面都在声明主版本是首页,这等于主动要求别人只认首页。
  • 指向已经 404 或重定向的地址。规范地址本身必须可访问,指向一个失效地址,信号就断了。
  • 相对路径写错层级。用相对路径不算错,但在多层目录、带参数或做过 URL 重写的站点里,容易解析成意料之外的地址,改成绝对地址更稳妥。
  • 与 noindex 同时出现。一个页面既说别收录我,又说主版本是我,两个信号互相矛盾,最终处理结果往往不是运营想要的那个。
  • 分页页面全部指向第一页。列表第一页和第三页内容并不相同,把后几页都规范到第一页,等于放弃了这些页面上的条目入口。
  • 多语言版本互相指定。不同语言版本是各自独立的页面,不属于重复内容,应该用 hreflang 处理,而不是 canonical。

自查可以按这个顺序走

  1. 随机抽取 20 到 30 个不同类型的页面:首页、栏目页、详情页、列表分页、带参数的筛选页,逐个查看源码里的 canonical。
  2. 把抽取到的规范地址在浏览器里打开,确认返回 200,并且内容与当前页面一致。
  3. 确认规范地址是绝对地址,协议、域名、路径与站点当前主域名完全一致,不要混用 http 与 https。
  4. 检查是否存在自我引用:独立的正常页面,canonical 应该指向自己。这是最简单、也最容易被模板改坏的检查项。
  5. 把 canonical 指向的地址与站点地图、内链里使用的地址对照一遍,尽量全站统一成同一种写法。
  6. 整理一份例外清单:分页页、筛选页、打印页、多语言页分别怎么处理,写进模板规范,避免每次改版重新讨论。
如果暂时拿不准某个页面的规范地址该怎么定,宁可先让它自我引用,也不要把一批页面统一指向一个不相关的地址。缺少提示只是让搜索引擎自己判断,指向错误则是明确的误导。

和其他信号配合着看

canonical 不是孤立的。重定向负责把旧地址永久送到新地址,canonical 用于内容相同但地址并存的场景,站点地图提交的是希望被收录的地址,内链决定蜘蛛实际走哪条路径。这几处如果各自指向不同的写法,搜索引擎只能按自己的理解取舍,结果通常和运营预期有差距。

改完怎么验证

调整之后不要只看当天。可以观察抓取日志里规范地址与被规范地址的抓取频次变化,观察搜索结果中展示的地址是否逐步收敛到指定的版本。这个过程通常以周为单位,期间尽量不要再反复改动,否则等于不断给出新信号,前后都无法评估效果。

最后提醒一点:canonical 是建议,不是命令。它有用,但前提是页面本身内容清晰、地址可访问、站点结构没有更严重的矛盾。把这几件事做顺,canonical 才能真正起到它该起的作用。