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规范化问题。这只是最后万不得已的方法。
敏感的人大概能从这个新标准里看到建立大量外部链接的机会。
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形式复杂的网站,用它时行网址规范化很强有力。
终于又见到Zac的blog了。每日早功课又可以加一项了。
跟着前辈学习。。。
别把这个标签当救命草,首先还是得把网站结构做好
蛮压韵的….这个比较实用于大型网站,不能静态化URL, 并且结构复杂的网站.
跟着前辈学习,每天上班第一件事就是学习。
这个非常有用,改版的时候有时候因为技术上的升级或结构的改变,就能可会对URL有所更改,有了这个就可以抛弃一些的没用,这个网站的URL的统一上更加便捷!
时刻关注着!
学习了~对网站没法静态化的,采用这个有点用,如果能够生成静态我想没必要用这个了吧?把动态的地址全部用robots文件规范掉!
收藏至20ju.com
我要慢慢看才能看懂
内部优化是最先做的,做好了再做外链
可能几个国际搜索引擎巨头暂时还不认为百度是国际化的搜索引擎,所以没把它也拉进来一起玩。很多它们支持的标签百度都不支持。
有一个问题百思不得其解,在你的zaccode站上提问了,具体也是涉及pr劫持:
http://www.dugutianjiao.com/post/pr-hijack.html。发现里面也并没有这个网址规划化的标签。
我想請問一下Zac: 你的博客上有使用 canonical tag 嗎?目前已經有 canonical 相關的 WordPress 插件,但是我不確定是否有安裝的必要。
正好有客户的网站还真需要这个标签。多谢!
敏感的人大概能从这个新标准里看到建立大量外部链接的机会。
Matt Cutts博客ppt上写不支持跨域名链接
http://www.mattcutts.com/blog/canonical-link-tag/
Q: Does this work across domains?
A: No, only on the same domain
zac大哥的书一直在看,同时也在实践,发现很多地方都需要自己反复实践才能消化,以后不懂的会提问
不太明白,请教一下,如何从这个标准中看到“建立大量外部链接”的机会?谢谢
人过留名
楼主的标签很有用,回去试验下;
最近我的网站就遇到了规范化的问题;开始用。com域名后来改.cn
再后来,两个一起用,后来发现有人竟然喜欢用不带www的,结果一个网站有了4个域名,后来减少到一个带www的,后来流量减少许多;
现在干脆废掉一个域名,做另外一个网站;
最后的格局是com一个网站,cn一个网站;
全都用www开头的做主站,不带www的都指向到带www的域名(不知道这是不是楼主说的301操作)
总算规范了
百度是等人家都已经开始骂它的时候才开始有反应,就像以前的广告什么的
使用.httaccess照Zac的教程规范网址, 总是会出各种各样的问题, 也不知为啥, 有时网址是规范了, 但google analytics跟踪有问题了, google那边回复说是由于网址做了转向, 还有一次更奇怪, 做了网址规范之后, 首页就无法访问了, 现在把.httaccess删了,不敢再用了….
另还有个问题想请教, 我有个网站想通过.httaccess控制404 error页面, 但这个网站下有个wordpress的blog, 尽管我定义了.httaccess到网站根目录下的一个页面, 却始终都是跳转到wordpress下的404页面, 请问这个问题有解决办法吗? 我在一些wordpress论坛都发过帖子询问这个问题, 没得到答案, 谢谢
Raymond还没摸清门路。
.htaccess每个目录都可以有,没有是继承上级目录中.htaccess的设置。
你说的问题都是.htaccess规则写得有问题,google analytics、wordpress没啥关系的。他们解决不了你的问题,找人看看htaccess规则就行了。
原来 Zac 的博客文章之间保留了相互 Ping 的功能。
加飞: 嗯,没注意到还押韵呢 :-)
Young: 我没有装,也不打算装。没什么严重问题,就不自找麻烦了。
Raymond: 建议你问一下你的程序员。不同情况需要写的规则代码不同,很难有一定之规。
Zac,我是你的新读者,这个标签的最终目的是达到网址规范化,是指加了该标签后,虽然用户通过不同规范的网址访问都被定义为访问改标签中的网址么,比如域名为www.abc.com,首页加标签,那么用户访问abc.com时也被认为在访问www.abc.com,从而不会造成权重分散?
学习了,以前没注意这个问题.
百度是不是没有制造标准的实力呢?他在英文领域的占有率及低。
我是虚拟主机做不了301转向,现在google收录的非www页面比带www的多了几倍!急啊!是不是在每个页面加入这段代码指向带www的页面就可以将非www页面的权重传递到带www的页面? –菜鸟
谢谢 ZAC,有跟你学到东西了,回去试验一下
有些APS空间商不给做301就没有办法了。
谢谢zac的分享
百度现在支持了没有呢?百度就是那么与众不同,哈哈
我是用rewrite作的301,应该是可以的。不过这标签确实是有用的,学习了。
te作的301,应该是可以的。不过这标签确实是有用的,学习了。
适当的用301还是挺好的
“敏感的人大概能从这个新标准里看到建立大量外部链接的机会。” 是指制作WP小插件之类的工具来获得外部链接么?求证。。。。
据说静态化网址最好!
这篇文章这么古老,只可惜今天才发现,受益匪浅
页面链接的权重都集中到代码中指明的规范化网址上
首先就是网站结构要好
在百度搜索关键词,发现子页面正文部分的内容都搜索不到,这是什么原因。我用了百度自动推送的接口。。。
很不错的文章哦,我会常来取经的。
好文,尤其是最后一句。不定期过来学习。
好文,尤其是最后一句
ZAC大神想问一下,关于canonical标签另一种使用场景,现在的都在讲精细化运营,我们网站会使用一写参数来标记此页面是通过哪个页面来的,这样,同一个URL就会有很多的动态链接样式的URL,这种情况是否可以使用canonical标签来实现页面权重集中起来呢?
非常期待大神的解答
对规模不太大的英文网站,可以这样做。规模大的网站不建议,英文参数不同大的URL会浪费大量抓取份额。中文网站完全不建议这样做。你说的参数或标记估计是用于统计、分析,但流量分析系统并不需要参数来判断是通过哪个页面来的流量,看同一个用户/IP的访问页面前后顺序就行了。
感谢您的回复。URL添加的标记,主要是用来统计来源的,也就是用户点击上一个页面的哪里来到当前页面的,主要是给运营分析用的。如果canonical标签不能这样使用的话,对于网站现在的这种情况,就是一个静态URL会存在多个静态URL+参数的URL,且内容完全一致的情况下,可以用什么方法解决呢?实在是不知道要怎么办了,请大神指条明道~再次感谢
如果只是要知道从哪一个页面点击过来,不需要有参数。如果要知道从页面上的哪部分或哪个链接过来的,可以使用参数,也可以拿一小部分页面出来做热图实验就可以了,没必要整个网站链接加上参数。也可以给搜索引擎蜘蛛一个没有参数的版本。另外,这种分析的效益有多大?是否值得牺牲搜索排名也必须要做?网站是为了用户方便,还是为了自己内部分析方便?这是个首先要回答的问题。
现在百度支持canonical标签吗