canonical 标签大多由模板自动输出,装好 CMS 之后很少有人再回头看它。平时站点不出问题,但一旦改版、换域名、上线筛选参数,这个标签就可能把一批页面指向另一个地址。自查的目的不是追求完美,而是确认每个页面声明的是不是自己。
第一步:确认 canonical 指向的是当前页面
判断标准很直接:页面里的 canonical 地址,应当与浏览器地址栏中那个规范、希望被访问的地址一致。可以逐项对照:
- 协议:HTTPS 页面的 canonical 不要写成 http,否则等于告诉蜘蛛还存在一个明文版本。
- 域名:带 www 与不带 www 只能保留一个,全站统一。
- 路径:结尾斜杠、大小写、默认首页写法要保持一种形式。
- 参数:追踪参数、会话 ID 不应该出现在 canonical 里。
分页与列表页最容易出问题
- 分页:第 2 页之后的 canonical 指向哪里,全站要一致。有的站点让每页指向自己,有的统一指向第一页,两种思路各有取舍,但不要一半指向自己、一半指向第一页。
- 筛选页:颜色、价格、排序等参数组合会生成大量地址。要么让这些页面 canonical 到无参数的栏目页,要么用 robots 规则限制抓取,注意两种做法不要互相矛盾。
- 标签与聚合页:内容单薄时可以考虑指向主栏目,但先确认这些页面确实没有独立价值,别顺手把所有聚合页都指走。
几个高频错误场景
全站模板写死一个地址
主题或模板里硬编码了首页的 canonical,结果每个页面都在声明自己是首页。这类问题通常出现在换主题、改版之后,用浏览器查看源码就能发现。
详情页指向栏目页
部分程序在文章页输出了所属栏目的 canonical,本意是合并权重,实际等于让蜘蛛忽略文章本身的地址。除非确实要做内容合并,否则不要这么做。
移动端与桌面端互指
如果站点有独立的移动域名,canonical 一般指向桌面版地址,移动版自身不要再指向自己,两套规则同时存在会让判断变乱。
多语言版本用错
语言版本应各自 canonical 到自己,再用 hreflang 互相标注。把英文页 canonical 到中文页,等于主动放弃英文页面的独立地址。
canonical 是建议而不是指令,蜘蛛会结合页面内容和其他信号做判断。写错不等于页面一定不被收录,但会让判断变复杂,也会让你排查问题时多绕几圈。
自查怎么落地
- 从栏目页、文章页、分页、筛选页、移动版各抽几条地址,用浏览器查看源码里的 canonical。
- 用抓取工具批量跑一遍,导出每个地址与其 canonical 的对照表。
- 筛出 canonical 与自身地址不一致的行,逐条判断是刻意设置还是模板错误。
- 修改模板或规则后,重新抓取一批地址确认输出正确。
- 过几周再看服务器日志和站长平台的抓取数据,确认没有明显异常波动。
改完之后别急着下结论
canonical 的调整不会立刻反映到抓取和收录上,通常需要一段时间。期间尽量不要再叠加其他大改动,否则很难判断是哪一步起了作用。如果只是修掉了明显的模板错误,保持观察即可,不必因为短期数据波动就来回改回去。
把这项自查放进改版清单里,每次换主题、换域名、上线新栏目时顺手过一遍,比事后猜原因要省事得多。