在博客园里,每一个人的文章都有两个URL,一个是以username.cnblogs.com开头的,另一个是以cnblogs.com/username开头的(前面是否有www都可以)。默认的文章链接都是指向以后者开头的地址,而个人首页则指向username.cnblogs.com,这其实对用户的博客优化造成了很大的障碍。
搜索引擎友善
不知道什么时候开始,搜索引擎优化(SEO)成了绝对的贬义词,大概是从Google打击恶意SEO开始吧,所以我用搜索引擎友善这个词。
同一个页面以多个不同的URL出现,是对搜索引擎不友善的。站在搜索引擎的角度来看,你作为网站负责人明知道是相同的页面都要映射到几个不同的URL,这分明是加重搜索引擎的索引负担,同时对访客导航也不友善,容易导致访客看到一样的页面却怀疑它们是否在同一个地方,这是该惩罚的。事实上,搜索引擎也确实对这样的行为作出惩罚(penalty),惩罚通常是降低搜索结果中的排名甚至不出现在搜索结果中,这种惩罚有时候针对所有副本,有时候针对除第一份以外的副本。
拿Google来说,从Google的帮助中可以看到它是强调网站页面的唯一性的,所以它仅索引网站中重复页面的第一个副本,其他副本不索引而且不可能出现在搜索结果中。当然,你可以依赖于Google的这种设计,但Google的帮助中则建议网站负责人通过robots.txt显式地禁止Google的爬网器索引多余的副本,这样你就可以确保它所索引的第一份副本是你所期望的那个URL。更详细的资料可以看Webmaster Help Center。
用户难以控制
搜索引擎的惩罚,受害的自然会是博客园的用户。用户不知道他的文章哪一篇会被当作第一份副本而被搜索引擎索引,也就无法做好article marketing。
要做好的article marketing,那么搜索引擎友善是必须的,有时候还需要和普通商品的online marketing一样有专门的着陆页(landing page),让搜索引擎尽量将访客带到着陆页,然后访客能够马上了解到这个网站提供什么信息,有什么理由推动他在这个网站看下去。然而如果由于文章副本问题导致搜索引擎“失控”,那么用户将无法确认该marketing哪个URL。
希望Dflying允许我拿他的博客来举个例子,因为我是在他那里第一次看到username.cnblogs.com开头的文章地址用法。在Dflying的博客,所有他自己手写的链接都是以dflying.cnblogs.com开头的,而所有自动生成的链接都是以cnblogs.com/dflying开头的,这时候搜索引擎就会“失去控制”——部分文章以dflying.cnblogs.com开头的URL作为索引副本,而另一部分文章则以cnblogs.com/dflying开头的URL作为索引副本。到底一篇文章被搜索引擎索引了哪个副本并不确定,并且可能随着搜索引擎的更新而改变,这样你就无法确定该marketing哪个URL。更不幸的情况可能是,多个搜索引擎分别索引同一篇文章的不同URL副本,这样针对一个URL所作的marketing工作就仅对少数搜索引擎有效了,也就是说无论你marketing哪个URL都总有部分努力流失了,因为部分搜索引擎认为这个URL是不应该索引的副本。
其他的趣事
大家可以点击我的feed看看,你会发现除了最近的几贴以外的其他贴都会显示“Technorati: 1 link to this item”。这是FeedBurner提供的功能,用于显示Technorati索引的博客中有多少文章链接到这篇文章。Technorati的中文用户是不多的,所以索引的中文博客也不多,怎么可能给它统计到别人链接我的文章呢,况且数量都是1。我登录上Technorati一看才明白怎么回事,原来cathsfz.cnblogs.com和www.cnblogs.com/cathsfz被认为是两个不同的博客,因为前者首页会链接到若干文章,而地址则是后者的,所以就理解为外部博客链接,而且链接数量都是1。
对URL的建议
URL当然是unique的好,我个人的看法是既然提供了username.cnblogs.com开头的首页,就应该将文章链接都做成以username.cnblogs.com开头的,避免上述Technorati索引为两个博客的问题,同时通过robots.txt禁止搜索引擎索引cnblogs.com/username开头的链接以避免搜索引擎“失控”。
Sharepoint有个有趣的功能,它能够根据访问时的URL识别一个Sharepoint站点的所有入口地址。例如10.0.0.1、www、www.company.com指向的都是企业内的同一个Sharepoint站点,那么它就能自动将这3个URL记录下来。当用户通过10.0.0.1访问时所有站内链接都是以10.0.0.1开头的,而这还不是最有趣的,最有趣的是即使你在Sharepoint中发表一篇文章而文章内有一个指向www开头的链接Sharepoint也会将它改为10.0.0.1开头。
这个链接更改特性好像还可以配置,让它强行把链接改为某一个入口地址为开头。如果强行指向www.company.com为入口地址,则上述情况中的站内链接和文章内链接都会改为www.company.com开头。
如果博客园支持这样的功能就最好了,这样每一个用户都可以根据自己的需要来设置入口地址,在自己的文章中交叉链接时也无需刻意考虑链接哪个URL副本,因为最终的输出都会链接向指定入口地址的副本。实现这样的功能应该不难吧,只需要一个IHttpModule就行了,而博客园实现用户域名支持本身也依靠IHttpModule吧,所以改进该IHttpModule应该就能实现上述功能。