rel="canonical"是告诉搜索引擎该页面的权威原始版本URL,必须置于<head>中、使用绝对URL且仅一个,目标页须返回200状态码、内容高度一致,不可与noindex混用。

link标签的rel="canonical"是用来干这个的
如果你希望告诉搜索引擎“这篇文章的原始权威版本在哪儿”,link 标签的 rel="canonical" 是唯一被广泛支持的标准方式。它不改变用户看到的内容,也不影响页面跳转,纯粹是给爬虫和聚合系统看的信号。
必须放在<head>里,且href得是绝对URL
常见错误是写成相对路径或漏掉协议。浏览器和搜索引擎对 rel="canonical" 的解析很严格:
-
href值必须是完整 URL(比如https://example.com/article/123),不能是/article/123或./article/123 - 必须出现在
<head>内,放在<body>里会被忽略 - 同一页面只能有一个
rel="canonical",多个会失效或被随机取一个
当页面有多个URL变体时才真正需要它
比如你通过参数分页、UTM追踪、HTTPS/HTTP混用、www/non-www 等方式生成了多个可访问的相同内容页面,这时 rel="canonical" 才起作用。单纯“想标一下出处”但全文只有一处发布,其实不需要加——加了反而可能让搜索引擎误判为重复内容。
示例(正确):
立即学习“前端免费学习笔记(深入)”;
<link rel="canonical" href="https://blog.example.com/post/how-to-use-canonical">
示例(错误):
<link rel="canonical" href="/post/how-to-use-canonical">
<link rel="canonical" href="http://blog.example.com/post/how-to-use-canonical">
(注意:如果主站强制 HTTPS,这里却用 http://,可能被降权)
别和meta robots或noindex混用
如果页面本身加了 meta name="robots" content="noindex",那 rel="canonical" 就失去意义——搜索引擎根本不会索引它,也无从判断“哪个是原始”。反过来,如果你希望保留当前页索引,只是声明“原始出处在此”,就不要加 noindex。
另外,rel="author" 或 rel="license" 都不表示“原始出处”,它们语义完全不同,不能替代 rel="canonical"。
真正容易被忽略的是:canonical URL 必须能返回 200 状态码且内容主体与当前页高度一致。如果指向一个 404 页面,或者返回的是登录页、重定向链过长,搜索引擎会直接忽略该声明。



















