canonical 标签的作用是告诉搜索引擎:这一组相似页面里,哪个 URL 是主版本。它表达的是偏好,不是命令。理解这一点,后面的很多问题就顺了。
canonical 不是收录开关
不少人把 canonical 当成让页面进索引的按钮,其实它只处理一件事——重复 URL 的归并。页面能不能进索引,还要看内容质量、抓取情况、是否被 noindex 或 robots.txt 挡住。canonical 指向别人,也不代表当前页面一定不会出现在结果里,只是搜索引擎在判断主版本时多了一条参考。
三种常见指向,结果差别很大
指向自己(自指)
每个页面都写一个指向自身 URL 的 canonical,是常见做法,属于明确表态:我就是主版本。对规范 URL 有帮助,尤其是容易生成带参数版本的站点。要注意自指地址要和最终可访问地址一致——https 与 http、带 www 与不带 www、结尾有没有斜杠,至少内链和 sitemap 要统一。
指向同站另一个页面
常见于分页、筛选页、打印版和多域名镜像。指对了,信号会向主版本集中;指错了,比如 A 的内容比 B 更完整却把 A 指给 B,长尾词可能就落在 B 上,原本想推的 A 反而没机会。判断标准不是哪个 URL 更好看,而是哪个页面是用户真正需要的那一版。
指向失效或不存在的地址
canonical 指向 404、指向已下线的 URL、指向被 robots.txt 屏蔽的地址,都属于无效信号。搜索引擎会忽略它,然后自行判断主版本,结果可能和你预期不同。改版或合并内容时,如果只把 canonical 改掉却没保留可访问的目标,很容易出现信号丢了、页面还在的状态。
和 noindex、robots.txt 别打架
- 重复页写了 noindex、canonical 指向主版本——通常问题不大,但要确认 noindex 没有误写在主版本上。
- robots.txt 屏蔽了 A,A 的 canonical 指向 B——被屏蔽的页面抓不到,canonical 也读不到,等于没写。
- 两个页面互相 canonical——搜索引擎会忽略这类循环,自己判断。
canonical 是建议,不是指令。它能减少歧义,但不能替代 URL 规范、内容整理和内部链接的统一。
自查顺序
- 先确认页面的最终 URL:是否发生重定向,是否存在多个可访问版本。
- 对比两版内容是否真的高度相似,只有相似才需要归并。
- 检查 canonical 地址是否可访问、是否返回 200,且与 sitemap、内链一致。
- 确认主版本自身没有被 noindex、没有被 robots.txt 挡住。
- 观察一段时间,看索引里留下的地址是否与预期一致。
抓取和收录是两件事,canonical 也只在页面已被抓取、内容足够相似的前提下才发挥作用。把它当成 URL 规范链条里的一环,而不是单独的解药,处理起来会清楚很多。