前几个月,在Bo-blog的官方论坛上看到风吟提到了canonical属性,一直想着有空替自己的博客也弄一个。今天终于有时候弄,也终于弄好了!
canonical属性是Google、Yahoo、Mircrosoft三大搜索引擎共同支持的一个新属性,为网页指定权威链接,用来改善网站由于 URL 格式不同造成的重复内容问题。简单地说,canonical属性的作用就是为你排除诸多重复的页面。
详细的说明及范例: http://www.googlechinawebmaster.com/2009/02/url.html
比如说,由于Bo-blog的URL优化特性,你的页面会有三种状态。第一种是/blog/read.php?33,第二种是/blog/read.php/33.html,第三种是/blog/33/。甚至还有更复杂的因素,如你启用了alias别名功能,如santoprene-epdm,那日志还有可能变成/blog/santoprene-epdm.php或/blog/santoprene-epdm/。甚至你可能因为是spyrise.cn和spyrise.org的区别,使上面的页面个数乘以2。总之,完全相同的内容,却以好几个不同的URL显示着,太糟了!
如果这些页面全部被搜索引擎收录了,那可不是件好事。在搜索引擎看来,就相当于有了N个重复的页面,相应的页面权重就会下降。我们希望只有一个URL是被推荐的。
现在canonical属性提供这样一种功能,当你在页面的HTML代码中添加了<link rel="canonical" href="http://spyrise.org/blog/santoprene-epdm/" /> 属性后,Google就会知道这N个网址实际上是被建议指向您指定的标准URL: http://spyrise.org/blog/santoprene-epdm/上。其他的URL属性,比如PageRank和相关的其他因素,也都会自动指向该标准URL。这个标准同时也被搜索引擎在抓取和索引你的网站时所接受和使用。
听完介绍,是不是太棒了?是的。所以我今晚花了很多时间来弄这个,终于弄成了!写了一个firstheader类型的插件,放到plugin目录下,成功了!
你现在可以查看一下我的页面的HTML源代码,里面的description已经被个性化(这是个很大的改进,我放在canonical的插件里一起改了),同时添加了canonical属性。
2009-7-12 追记:
应一些朋友的要求,添加插件下载,名字定为multilex,请勿奇怪,这个名字是我随便起的,功能是为各具体页面添加canonical页面属性(修改description META属性的等其他功能已经被我移除了,怕大家混淆。懂PHP代码的朋友可随便修改,但请保留版权声明,谢谢)。
使用方法:解压(密码是spyrise.org,老规矩),上传至plugin目录下面,然后到后台->插件管理->添加插件,输入名字为multilex,安装就可以了。安装完后,可打开某页日志,检查是否有canonical的HTML输出。如果有,说明成功了。反之就是错误。如果安装后页面无法显示,也是错误。有bug,请速联系我,虽然我这里调试是OK的
友情提醒:如果你是有好几个域名指向了你的博客,比如http://www.spyrise.org/blog/santoprene-epdm/和http://spyrise.org/blog/santoprene-epdm/ ,那你可以在firstheader.php中将{$config['blogurl']}替换为http://spyrise.org/blog,这样可以强行指定推荐的URL中的域名为spyrise.org而不是www.spyrise.org。至少我就是这么操作的。
2010-6-28 追记:
已根据下面的cuongvietnam网友,对tag, catagory, main作过优化。但更好的用法是同时修改网页的description和keywords。

You can modify it as you wish.
google say me duplicate content "Tag" "category" "page"
Ex:
Tag:
http://domain.com/bo-blog/tags/hello/2/1/
<link rel="canonical" href="http://domain.com/bo-blog/tags/hello/" />
This case will not duplicate title and description for tag hello
page:
http://domain.com/bo-blog/page/1/1/
<link rel="canonical" href="http://domain.com/" />
This case will not duplicate title and description for your site
category
http://http://domain.com/bo-blog/category/phan-loai-mac-dinh/1/1/
<link rel="canonical" href="http://domain.com/bo-blog/category/phan-loai-mac-dinh/
" />
This case will not duplicate title and description for your category
it will be good for bo-blog seo
please help me configure the above requirements
Thank you very much!
I didn't notice this issue before, I think what you think is right and I will try to fix it.
I think that it won't take me too much time to fix it. Please visit my page a week later.
个人对这些方面了解少之又少,如果问的太菜鸟的话,还请见谅,并请您一定帮我解答下。
我留了我的邮箱地址,麻烦您!!!!
谢谢
二,不能。
三,参见:http://www.googlechinawebmaster.com/2009/02/url.html
一、我的博,采用的是Rewrite方式。实现的URL是形如:http://pollen.cnwyw.net/post/18/ 的网址。
未优化时为:http://pollen.cnwyw.net/read.php?18 (这些页面现在也能访问)
php优化为:http://pollen.cnwyw.net/read.php/18.htm(后台我没有使用php优化,但这个页面同样也可以访问。)
我就是将后两种统一到第一种去,应该如何修改文件?
二、我现在装着fengyin的seopack,开了他的唯一链接后,源码有这样一行<link rel="canonical" href="http://pollen.cnwyw.net/post/18/" />,这个与你的是否冲突?功效是否一致?如果要用你的,是否需要禁用他的?
三、我看你这里的伪静态别名很好用,可是我现在的iis rewrite规则似乎别名不能用。能教教我吗?或者把你的规则给我看看。你是iis吗?
2,是的,肯定和他的冲突,但是你可以修改他的代码,去掉关于canonical的相关部分,其他部分继续用好了。我建议你们自己学会PHP,不要过于依赖别人写的插件。理解他们的写法,你们完全可以自定义,取其精华。
3,我一直很讨厌IIS,平时不接触IIS的。如果有机会,我建议用Linux主机,向你推荐免费的freehostia.com,就是我现在在用的。