题引
以前写过关于Wordpress自定义Permalink的问题,主要讲该选择怎样的一种url。最近网友提出文中观点是错误的(可以看本文的评论),事实上,我早就发现是不对的,主要本人比较懒散,懒得去修改以前的文章。关于这个话题,现在讲可能说明更清楚、更深入吧。要说明的一点是,这个文章不是教你怎么用自定义Wordpress Permalink的入门教程,主要讲的是该选择怎样的一种URL,以及为何怎么选择?
正文
Wordpress自定义Permalink在后台有这么几种选择,请看Wordpress后台的截图:

很多人采取的第二种,就是“日期”加别名的方式,而我采取的是自定义格式 /%postname%.html。
我认为我采取的格式是最好的,主要原因如下:
1、URL中最好带有关键字
对于seo或者做google adsense的人都明白URL带有关键字的好处,不再细述。
2、修改文章的需求
就像我这篇文章,4月份写的,7月份重新修改,如果不放到首页,读者肯定不知道已经修改了。Wordpress的文章默认是按照文章建立时间倒序排列的,如果要把修改过的文章放到首页,必然要修改文章的发布时间,而http://sheawey.com/blog/2007/07/13/sample-post/ 这样带有日期参数的url地址必然要改动,这是一种很不友好的做法,试想,如果你原来文章有大量的外部链接,修改后这些链接就全部失效了。所以自定义Permalink最好不要带时间参数。
3、反斜杠的问题
搜索引擎把http://sheawey.com/a和http://sheawey.com/a/认为是两个地址,这样就造成了“复制网页”,这里你可以参考我的“升级到WordPress 2.2后permalink的反斜杠问题”一文,而像http://sheawey.com/a.html则永远不会发生这种情况。
以前的文章
愚人节哪天Matt Cutts 开个个自己网站被黑的信息,所以仔细看了他的博客的Permalink写法,居然跟我一样,都是直接用别名,而不是默认的大多人使用的Date and name based(日期和别名混杂)格式。
如一般的博客是采用http://domain.com/2007/04/05/sample/的格式,Matt Cutts采用的是http://domain.com/sample/,而我采用的是http://domain.com/sample.html。
从url路径的长度来说,当然是越短越好,无疑,Matt Cutts的路径最短,从长度来说是最好的。有人说,直接写成数字格式如http://domain.com/123/不是更短,因为SEO的关系,域名里面包含关键字比较好,所以要取别名。
但是这种别名写法会带来一个问题,就是你你写了很长时间的博客后,有可能会写上相同的别名,比如你两年前写了关于google的文章,别名为google,那么url路径是http://domain.com/google/,今天又写了google的文章,还是写了别名:google,两个就会冲突了。这要靠你写博客的时候注意了!而像日期和别名混杂的模式只要你当天不重复,这是可以控制的。从这一点上来说,Wordpress提供给我们的默认的写法是有道理的。
难道直接写别名的路径就一无是处了吗?也不是,如果你有文章需要修改(因为很多文章并不是一次写完就不需要修改了),而你又想在博客文章列表的前面显示给别人,这就会设计到一个日期的变动,自然,按照日期和别名混杂的模式就会把url页变动了,这一点无论对于用户还是搜索引擎来说是很不友好的。
到底用哪种Permalink,看你的需求而定吧。
我的这个博客在今年5月底的时候,在.htaccess文件中做了一下301转向,主要把www.sheawey.com有关的URL全部转向sheawey.com,代码如下:
RewriteCond %{HTTP_HOST} ^www.sheawey.com [NC]
RewriteRule ^(.*)$ http://sheawey.com/$1 [L,R=301]
在6月份一个月之内,百度只更新我博客的首页(http://sheawey.com/blog/),文章页、分类页却一点也不更新,这一点可以从百度的网页快照可以得知。
在我做301转向之前,百度对我的博客是收录正常的,这个博客也不会涉及到作弊的可能性,所以在6月底的时候把.htaccess文件中的301转向的语句删除了,不到一个礼拜,百度的收录就正常了。
如果仅仅说百度对301转向不够友好,那么思考未免太不深入了。
domain.com和www.domain.com
很多网站的域名如domain.com以及www.domain.com访问的都是同一站点,而互联网上给出的外部链接又有所不同,有的时候链接是domain.com,有的时候的却是www.domain.com,这样就不可避免的造成了“复制网页”,这个不是站长的错,所以搜索引擎不能对其“复制网页”进行惩罚。
首选域名(Preferred domain)
像google,它的”Webmaster Tools“中可以让站长选择其“首选域名(Preferred domain)”,如下图:

事实上,即使你不这么设置,google还是会为你设置一个首选域名(Preferred domain)。这一点,你可以看一下你设置完Preferred domain后google的申明可见一二,他认为你给的只是一个参考,最终由google决定。
从google网站管理员中心了解到一点搜索引擎处理这个问题的方法后,我们来推测百度:虽然百度没有类似于面向网站管理员的系统,但是百度也是会为每个站点确定一个首选域名(Preferred domain)的,而且这个首选域名一旦确定,不会受网页链接url的影响的。
以我的博客为例,百度第一次收录我站点的时候,我给出的url是www.sheawey.com 格式的,因此那时百度确定我的首选域名是www.sheawey.com,后来我建了博客 sheawey.com/blog/,内部链接都是绝对链接,是以sheawey.com相互链接的(你可以查看我这个博客的html代码),但是百度收录我的网页却大多数是www.sheawey.com格式的,只有小部分是sheawey.com。为了避免这种情况,我做了301转向,期望百度里面收录的网址都是 sheawey.com格式的,哪知,百度居然停止收录我的网页了。
为何301后百度不收录我的网页?
文中开头也讲了,百度只是更新我的sheawey.com/blog/这个博客首页,就是不收录我的博客文章,而我博客文章中链接到的别的域名的网页却很快收录了,如这个站点:http://sheawey.jimdo.com/,是我在《“Jimdo建站工具箱”中文版测试 》一文中链接的,但是我的博客文章就是不收录。我能想到的原因大致有二(只是猜测):
1、百度对我的博客的首选域名是“www.sheawey.com”,所以在碰到sheawey.com的网址的时候,百度蜘蛛会自动加上www来访问,在没有301转向之前,这个网址是直接能访问的,在301转向后,又会自动去掉www后访问,然后百度蜘蛛又会加上www,这样就形成了一个死循环了。但是该网页百度蜘蛛确实是访问了,不然我新加的站点链接也不会被百度蜘蛛抓到并且收录了该站点。但是http://sheawey.com/blog/这个博客首页也是这么一种情况,为何百度却能收录了?请看下面第2点猜测。
2、抓取的深度,以http://sheawey.com/blog/为第一层,那么从http://www.sheawey.com/blog/到http://sheawey.com/blog/的310转向为第二层,而http://sheawey.com/blog/xxx.html类的博客文章为第二层,如上面的思路,再301跳转一次,则变成第三层,也就说说,百度蜘蛛不抓第三层,所以这些网页就不收录了。
上面两点原因,是我能想到的,是一种“钻牛角尖”的毛病,这两点,我自己也没法去说服自己相信,但总得找个理由,或者是一种思路,因为正确的思路往往在错误的思路附近,而不是“歧路”。哪位朋友有研究的不妨告知一下。
首选域名(Preferred domain)是可以变化的
在我把301转向去除后,百度对我的博客收录正常了,最新收录的网页关于sheawey.com首选域名的大幅度增加,但是www.sheawey.com还是有很多。这说明:百度对某个站点的首选域名(Preferred domain)的确定不是一成不变的,他会根据实际情况调整的。我接下来要观察的是:百度啥时候能把我的博客的收录网页的首选域名全部变成sheawey.com。
说明:
本文是一篇不成熟之文,只是记录问题的思考,此问题尚未思考成熟。
在浏览某个博客(http://blog.tuniu.com/hsym2006)的时候,看到google adsense的广告单元让我大吃一惊:怎么有人居然投这样的关键字,而google adword小组怎么会让它通过呢?请看下面这一张图:

当你对这个广告单元点进去就会发现,根本不是那么一回事:

也就说,关键字跟广告一点关系也没有。
我的第一反应是这些广告客户为了多展示一下广告而设计的这些关键字,但回过头来想想,唯一的嫌疑对象就是google公司自己,理由如下:
1、把这些关键字在google里面搜索一下右边并未出来相关的广告,这些关键字肯定不是广告商投的,那个广告商愿意把这些“热门”词作为关键字而浪费广告费呢?因为根本没有相关性。
2、上面的某个关键字,没有经过adword小组的检查,是肯定通不过的。
通过这个案例,我大体可以了解到google adsense广告单元的做法:
比如我是一个广告客户,我投放了“电影”这个关键字,google adsense就会在广告单位里面“创造性”的发挥出“色情电影”“三级电影”等关键字,而这些关键字作为广告客户的我肯定是不允许直接投放的。这些“创造”出来的“色情电影”、“三级电影”就能匹配我的“电影”关键字的广告,这种模糊匹配在adword里面是允许的,就像上面截图中“郭敬明简历”匹配“简历”,确实是招聘网站的一些广告,即使如此,还是觉得有点骗广告点击的嫌疑,因为它加上了“郭敬明”这个热门的关键字。但是其余的几个就有点莫名其妙了,我试过各种分词方法,实在找不到分词出来的每个词跟那个广告有何匹配可言?
如果就是上面所述的,google可以用技术去解释或者说匹配技术失误,那么出现色情广告怎么去解释?
看来,为了商业利益,所谓“不做恶”的信条只是一种“愚民”的做法而已。当然这个“民”,是网民。
不知道什么时候注册了Jimdo的帐号,突然收到一封“Jimdo建站工具箱中文测试版的体验活动”的邀请函邮件,邮件里面描述道:
为了使得更多的中国用户能够轻松的创建自己的网页,德国研发团队已把Jimdo带入中国。目前,Jimdo已基本完成中文版的研发工作。为了改善用户体验,让系统在发布时更完善,运行更稳,Jimdo非常希望能邀请您参与Jimdo中文版的测试体验,同时希望您给我们提出宝贵的意见。
Jimdo中文测试版的内容和功能基本和英语、德语版一致。您只需点击以下链接到Jimdo的中文主页:
http://www.jimdo.net.cn
因为我对建站工具比较在意,本身也在开发类似的东西,所以就登录Jimdo中文测试版,注册的时候发现本次测试只有500个名额,名额已经用完了,所以我没法进行测试。
但是这难不倒我,因为以前我注册过一个账号,我用那个帐号登录进去,发现在语言设置里面可以选择“chinese”,中文版的后台就出来了。(事实上谁都可以在英文主页www.jimdo.com上注册一个英文账号,然后登录后台修改语言设置即可。)
下面是我做的jimbo主页:

看一下,还可以吧?
目前,jimbo为每个用户免费提供500兆空间,提供类似于http://sheawey.jimdo.com/的二级域名,比较讨厌的是,免费版的他放上了google adsense的广告,如果要去除广告,你就得付费,每个月50元人民币,并且支持顶级域名绑定,空间也提高到5G。
以我的测试观察,如果拿来作为个人主页、简单的公司网站是很不错的一个建站工具,但是拿来作博客就不行了,jimbo的定位估计就是个人主页以及一些中小企业的信息发布网站。
怎么让“Jimdo建站工具箱”后台显示中文
找到右边浮动的工具条,点击“setting”,然后选择“Add ons”,找到“Language”,点击“set”,选择“Chinese”,点击“Save”保存。
Jimbo内容管理的原理
Jimbo内容管理与我们国内经常用的CMS软件内容管理方式是不一样的,他跟typo3、GPC非常的像。国内经常使用的CMS如动易、dedecms、一般的博客系统(wordpress、MT)都是以节点(分类)来控制内容的输出的,而joomla是在把内容分类的基础上外面套一个“菜单控制模块”来控制内容输出,别的如xoops则是以模块化的方式控制内容输出。而typo3则是以页面(page)为基础单位进行内容输出,Jimdo可以说是typo3的简化版,使用界面上更友好,相比较同时是以page为单位进行内容输出的GPC来说,Jimdo更像是个CMS,而GPC只不过是frontpage的在线版,使用上没有Jimdo简单方便。
下面图说明了一下Jimdo内容的组织:

它分为页面头,菜单导航、主要内容。
如何编辑Jimdo的页面头,菜单导航、主要内容
1、页面头
点击一下“页面头”部分,稍等它会出现如下配置界面:

你可以在上面编辑“页面头”部分的背景颜色、图片、标题、标题大小以及标题的位置。
2、菜单导航
把鼠标移到“菜单导航”部分,他会在菜单下面出现“编辑导航栏”,点击之,出来如下图:

你可以新建页面、删除页面、对页面用上下箭头所示进行排序,也可以把页面分层次,形成上下级页面关系,可以用左右箭头控制。
3、主要内容
Jimdo跟typo3一样:网站是由页面组成,而页面是由各个“内容元素”来控制的,把鼠标移到“内容页”上,点击“+”号可以新建一个内容元素,内容元素可以删除和进行排序。
Jimdo的主要内容元素元素包括标题、图片、文本、表格、文件下载、表单等,比较有特色的是它提供了很多web2.0的元素,如youtube、flickr、rss、tag等元素的导入,具体使用你实践一下就清楚了,不是很难。

我认为Jimdo做的比较好的地方
1、每个页面可以设置“密码保护区域”,当然,你也可以公开。可以通过右边浮动面板的“设置”- “密码保护区域”进行操作。不同页面可以设置不同的“密码保护区域”。
2、“搜索引擎优化”设置做得极到位,比较国内一些人做的cms,不得不佩服德国人的严谨。主要包括:
(1)首页的“附加标题”
设置:通过右边浮动面板的“设置”- “页面标题”进行操作。
以我现在的wordpress而言,我的title一般首页是“sheawey’s blog”,而非首页一般是:“########## - sheawey’s blog”,而Jimdo则让我配置首页的title,使之变成“sheawey’s blog - 这里是我要输入的附加标题”,这个很好,当然wordpress通过修改模板代码也可以办到,你可以学习一下john chow是怎么做的。
(2)每一个页面的meta tag设置,如下图:

设置:通过右边浮动面板的“设置”- “和元标签 (Metatags)”进行操作。
3、其它如邮件提醒和页面统计等功能,都很不错。
从sohu了解到的信息:《死了都不卖》被1800万收购。
因此我做了个《死了都不卖》这首歌曲专题推广页面。
《死了都不卖》的定位是一首股民之歌,由娱乐基地歌手王蓓(AMY)演唱,龚凯杰填词,改编自韩国歌手朴完奎的《死了都要爱》一曲。专题推广页面提供《死了都不卖》的在线歌词和在线视频播放,并且提供MP3格式的手机铃声以及彩铃免费下载。
我这个博客,你在Google里面输入:
site:sheawey.com *** -hhh
可以看到,几乎没有补充材料,我是怎么做到的呢?
(1)我这个博客3月底刚开始写的时候,由于外部链接的缺少,随着文章的增多,只要那篇文章不在首页有链接,就会直接进入“补充材料”,因此我在首页上“最新文章”选择了显示80篇文章,如下图:

具体操作手法是在模板的sidebar.php文件里面坐如下修改:

这样,很快那些文章就逃出了“补充材料”,其实道理很好理解,每个文章页在站点内获得了与首页一样多的链接,自然,不会因为链接的缺少而进入“补充材料”。
这个方法在网站刚开始,外部连接缺少的时候可以使用。随着文章的增多就有点影响站点形象了。
(2)多重的归档
这里所说的“归档”主要是指分类、月份归档、作者归档、网站地图、tag、相关文章之类的,因为这些“归档”是完全可以取得跟“首页”一样多的内部链接的,然后文章的链接由这些归档页传递,当然,“归档”种类越多,文章获得的链接就越多,(每文章平均获得的链接数/主页获得的链接数)这个百分比就越大。
这个话题要说起来太广泛了,你可以在实践中慢慢掌握,上面说到的一个内部链接的“数量概念”,还要注意一个“质量概念”,就是尽量在“归档”的时候考虑主题聚合的问题。
(3)分页问题
“归档”的时候,如果某个”归档”页内容比较多的时候,必然涉及到分页的问题。WordPress默认的分页是“上一页、下一页”这样的形式,这是一种链接的单项传递,链接结构是很差的,有人通过“[1][2][3]…[n]”这样的分页形式,这样从链接结构上是比“上一页、下一页”的形式要好。我们随便找两个博客看一下就知道了:
http://www.dunsh.org/ http://www.chinamyhosting.com/seoblog/ (“上一页、下一页”的形式)
http://www.kankanblog.com/ (“[1][2][3]…[n]”的形式)
可以看到,“上一页、下一页”的形式对于首页pr是4或者5他只能传递到2层,而“[1][2][3]…[n]”的形式却能传递到很多层,但一般不会超过10层。
我比较这两种分页导航形式,并不是要采用第二种,事实上,我一种也不采用。MT是seo做得比较好的博客系统,你去看一下他的结构,会发现:居然没有分页,不管首页还是“归档页”。
不过回过头来想想,确实也是,每个分页都是一样的title、meta属性,对于博客来说,是没必要分页的,所以我比较欣赏MT的做法。而在WordPress的博客中,形成Google“补充材料”的很大一部分是“分页”,但是Wordpress没办法后台设置或者模板修改让它不分页,这需要改动程序代码,方法如下:
打开wp-includes/query.php,找到
995行
if ( empty($q[’nopaging’]) && !$this->is_singular) {
把它改为
if ( empty($q[’nopaging’]) && !$this->is_singular && !$this->is_archive) {
看一下,除了首页外,“归档页”全部不分页了。
至于首页的分页,你可以学MT把它从模板中去除,也可以直接在robots.txt中禁止抓取。
(4)文章长度问题
我的观察是每篇文章至少写个150字以上,当然,还跟你网页的“信噪比”有关。
关于长度问题、网页的“信噪比”可以参考我写的这两篇文章:
文章内容过短也可能形成Google的“补充材料”?
“补充材料”实验总结
(5)使用robots文件
某些实在不是很重要,如trackback、siteadmin之类的,找一下补充材料里面是否有不必要的网页,直接用robots禁止即可。
有些人认为feed会跟首页之间形成“复制网页”,因为他跟首页内容几乎类似,事实上没那么回事,在robots文件里面禁止了feed文件是个很麻烦的事情,rss类搜索引擎如feedburner之类的将不会索引你了,所以feed是不能禁止的。
(6)关于“转载”
据我一个月的观察,“转载”跟“补充材料”一点关系也没有,我的两个试验(看右边的sidebar放的页面链接):
简明 Python 中文教程 和 上海“希捷拓展”特色年会。
前者是从网上下载的电子书,直接ftp到网上,50%的页面逃出了“补充材料”,在我看来还是链接结构的问题,因为我是百分百“抄袭”,一点也没改。
后者是我替一朋友做的newsletter,他的这张网页被google索引了快半年了,我把一模一样的挂上去,照样没有被列入“补充材料”。
两个试验,一个是网上大量传播的电子书,一个是就跟一张网页“竞争”,都没事!
(说明:这个实验结束后,这些网页已经被我disallow了。)
总结
所以“补充材料”就是一个链接结构的问题,外部链接和内部链接结构的问题。我通过拿WordPress作为试验程序,描述了大体过程以及一些要领,主要启发思路,不可能面面俱到,比如url规范问题之类的就没说。
老实说,要把“补充材料”彻底消灭,是一种很“洁癖”的做法,一定量的补充材料存在是合理的,如果一个网站的内容结构如果不是实在太简单的话,有点“补充材料”看上去比较“健康”,只要不是绝大多数网页为“补充材料”,大可不必担心。这种“洁癖”玩法更多的是锻炼seo的基本功罢了。
把博客升级到WordPress 2.2,挂上google adsense广告后,点击几个归档页面发现全是公益广告,查了一下原因,原来page页、archive页、category页url中的反斜杠不见了。没有反斜杆的页面和带反斜杆的页面,google adsense蜘蛛认为是两个页面,没有反斜杠的页面被认为是新页面,自然没有广告匹配了。
原来的地址 http://sheawey.com/blog/2007/06/
被改变的地址 http://sheawey.com/blog/2007/06
这对于seo来说,是个很严重的问题,容易造成复制网页,并且可能进入“补充材料”。你可以从下面一个博客的搜索截图可以了解到:
不是补充材料

是补充材料

因为以前在搜索引擎里面被收录的时候是带反斜杠的,如果现在不带反斜杠,形成“补充材料”倒是次要的,我担心我的博客会被google惩罚,类似于“黑色梦中的SEO博客”一样。
一般在WordPress 2.2后台开启permalink是不会出现我的这种情况的,如点石互动就没有。我出现这个问题主要是因为我把permalink设置为/%postname%.html,而一般的人都会设置为/%year%/%monthnum%/%day%/%postname%/,后者是没有任何问题的,前者在WordPress 2.2就出现了反斜杠的问题了。
怎么去解决这个反斜杆呢?
你可以在.htaccess文件中写重写url规则,我是直接修改了几个文件,如下:
wp-includes/link-template.php
193行,找到get_month_link函数,这个函数是关于月份归档的,修改
return apply_filters(’month_link’, get_option(’home’) . user_trailingslashit($monthlink, ‘month’), $year, $month);
为
return apply_filters(’month_link’, get_option(’home’) . user_trailingslashit($monthlink, ‘month’), $year, $month).’/';
wp-includes/link-template.php
117行,找到get_page_link函数,这个是有关Page的,修改
return apply_filters(’page_link’, $link, $id);
为
return apply_filters(’page_link’, $link, $id).”/”;
wp-includes/category-template.php
23行,找到get_category_link函数,这个是关于category分类的,修改:
return apply_filters(’category_link’, $catlink, $category_id);
为
return apply_filters(’category_link’, $catlink, $category_id).’/';
从“黑色梦中的SEO博客”(bloghuman.com)中了解到,他的首页被Google删除了,而其他页面却完好无缺,因为这个月初John Chow博客的首页也有被Google删除了,最后大家发现原来是John Chow为了消灭补充材料而写错robots文件的恶果。所以这一次“黑色梦中”的首页被Google删除,因此我首先怀疑是不是robots文件写错了。下面是他的robots文件:
User-agent: *
Disallow: /admin/
Disallow: /bak/
Disallow: /data/
Disallow: /editor/
Disallow: /inc/
Disallow: /install/
Disallow: /temp/
Disallow: /plugin/
这个没有任何问题,所以我们排除了robots文件的问题。从“黑色梦中”的描述中,他说他的首页进入补充材料,然后就不见了,有人说这是首页的关键字密度问题,我看这个根本不存在问题,他的好多文章置顶也不是问题的关键,不更新也不是问题(关于更新与首页是否会被列入“补充材料”的关系我下次撰文写一下,只有在某种情况下才触发,这个博客的url链接结构不存在这个触发的可能性),feed与首页同时存在也不是删除的原因,很多博客就是这么干的,就没看到哪个博客被这样搞过。
肯定是被搜索引擎惩罚了,就首页本身而言,没有作弊的行为,形成这种问题很多是因为“复制网页”。想到“复制网页”我们都会看链接的网页之间是否存在“复制网页”,既然首页被惩罚了,那么一般的想法就是比较与首页类似的页面,如tag、分类、日期等归档页面,老实说,这些归档页面只要你不是故意为之,很难与首页之间形成“复制网页”的,那么问题出在哪里呢?
我们用site:www.bloghuman.com搜索一下这个博客:

可以看到在文章tag页面、分类页面、日归档页面、月归档页面等,在google里面是静态地址,往后翻会看到完全相同的大量动态地址页面,而主页上的链接确全是动态地址。从搜索引擎收录来看,以前是静态地址,后来改成动态地址的。也就是说,这些页面除了文章页,首页外,任何一个页面都存在复制网页,而从静态地址到动态地址又没有做好301转向,这么大量的“复制网页”,不被搜索引擎惩罚才怪了。
原因已经说明了,解决方法就是两个,在google管理员中心删除这些页面或者做301转向,当然,后一种方法为好。