前几个月,在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。
spyrise 回复于 2010/01/03 12:47
在element.php中直接插入ggad_2的id的div内。
我的意思是ggad_2的div层是如何控制的?因为你这个层是插入了文章之中(上面有好几段文字),而不是普通的靠左和靠右。
第二步:至于插到文章中间的某一节内,是靠DOM随机插入的。把ggad_2这个div随机移到某一个节点之前或之后。
就实现了你所疑问的地方了。你得学习一下DOM才能掌握如何移动这个div元素了。思路我可以与你共享,但具体代码我就不方便共享啦,呵呵。
<link rel="canonical" href="http://spyrise.org/blog/$$$/" />
就行了,管你有几个域名,规定上面红色的字体就行了。不管访客是以从哪个域名访问的,PHP在执行这段页面时,在canonical中记述为spyrise.org域名,就算达到目的了。
另外再请问一下,你博客中google广告200*200的文章画中画的方法,就是id='ggad_2'这个,不知道是怎么实现的?谢谢
Linux才好管理,Windows主机是垃圾。
这个后缀该一下就可以了吧
我像后缀为 /的不行吗?
我以为默认是.html,原来是.htm啊。真失望。
谢谢提醒,你看,写个插件不容易吧?
<link rel="canonical" href="www.***.com/read.php/33.html" />