canonical 管的是内容代表,不管链接解析
先把两件事拆开看:一是链接发现,搜索蜘蛛抓到页面后会解析 HTML 里的 a 标签,把 URL 放进待抓队列;二是收录与信号归并,也就是这个 URL 值不值得留在索引里、权重算给谁。canonical 属于第二件事,它不会阻止搜索蜘蛛解析页面中的链接,也不会让其他 a 标签凭空消失。所以单从抓取链路看,入口页加 canonical 对目标 URL 能否被发现,影响很小。
入口页 canonical 指向目标 URL,通常会发生什么
等于在告诉搜索引擎:这份内容请以目标 URL 为准。常见结果有几种:
- 入口页仍会被抓取,里面的链接照样被解析。canonical 不是 noindex,也不等于阻止抓取。
- 入口页可能不再单独出现在索引里,或者索引中那一份被替换成目标 URL。对只做链接中转的入口页来说,这通常无所谓。
- 如果目标 URL 本身内容单薄,或者两边内容差异明显,canonical 只会被当成提示,搜索引擎可以选择忽略。
要注意反向操作:如果目标 URL 反过来 canonical 到入口页,等于把信号指回了中转页,方向就错了。
三种常见写法的差别
- 自指 canonical:指向入口页自己。适合页面内容相对独立、希望也能被索引的情况,冲突最少。
- 跨 URL canonical:指向目标 URL。适合入口页与目标是同一份内容的镜像或聚合场景;跨域名时只是建议。
- 指向同域聚合页:一批入口页内容高度重复时,指向一个主页面可减少重复索引,但别把整批页面都指到一个空白页上。
跨域 canonical 的现实问题
入口页在 A 域、目标在 B 域时,跨域 canonical 属于弱信号。此时更值得关注的是:
- 两个域名是否都能正常抓取,robots.txt 有没有互相挡住路径;
- 目标 URL 是否返回 200 且内容可读,不能是空壳或需要登录才能看到;
- 入口页里的链接是否用了可抓取的 a 标签,而不是 onclick 或 iframe 包裹。
这几项没做好,canonical 写得再规范也只是纸面工作。
怎么验证有没有按预期生效
- 看抓取日志:入口页被访问后,同一来源 IP 段是否在随后一段时间内请求了目标 URL;
- 查看入口页返回的 HTML,确认 canonical 用的是绝对 URL,协议和域名写法前后一致,避免 http 与 https 混用;
- 如果用了站点地图或后台的 URL 检查工具,观察规范网址那一栏指向的是谁;
- 留意入口页是否显示为重复网页、未选为规范网页——在只做链接中转的场景下,这属于正常现象。
实用建议
如果入口页的主要职责是让搜索蜘蛛发现并走到目标 URL,优先把链接可抓取、页面可访问、响应稳定这三件事做好,canonical 的优先级靠后。确需使用时:入口页尽量自指,避免整批页面统一指向外站;确需跨域归并时,只对内容确实一致的页面使用,并留出观察周期再决定是否保留。
canonical 影响的是这份内容算谁的,不是链接能不能被走到。把两件事混为一谈,排查收录问题时容易找错方向。