canonical标签的作用和使用方法

canonical标签是页面html代码head部分的一个标签,2009年2月由搜索引擎们推出,主要用于解决网址规范化问题。

什么是网址规范化问题?

网址规范化一直是困扰站长以及搜索引擎的一个问题。据估计,网上有10%-30%的URL是内容相同但URL不一样的不规范化网址。

这就造成几个问题。比如:

  • 对站长来说,多个URL存在分散了页面权重,不利于排名。
  • 对搜索引擎来说,浪费资源,浪费带宽。
  • 搜索引擎发现多个网址内容相同时,不会惩罚,而会尽可能找出那个应该是规范化的网址。但程序毕竟只是程序,可能出错,挑出来的可能不是站长想要的那个规范化网址。
  • 网站上网址规范化问题太严重的话,也可能影响收录。一个权重不很高的域名,能收录的总页面数字是有限的。搜索引擎把资源花在收录不规范的网址上,留下给真正不同内容的资源就减少了。

要解决URL规范化问题也有很多选项,比如:

  • 使用301转向,把不规范化URL全部转向到规范化URL
  • 确保使用的CMS系统只产生规范化网址
  • 确保网站上所有站内链接都指向规范化网址
  • 外部链接尽量指向规范化网址
  • 在提交给搜索引擎的sitemap.xml网站地图中只提交规范化网址
  • 英文网站的话,在Google管理员工具中设置首选域

但这些方法都各有局限。

  • 有的网站因为某种原因做不了301转向
  • CMS系统大部分情况下不受自己控制
  • 内部链接自己可以控制,但其他人链接到自己网站上就不受控制了

总之,虽然有解决方法备选,但网址规范化到目前为止还是个不小的问题。

Canonical标签的使用方法

2009年2月,Google,雅虎,微软共同发布了一个新的标签canonical tag,用于解决网址规范化问题。刚开始推出时百度没参与。但大约2013年时百度也明确支持canonical标签。

简单说,就是在HTML文件的头部加上这样一段代码:

<link rel=”canonical” href=”http://www.example.com/product.php?item=swedish-fish” />

意义就是这个网页的规范化网址应该是:

http://www.example.com/product.php?item=swedish-fish

下面这些URL都可以加上这段代码:

http://www.example.com/product.php?item=swedish-fish&category=gummy-candy

http://www.example.com/product.php?item=swedish-fish&trackingid=1234&sessionid=5678

这些URL的真正规范化网址就都成为:

http://www.example.com/product.php?item=swedish-fish

简单说,这个标签相当是一个页面内的301转向。区别在于用户并不被转向,还是停留在不变网址上,而搜索引擎会把它当作是301转向处理,也就是说把页面链接的权重都集中到代码中指明的规范化网址上。

Canonical标签的一个优点是方便,可以直接写在页面html代码中,不用服务器端设置转向之类。某些情况下,部分站长可能无法设置转向,但html代码总是能控制的。

Canonical标签的作用和细节

另外有几个细节站长需要注意:

  • 这个标签只是一种建议或暗示,而不是指令,它不像robots文件那样是个指令。所以搜索引擎会很大程度上考虑这个代码,但并不是百分之百,还会考虑其他情况来判断规范化网址。这也防止站长有可能把网址弄错。
  • 这段代码既可以使用绝对地址,也可以使用相对地址。通常还是建议使用绝对地址比较保险。
  • 指定的规范化网址上的内容,与其他使用这段代码的非规范化网址内容可以有一些不同,不一定完全一样。比如在电子商务网站上有很多按价钱、颜色,、尺寸升降排序,生成的URL全都不一样,但内容大体相同,只有细小区别,就可以使用这个标签。
  • 搜索引擎会把带有同样canonical标签的页面权重集中到标签指向的那一个页面上。
  • 指定的规范化网址可以是不存在页面,返回404,也可以是还没有被收录的页面。但是不建议这么做,别没事找事。
  • 这个标签适用于同一个域名内,包括二级域名。也可以跨域名使用。所以可以在其它网站发布文章时加上。当然,这个在国内基本不现实。
  • 别把这个标签当救命草,首先还是得把网站结构做好,尽量避免出现URL规范化问题。这只是最后万不得已的方法。

敏感的人大概能从这个新标准里看到建立大量外部链接的机会。

------首次发布日期: 2009年02月18日

作者: Zac
版权属于: SEO每天一贴
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。



