网站收录

canonical 指向了别的 URL:页面一直不进索引的一种常见原因

rel=canonical 本来是用来指定同一内容的首选地址,但很多站点在模板里把它指到了列表页、上级栏目甚至别的域名,结果等于主动把收录信号让了出去。本文梳理 canonical 指错的几种典型情况、自查顺序,以及什么情况下不该急着加这个标签。

网站收录

canonical 指向了别的 URL:页面一直不进索引的一种常见原因

有些页面内容写得完整,内链也有,蜘蛛日志里能看到抓取记录,但过了一两个月在索引里就是找不到。排查模板时经常能看到同一个问题:页面的 rel=canonical 指向了另一个 URL。这相当于在告诉搜索引擎“这一页不是正主,请去看那一页”,收录信号自然就被让出去了。

canonical 在收录链路里做的是什么

需要先分清一件事:canonical 不是用来决定“收不收录”的开关,它表达的是“这一组内容相近的 URL 里,我认为哪一个才是代表”。搜索引擎会把它当作一个较强的参考信号,但最终仍会结合内容、内链、外链、历史表现等因素自己判断。

正因为它是参考而非命令,所以用错的后果往往是渐进的:一开始可能还照常收录,等搜索引擎确认了你的指向,才慢慢把这一页合并到目标 URL 上。运营端看到的现象就是“这页越来越难搜到,索引里也查不到了”。

指向错的几种典型情况

列表页的全部分页都指向第一页

分类页、文章列表页在模板里统一输出 canonical,值写成不带分页参数的主地址。第 2 页、第 3 页上的每一条内容都带着“我是第一页”的信号,这些分页本身很难被单独收录,翻页里独有的那部分内容也就不容易被索引到。

带参数的页面全部指向无参数版本

筛选、排序、跟踪参数这类 URL,如果全部 canonical 到干净地址,在参数只是排序变化时是合理的;但如果参数决定了完全不同的内容集合,比如不同城市的列表、不同规格的商品,统一指向就会让这些页面互相挤压,最后只留一个。

模板里写死了一个示例地址

改版或套用主题时比较常见:canonical 的地址被硬编码成某个示例页,所有页面都指向它。这种错误覆盖面最大,也最难从单个页面上看出来,通常要抽查多个不同栏目才会发现。

把内容指向了站外

有的站点因为内容同时发布在别处,就在自己页面上 canonical 到对方域名。这等于主动放弃这一页作为首选地址,如果对方站点并不稳定,最终可能两边都拿不到应有的收录。

多语言、多地区版本互指混乱

语言版本之间应该用 hreflang 互相说明,而不是用 canonical 互指。把英文页 canonical 到中文页,会让英文版本失去独立收录的机会。

自查时按什么顺序看

  1. 先抽查三类页面:首页、一个栏目列表页、一篇内页。看它们的 canonical 是否指向自己。
  2. 再看分页和带参数的 URL,确认指向的对象和内容集合是否匹配。
  3. 检查是否有多个 canonical 标签同时出现,这种情况通常会被整体忽略。
  4. 确认 canonical 指向的地址本身可访问,返回正常状态码,不是 404 或跳转链。
  5. 核对它和 noindex、robots.txt 之间有没有互相矛盾:一个说别收录我,一个说以我为准。

不是所有页面都该急着加 canonical

如果站内每一个 URL 的内容本来就各不相同,页面上又没有真正重复的版本,自引用的 canonical 是安全做法,但加上一层指向别处的标签反而增加出错概率。以下几种情况更适合先别动:

  • 页面内容独立,没有对应的重复版本;
  • 两个页面只是主题相近,目标关键词和正文并不重合;
  • 还在测试 URL 结构,地址随时可能调整。
判断要不要合并,先问一句:如果只留其中一个地址,用户和搜索引擎看到的东西会不会变少?如果会变少,就不该合并。

改回来之后怎么观察

把错误的 canonical 修正为自引用或正确的目标地址后,不要期待第二天就看到变化。可以先在抓取日志里确认这些页面重新被访问,再通过站内搜索、内链锚文本等方式给它们补一些入口。索引的合并和拆分本身需要时间,通常按周观察比按天观察更靠谱。

同时留意一件事:如果这些页面之前被合并到了别的 URL 上,现在拆开,等于重新让搜索引擎认识两个独立的地址,短期内表现可能会有波动,属于正常范围。修 canonical 的目标是让信号和页面结构保持一致,而不是短期内让收录数字变好看。