站点跑一段时间之后,同一个页面往往能用好几条地址打开。带 www 和不带 www、有没有结尾斜杠、参数顺序调换一下、大小写不同,都可能指向同一份内容。对访问者来说这没什么差别,对搜索引擎来说却是多个候选入口。canonical 标签的作用,就是在页面里明确写出「主地址是哪一条」。
先弄清楚哪些页面容易出现重复地址
不是所有页面都需要逐个检查,先按类型排查效率更高:
- 首页:www 与非 www、是否带 index.html、HTTP 与 HTTPS 并存。
- 列表页:翻页地址、排序参数、每页条数参数。
- 活动与推广页:带跟踪参数的分享链接。
- 站内搜索页与筛选页:多个参数组合出来的地址。
- 打印版、分享版、历史遗留的旧模板地址。
自查的具体步骤
- 抽样挑选页面:首页、栏目页、文章页、列表翻页、带参数的页面各取几条。
- 查看源码中的 canonical:应位于 head 内,取值建议是含协议与域名的绝对地址。
- 打开 canonical 指向的那条地址:能否正常访问、返回是否正常、内容是否与当前页一致。
- 对比多端输出:PC 模板、移动模板、不同语言版本是否给出同一个值。
- 检查自指情况:主地址页面自身的 canonical 一般应指向自己。
- 记录异常:列出页面地址、问题描述、处理方式和复查时间,不要只靠记忆。
容易踩的几类问题
- canonical 写成相对路径,换目录后指向就错了。
- 指向的地址本身已经跳转或不存在,等于把主地址指到了一个空位。
- 同一页面输出了多条 canonical,让人无从判断。
- 模板批量生成时变量写错,全站都指向首页。
- 改版换域名后,旧域名或旧目录的取值没有同步更新。
- 列表翻页页全部 canonical 到第一页,导致后续内容不易被发现。
和 301 跳转、站点地图怎么配合
canonical 是一种提示,301 是更明确的态度。如果一条地址确定不再使用,直接做 301 更干净;如果多条地址都需要保留,比如带参数的分享链接仍要能打开,用 canonical 更合适。站点地图里最好只提交主地址,避免把同一份内容反复递交。三者各管一段,先定规则再动手,比事后补要省事得多。
判断标准其实很简单:你希望用户和搜索引擎记住哪条地址,canonical 就写哪条。如果自己都犹豫,说明地址规范还没定下来。
把规则固定下来
每次改版、换域名、调整模板之后,都把 canonical 拉出来复查一遍。可以维护一张简表:页面类型、主地址规则、canonical 写法、负责人。规则写得越清楚,后面越少临时救火。抽查时优先看模板层面,一处改动往往能覆盖成百上千个页面。
canonical 不会立刻带来什么明显变化,但它能减少同一份内容被反复抓取、权重被分散的情况。花半小时抽查一轮,通常就能发现几个一改就好的模板问题。