Yahoo!, Live & Google 支持一个新的标签:"canonical url tag",来帮助网站管理员确定自己创建的重复内容。
如何操作
这个标签被<head>标签包含,和<meta>标签的区域是一致的。这并不是一个新的标签,和nofollow一样,只是具有一个新的rel参数。如:
<link rel="canonical" href="http://www.seomoz.org/blog" />
这个标签的意思是当前页面是 http://www.seomoz.org/blog 的一个拷贝,有几种情况可以利用这个标签:
1、通过不同参数来显示相同内容的不同样式,如:http://www.seomoz.org/blog?color=blue
2、通过不同参数来显示相同内容的不同版本,如:http://www.seomoz.org/blog?printversion
3、通过不同参数来显示相同内容的不同SESSION,如:http://www.seomoz.org/blog?SessionID=xxxxxx
当然使用这个"canonical url tag"不只上面的几种情况,具体情况可以具体对待。
搜索引擎提供的一些资料
- 问:我可以使用相对路径指定canonical么?
答:可以。 - 问:canonical指定的页面内容可以与当前页面内容不同么?
答:我们允许轻微的不同,如排列在表格中的产品数据。而且我们的爬虫也可能在不同时间去抓取canonical与当前的页面,爬虫可能会看到不同的内容版本,这些都是允许的。 - 问:如果canonical指定的页面不存在会怎样?
答:我们会继续索引你的内容,但强烈建议用存在的页面作为canonical的内容。 - 问:canonical可以是一个重定向页面么?
答:可以。
Yahoo
- canonical可以是绝对或相对路径,但我们强烈建议使用绝对路径来避免一些不可预知的问题。
- canonical指定的URL只能与当前页面处于同一个域,如test.example.com的canonical可以是www.example.com,但不能是www.yahoo.com
- A作为B的canonical,B作为C的canonical时,Yahoo会把A当作B、C的canonical。但会中断无限的canonical链。
基于ASP.NET的示例代码
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
public partial class Products : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HtmlLink canonicalTag = new HtmlLink();
canonicalTag.Href = "http://www.seomoz.org/blog";
canonicalTag.Attributes["rel"] = "canonical";
Page.Header.Controls.Add(canonicalTag);
}
}
using System.Web.UI;
using System.Web.UI.HtmlControls;
public partial class Products : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HtmlLink canonicalTag = new HtmlLink();
canonicalTag.Href = "http://www.seomoz.org/blog";
canonicalTag.Attributes["rel"] = "canonical";
Page.Header.Controls.Add(canonicalTag);
}
}
参考
- http://www.seomoz.org/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps
- http://www.codersbarn.com/post/2009/02/21/ASPNET-SEO-and-the-Canonical-Tag.aspx