蜘蛛池知识

蜘蛛池入口页的 canonical:指向自己、指向目标页还是不加

蜘蛛池入口页常因模板复用被判为高度相似,canonical 该指向自己、指向目标页还是干脆不加,会直接影响入口页的角色定位。本文拆解三种做法的实际差别、五个常见误用,以及用抓取日志判断当前设置是否合理的方法。

蜘蛛池知识

蜘蛛池入口页的 canonical:指向自己、指向目标页还是不加

为什么入口页总会碰到 canonical 这个问题

蜘蛛池的入口页通常有两个特点:数量多、模板同源。同一套 HTML 换个标题和少量正文就批量生成,参数、路径层级、大小写变体也可能同时存在。这类页面在搜索引擎眼里很容易被归到高度相似的一类里,而 canonical 正是用来表达:这些相似页面中,哪一个是我认可的正式版本。

所以入口页要不要写 canonical、写什么值,本质上是在回答一个问题:你希望搜索引擎把入口页当成独立内容页,还是当成通往目标页的中间层。

三种常见做法的实际差别

1. canonical 指向自己

适合入口页有独立正文、希望它作为单独页面存在的情况。自指相当于声明我就是这个页面的标准版本,能避免同一路径带上不同参数时被拆成多个版本。

但要注意:自指并不解决页面之间的相似问题。如果 A、B、C 三个入口页除了标题几乎一样,每个都自指,搜索引擎仍然可能自行判断它们是重复内容,只保留其中一个。

2. canonical 指向目标页

这是把入口页当作渠道页时最常用的做法,信号会往目标页集中。代价是入口页本身基本不会被当成独立页面保留,它只承担被发现和传递信号的角色。

有两个前提值得先确认:一是入口页与目标页的主题是否真的相关,差异太大时 canonical 有可能被忽略;二是如果入口页已经用 301 或 JS 跳到目标页,再叠一个 canonical 意义就不大了,反而让信号变得混乱。

3. 不写 canonical

把判断权完全交给搜索引擎。对参数较多、结构本来就零散的入口页,这种做法很常见,结果通常是搜索引擎自己挑一个版本。问题是这个过程不可控,入口页越多,被归并、被忽略的比例就越难预估。

几个容易踩的坑

  • 所有入口页的 canonical 都指向首页。这是最常见的误用。批量生成的页面全指向一个首页,等于告诉搜索引擎这些页面都是首页的副本,入口页也就失去了作为独立 URL 的意义。
  • 一个页面写了多个 canonical。出现两个及以上时,搜索引擎通常会全部忽略,等于白写。
  • 用相对路径。建议写成完整的绝对 URL,避免因为协议或域名变体解析到意料之外的地址。
  • canonical 与 noindex 同时出现。两者表达的是相反的意图,同时存在时结果往往不是你想要的那个。
  • 靠 JS 延迟注入。canonical 直接输出在 head 里最稳,等脚本执行再插入,抓取时可能读不到。

怎么判断现在的设置是否合理

不用猜,看两件事就够了。

  1. 抓取日志里,canonical 指向的那个 URL 有没有被持续访问。如果入口页被频繁抓取,而 canonical 指向的页面几乎没有记录,说明这个信号可能没有被采纳。
  2. 入口页和它的 canonical 目标,内容是否真的能对应上。内容无关的 canonical,长期看更像是一种自我安慰。
canonical 是一个建议,不是命令。它能不能被采纳,取决于页面内容本身是否支持这个判断。入口页模板化程度越高,canonical 能起到的作用就越有限。

一个简单的选择顺序

  • 入口页只为让蜘蛛发现目标 URL、内容单薄,可考虑指向目标页,同时接受入口页不保留在索引里。
  • 入口页有独立正文、打算长期维护,用自指,并尽量让每个页面的正文有实质差异。
  • 入口页是参数变体、同一内容多种 URL,选一个主版本,其余指向它。
  • 拿不准就先不加,观察一段时间日志再决定,比批量写错再回滚要省事。

最后提醒一句:canonical 处理的是版本选择问题,它不会让入口页数量带来的效果成倍增加,也不能替代内容本身的差异。把入口页做得更像正常页面,canonical 才有讨论的余地。