2009年4月4日 星期六

KO几个对博客由来已久的疑问

从听说过博客这个词到最近,我用过4个博客,按时间顺序依次是网易、Blogger、百度、博客大巴。尽管是程序员,但我不是那种在技术上非常活跃的博客用户,我至多是修改过博客模块,涉及的技术仅限于在接触博客之前已经了解的CSS、XHTML。

看IT资讯就免不了见人讨论博客技术,在我印象里,技术型的博客高手不要别人托管,他们搞“独立博客”。由于以前技术学习的重心不在网站方面,我也不关心这个,但是最近一个星期的业余时间都花在研究独立博客这个东西上,因为我实在是,太好奇了。而且,对这么流行的东西长期一无所知也会给自已造成一些恐慌。

我当然不能在这几天里怎么样怎么样,所谓“研究独立博客”就是弄明白很长时间里我疑惑但又没工夫理会的问题:

1、为什么老有人说“下载WordPress”?我也注册过WordPress啊,没看出跟博客大巴有明显不同,BSP怎么下载?
2、从网址形式看,有些博客的内容是磁盘上的一堆静态网页,这当然不可能,那么它们是怎么做到的?
3、二级域名还有真假之分吗?


过去的几天里我就从零起点琢磨这三个问题。


问题1

我被那些貌似老练利索的文章忽悠了:它们在说WordPress时,其实是指WordPress.org。他们下载的是WordPress.org,我注册的是WordPress.com。WordPress.com主页上专门一篇文章解释这两个东西的区别与联系。

问题2

URL重写啊,重定向啊!

如果web服务器是Apache,可以利用它的mod_rewrite模块重写(翻译)请求地址,比如把URI中的“/2009/04/hello.html”重写成“/index.php?postname=hello”,对于这种应用场景,使用mod_rewrite的全部道道就是正则表达式(日咧~老子一直会的嘛)。

我在Linux虚拟机上试验过,把WordPress的永久链接结构设成了“年/月/标题”,很有趣,尤其是这样之后再写帖子时,可以设定帖子的名称。不过使用非默认的链接结构需要在Apache配置文件中写多达七八条规则,因为除了帖子的链接,还有其它不少链接要重写,比如标签、分类、评论、时间。有一篇参考文章(http://codex.wordpress.org/Template_Tags/query_posts)非常有用,它列出了WordPress
定义的URL参数名称,比如帖子ID是p,帖子名称是name,分类ID是cat,分类名称是category_name。据说这还不是全部,但已经很丰富了,在找到这篇文章之前,贴子名称猜得我好苦(从源代码里也不是一下子就能找出来的)。

如果web服务器没有重写这个功能,但支持自定义404页面,就可以在404页面上做文章,在里面解析URI,然后跳转到相应的页面。这个我没有动手做过,只是在网上看过一篇文章讲在IIS服务器上利用自定义404页面实现静态链接地址的。

问题3

我没有认真地考虑这个问题,也没有查二级域名的严格定义,直观地(可能是错的)理解,如果一个貌似域名的东西登记在了DNS条目中,能ping到,就是真域名,否则就只是一个好看的写法,需要web服务器重写。这个我也试验过,利用Apache的mod_rewrite,可以把URL中的HTTP_HOST也改了(在问题2中,只需要改URL的URI部分),比如可以把http://pzy84.blogspot.com/重写成http://www.blogspot.com/pzy84/。利用正则表达式,这个重写可以是批量的。O'Reilly出版的《Apache Cookbook》在虚拟主机这章中给出了很多明确有效的“处方”。