57 条评论 “canonical标签的作用和使用方法

  1. yahoo: The tag will be treated similarly to a 301 redirect, in terms of transferring link references and other effects to the canonical form of the page.
    如果这样,用它代替以前用robots.txt禁止duplicate content,可能效果要好了?

    在不能301,不宜禁止robots,URL形式复杂的网站,用它时行网址规范化很强有力。

  2. 别把这个标签当救命草,首先还是得把网站结构做好
    蛮压韵的….这个比较实用于大型网站,不能静态化URL, 并且结构复杂的网站.

  3. 这个非常有用,改版的时候有时候因为技术上的升级或结构的改变,就能可会对URL有所更改,有了这个就可以抛弃一些的没用,这个网站的URL的统一上更加便捷!

  4. 可能几个国际搜索引擎巨头暂时还不认为百度是国际化的搜索引擎,所以没把它也拉进来一起玩。很多它们支持的标签百度都不支持。

  5. 我想請問一下Zac: 你的博客上有使用 canonical tag 嗎?目前已經有 canonical 相關的 WordPress 插件,但是我不確定是否有安裝的必要。

  6. 楼主的标签很有用,回去试验下;
    最近我的网站就遇到了规范化的问题;开始用。com域名后来改.cn
    再后来,两个一起用,后来发现有人竟然喜欢用不带www的,结果一个网站有了4个域名,后来减少到一个带www的,后来流量减少许多;
    现在干脆废掉一个域名,做另外一个网站;
    最后的格局是com一个网站,cn一个网站;
    全都用www开头的做主站,不带www的都指向到带www的域名(不知道这是不是楼主说的301操作)
    总算规范了

  7. 使用.httaccess照Zac的教程规范网址, 总是会出各种各样的问题, 也不知为啥, 有时网址是规范了, 但google analytics跟踪有问题了, google那边回复说是由于网址做了转向, 还有一次更奇怪, 做了网址规范之后, 首页就无法访问了, 现在把.httaccess删了,不敢再用了….

    另还有个问题想请教, 我有个网站想通过.httaccess控制404 error页面, 但这个网站下有个wordpress的blog, 尽管我定义了.httaccess到网站根目录下的一个页面, 却始终都是跳转到wordpress下的404页面, 请问这个问题有解决办法吗? 我在一些wordpress论坛都发过帖子询问这个问题, 没得到答案, 谢谢

  8. Raymond还没摸清门路。
    .htaccess每个目录都可以有,没有是继承上级目录中.htaccess的设置。
    你说的问题都是.htaccess规则写得有问题,google analytics、wordpress没啥关系的。他们解决不了你的问题,找人看看htaccess规则就行了。

  9. 加飞: 嗯,没注意到还押韵呢 :-)

    Young: 我没有装,也不打算装。没什么严重问题,就不自找麻烦了。

    Raymond: 建议你问一下你的程序员。不同情况需要写的规则代码不同,很难有一定之规。

  10. Zac,我是你的新读者,这个标签的最终目的是达到网址规范化,是指加了该标签后,虽然用户通过不同规范的网址访问都被定义为访问改标签中的网址么,比如域名为www.abc.com,首页加标签,那么用户访问abc.com时也被认为在访问www.abc.com,从而不会造成权重分散?

  11. 我是虚拟主机做不了301转向,现在google收录的非www页面比带www的多了几倍!急啊!是不是在每个页面加入这段代码指向带www的页面就可以将非www页面的权重传递到带www的页面? –菜鸟

  12. “敏感的人大概能从这个新标准里看到建立大量外部链接的机会。” 是指制作WP小插件之类的工具来获得外部链接么?求证。。。。

  13. 在百度搜索关键词,发现子页面正文部分的内容都搜索不到,这是什么原因。我用了百度自动推送的接口。。。

  14. ZAC大神想问一下,关于canonical标签另一种使用场景,现在的都在讲精细化运营,我们网站会使用一写参数来标记此页面是通过哪个页面来的,这样,同一个URL就会有很多的动态链接样式的URL,这种情况是否可以使用canonical标签来实现页面权重集中起来呢?
    非常期待大神的解答

    1. 对规模不太大的英文网站,可以这样做。规模大的网站不建议,英文参数不同大的URL会浪费大量抓取份额。中文网站完全不建议这样做。你说的参数或标记估计是用于统计、分析,但流量分析系统并不需要参数来判断是通过哪个页面来的流量,看同一个用户/IP的访问页面前后顺序就行了。

      1. 感谢您的回复。URL添加的标记,主要是用来统计来源的,也就是用户点击上一个页面的哪里来到当前页面的,主要是给运营分析用的。如果canonical标签不能这样使用的话,对于网站现在的这种情况,就是一个静态URL会存在多个静态URL+参数的URL,且内容完全一致的情况下,可以用什么方法解决呢?实在是不知道要怎么办了,请大神指条明道~再次感谢

        1. 如果只是要知道从哪一个页面点击过来,不需要有参数。如果要知道从页面上的哪部分或哪个链接过来的,可以使用参数,也可以拿一小部分页面出来做热图实验就可以了,没必要整个网站链接加上参数。也可以给搜索引擎蜘蛛一个没有参数的版本。另外,这种分析的效益有多大?是否值得牺牲搜索排名也必须要做?网站是为了用户方便,还是为了自己内部分析方便?这是个首先要回答的问题。

留个言呗:

您的邮箱不会被显示在页面上。标有*的是必填项。