跳至正文
WordPress 与 WooCommerce · Google SEO

WordPress 用 canonical 时的三个常见错误

// / / 光算科技

用 canonical 的人,十有八九是带着"配了就会好"的期待去的。但官方文档的第一句就否掉了这个前提:这几种指定规范地址的方法,一样都不是必需的,不指定你的站大概也没问题。它给出的只是信号的强弱排序,以及几条明确写着的"不要这样做"。

所以这一篇不讲 canonical 有多少好处,只讲三个能直接对照官方口径查出来的错误。涉及 WordPress 自身行为的部分引官方文档,涉及搜索与索引的判断只引 Google 官方文档。

官方把方法排了序,但没有一条说"必须用"

Google 在关于如何指定规范 URL 的说明里按影响力从高到低列了三种方法:重定向是强信号,rel="canonical" 是强信号,把地址写进站点地图是弱信号;几种方法可以叠加,叠加会让搜索更可能采用你指定的版本。同时它写明,如果不指定规范地址,Google 会自己判断哪个版本客观上最好。

这句话必须放在最前面,否则后面三个错误都容易做过头。

三个常见错误

错误官方口径改法
拿 noindex 当 canonical 用不推荐用 noindex 阻止某页被选成规范页,因为它会把整页挡在搜索之外合并地址用重定向,指向代表页用 rel="canonical"
同一页给出两个规范地址不要用不同做法为同一页指定不同的规范地址,例如站点地图一套、rel="canonical" 另一套全站只保留一个说法,并保证与站内链接一致
只在重复页标注、其余交给脚本官方建议在规范页自身也加一条自指的 canonical,并尽量在 HTML 源码里输出、不要让脚本改写它规范页加自引,绝对路径,检查渲染后有没有被覆盖

第三个错误还有两个变体值得单列。官方不推荐用相对路径写 rel="canonical",理由是虽然受支持,但长期可能出问题(例如不小心让测试站被抓到);另外,带 hreflang、lang、media、type 属性的 canonical 标注会被忽略,不能拿它当"备用版本声明"用。

三个 canonical 错误按症状与官方口径一一对照,判断点是规范地址在全站是否只有一个说法
原创示意:图中为三个 canonical 错误与官方口径的对照,不是真实后台截图或数据。

WordPress 站上的配置清单(怎么做)

  1. 先定一件事:这个站里哪一页是某一组重复地址的代表页,理由写下来。
  2. 让其它地址返回跳转指向它,能确定"原件"的动作优先于加标签。
  3. 在代表页的 head 里加一条自指的 rel="canonical",写完整绝对地址。
  4. 把站内所有指向这组内容的链接改成指向代表页,包括菜单、侧栏、文章正文里的相关链接。
  5. 检查站点地图里列的是不是同一批地址,不一致就以代表页为准。

第 4 步的依据来自 Google 在关于链接如何被抓取的说明:站内链接应指向你认为的规范地址,这有助于 Google 理解你的偏好。第 5 步的依据在关于站点地图的说明里,它提醒站点地图只是帮助发现地址,并不能保证里面的每一项都被抓取和索引,所以它给的是弱信号,不能当成声明。

如果不确定外部链接到底落在哪一版上,可以对着canonical 和外链指向的 URL 有什么关系一起看,一条链接算一条还是多条那篇则适合处理变体计数口径,一条链接算在站点级还是页面级可以帮你把两件事分开讨论。

什么情况下不必碰 canonical

四种情况可以不动。你的站里根本没有一组重复地址;重复的那几份是历史遗留、访问量可以忽略;合并它们需要改动的位置比你想象的深(比如牵动导航逻辑或外部系统);以及你更想用重定向这种更确定的方式处理。注意这些都是判断,不是官方要求 —— 官方既没有规定必须有 canonical,也没有规定必须没有。

还要说清楚这份文档没有说的话:它没有说用了 canonical 之后多久生效,没有说它能提升排名,也没有说它会必然把信号完全合并到某一页。任何人给你一个"几天见效"的数字,都不是出自这份文档。

怎么核对标注结果

逐条查三件事:规范页的 head 里有没有自指的 canonical,且是绝对地址;重复页有没有指向同一页而不是指向自己;渲染完成之后这个标签有没有被主题或插件改掉。判断依据仍然是最终响应里出现的内容,不是模板代码里写了什么。

官方文档明确写过的两条边界可以直接当验收标准:rel="canonical" 元素只有出现在 HTML 的 head 里才被接受;如果你同时用 link 元素和 HTTP 响应头标注,却给了两个不同地址,官方说这更容易出错。核对完把结果记成一张表,标注地址、来源(主题、插件、手工)、上次核对日期,下次改版时这张表能直接用。