为博客增加canonical属性,强化页面权重! Unknown 2009/07/04

| |

前几个月,在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的

下载文件 (已下载 46 次)
这个文件只能在登入之后下载。请先 注册登入

友情提醒:如果你是有好几个域名指向了你的博客,比如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。

请给这篇日志评个分吧~!

本文评分: 5.6/10 (57 votes)    提示:您还未对本文评分,您可以进行评分并发表您的意见!

加入收藏!

manbu IP
2010/01/03 13:25
另外再请问一下,你博客中google广告200*200的文章画中画的方法,就是id='ggad_2'这个,不知道是怎么实现的?谢谢
spyrise 回复于 2010/01/03 12:47
在element.php中直接插入ggad_2的id的div内。


我的意思是ggad_2的div层是如何控制的?因为你这个层是插入了文章之中(上面有好几段文字),而不是普通的靠左和靠右。
spyrise 回复于 2010/01/03 19:17
第一步:普通的靠左和靠右,你应该会的吧?就是float:left;或float:right就可以了。

第二步:至于插到文章中间的某一节内,是靠DOM随机插入的。把ggad_2这个div随机移到某一个节点之前或之后。

就实现了你所疑问的地方了。你得学习一下DOM才能掌握如何移动这个div元素了。思路我可以与你共享,但具体代码我就不方便共享啦,呵呵。
manbu IP
2010/01/03 10:31
另外,还有就是blog的默认首页重复收录问题,比如会有“spyrise.org/blog/”、"spyrise.org/blog"、“spyrise.org/blog/index.php”这三种形式,不知道能否通过canonical属性规范一下,否则首页的权重都被分散了。
spyrise 回复于 2010/01/03 12:47
这个很简单,只要你在canonical属性中规定:

<link rel="canonical" href="http://spyrise.org/blog/$$$/" />

就行了,管你有几个域名,规定上面红色的字体就行了。不管访客是以从哪个域名访问的,PHP在执行这段页面时,在canonical中记述为spyrise.org域名,就算达到目的了。
manbu IP
2010/01/03 00:11
非常感谢你这个插件,很使用!

另外再请问一下,你博客中google广告200*200的文章画中画的方法,就是id='ggad_2'这个,不知道是怎么实现的?谢谢
spyrise 回复于 2010/01/03 12:47
在element.php中直接插入ggad_2的id的div内。
gouwaming Email IP
2009/08/15 19:23
我上传了 .htaccess 还是不行 难道LUNIX没救了么
spyrise 回复于 2009/08/15 20:37
需要上传到Bo-blog所在的根目录,即index.php所在的目录。你确认一下吧。

Linux才好管理,Windows主机是垃圾。
gouwaming Email IP
2009/08/15 18:40
$pageurl = "{$config['blogurl']}/read.php/$itemid.htm
这个后缀该一下就可以了吧
我像后缀为 /的不行吗?
spyrise 回复于 2009/08/15 18:43
嗯,我也刚发现。你好聪明,自己改一下就可以了。
我以为默认是.html,原来是.htm啊。真失望。

谢谢提醒,你看,写个插件不容易吧?
gouwaming Email IP
2009/08/15 18:29
页面源码出现这样的
<link rel="canonical" href="www.***.com/read.php/33.html" />
spyrise 回复于 2009/08/15 18:35
你的网站是?我来看看。我不明白你认为哪里有问题。我觉得正常了啊。
分页: 2/3 第一页 上页 1 2 3 下页 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [注册]