改版或迁移时,canonical 要核对的核心是:每个仍可访问的旧 URL 是否明确指向当前希望被索引的新 URL,并且新 URL 自身的 canonical 指向自己。若旧页返回 301,canonical 通常不是最优先问题;若旧页返回 200 且内容与新页重复,canonical 才成为主要控制手段。
下面用一个假设例子展开。假设某站点把 /old-guide 迁移到 /new-guide,旧页仍返回 200,页面模板却继续输出 <link rel="canonical" href="/old-guide">。这会让搜索引擎收到矛盾信号:页面内容已搬家,但页面自己声明规范版本仍是旧地址。核对时不能只看新页,必须同时看旧页、新页、跳转和站点地图。
逐个抽样旧 URL,记录它当前返回的状态码、页面正文是否还在、canonical 指向哪里、是否出现在站点地图中。常见组合如下:
这里的关键判断是:canonical 是页面级提示,不是跳转指令。它适合处理重复内容归并,不适合替代 URL 迁移。若旧页已经不再需要,301 通常比让旧页 200 再 canonical 更直接。
打开页面源代码,搜索 canonical,逐项核对以下内容:
https://example.com/new-guide,避免模板拼接出错。https 还是 http,是带 www 还是不带,是否与当前首选主机一致。/new-guide 与 /new-guide/ 可能被视为不同 URL,迁移前后要保持一致。一个可执行的检查方法是:抽取旧站和新站各 20 个代表性 URL,用表格记录旧 URL、状态码、canonical、新 URL、新 URL 的 canonical。若同一行出现“旧页 200、canonical 指向旧页、新页也存在”,就是需要修复的矛盾项。
迁移时最容易出现的错误有:旧页全部 301 到首页;新页 canonical 仍指向旧域名;站点地图只提交新 URL,但旧 URL 仍可访问且未处理;模板把 canonical 写成相对路径,导致子目录页面指向错误位置。还有一种情况是旧页被 robots.txt 禁止抓取,同时又在页面里写 canonical。抓取被禁止后,搜索引擎可能无法读取该 canonical,robots.txt 的限制也不等于可靠的索引移除。
另一个常见错误是只看新页 canonical,忽略旧页。若旧页仍返回 200,且没有 canonical 或跳转,搜索引擎可能继续把旧页当作独立页面处理。此时应优先决定:旧页是保留、跳转还是移除。决定后再配置对应信号,而不是先批量加 canonical。
建议按以下顺序执行,每一步都留下可复查的记录:
如果旧页已经 301 到新页,而新页 canonical 指向自身,这通常就是清晰状态。如果旧页 200、内容重复、canonical 指向新页,也可以接受,但要确认新页没有被 noindex 或 robots.txt 阻止抓取。HTTPS 只说明传输层加密,不保证页面安全无漏洞,也不保证排名。
下一步:从旧站导出 URL 清单,按“保留、跳转、归并、移除”四类标记,再逐类核对状态码与 canonical。先处理返回 200 且内容重复的旧 URL,因为它们最容易与 canonical 配置冲突。