Static Oneplus 不可控制论

2012/10/13 - by Oneplus • WordpressCSS Frameworkcpanel服务器域名domainsubdomainrewrite重定向

小记博客重组织


oneplus.info这个域名和它使用的主机空间是我在2011年初买下的。到现在,就快有两年的时间了。两年之间,这个里产生了38篇博文,接受了2.4万次PV,其中《哈工大男女比例调研报告》和《关于一个点歌社交网络的构想》两篇得到了豆瓣九点首页的推荐。总的来讲,我对博客中提供的内容还是比较用心。

虽然这个博客的一直以来的表现也没什么差错,但是我却在很早以前就产生了重新组织网站结构的想法。建站之初,没什么经验(现在我也没什么经验),直接把wordpress安装在web根目录public_html下,oneplus.info的域名也直接定位到博客上。到了现在,觉得有必要在这里加一个主页,把原来的博客移到blog.oneplus.info的域名下。出于这个考虑,这周在业余时间里完成了这两项工作。

WordPress迁移

在迁移之前,我的public_html是这样的:

我希望它变成这样,

并且可以通过blog.oneplus.info来访问。

要实现上面的效果,首先要做的工作是把blog.oneplus.info解析到主机的IP上。 这个只需要在DNS服务商处给主域添加一个A记录,使得HOST_NAME为blog.oneplus.info的http请求发送给我的主机。 我的DNS服务商是Godaddy,在Domain Manager面板上添加记录如下。

添加后大概一个小时就生效了。

在DNS服务的工作做完后,要做的是使得主机能够处理这个请求。 通过Google发现,这个问题大致可以通过三种途径解决,它们分别是:

  • 配置apache服务器,添加Virtual Host
  • 通过mod_rewrite模块把blog相关的请求重定向到blog.oneplus.info/blog/下
  • 在cpanel中添加子域

这里面,对于用cpanel管理的主机,由于用户不能接触httpd,第一种方法不能实现。 第二种方法有点麻烦,具体做法可以google”.htaccess”、”重定向”、”二级域名”这几个关键字。 第三种方法最简单,只要在cpanel的子域一项中添加一个名为blog.oneplus.info的子域就好了,非常傻瓜。

在主机可以处理blog.oneplus.info的请求之后,下一步就是wordpress的搬家了。 由于,我使用的wordpress版本是3.3.1,而且是站内移动,搬家这件事就变得非常简单。 具体做法是在设置->;常规中将WordPress地址站点地址都写成blog.oneplus.inf o。保存之后,站点会暂时坏掉。不过把wordpress相关的文件移动到blog文件夹下,修改就生效了。

进行这些操作后,blog.oneplus.info便可以正常访问了。但是,还有一个问题是,博客中有一些图片的链接还指向blog.oneplus.info/wp-content/,科学的做法是把数据库的导出,然后把所有blog.oneplus.info改成blog.oneplus.info再导入。

这些都做完了,博客的迁移工作基本就完成了。整个过程都没什么难度,但是我忽略了最早的一步,白白浪费了一个晚上的时间。

Feed重定向

博客迁移之后,我的博客从下面几个方面会受到影响:

  • 博客的订阅
  • 搜索引擎排名
  • wumii的喜欢按钮

对于写博客的人,第二项虽然很重要,但是能做的其实不太多(而且我挺反感SEO的,虽然我是学信息检索的)。 所以,服务好自己的订阅用户才是要紧事。

现在的情景是由于feed的输出地址发生了改变,原来通过blog.oneplus.info/feed进行的订阅失效了。 打开Google Reader,查看自己博客的订阅,发现Statistic中显示Parsing Error。 好在主域还在我的手里,只要把blog.oneplus.info/feed的请求重定向到blog.oneplus.info/feed就行了。

这里要用到前面说过的比较麻烦的mod_rewrite。做法是在web根目录下的.htaccess中添加重写条件和重写规则。现在我对feed的重写规则是这样的

RewriteCond %{HTTP_HOST} ^blog.oneplus.info$
RewriteCond %{REQUEST_URI} ^/feed$ [NC]
RewriteRule .* http://blog.oneplus.info/feed [NC,L,R=301]

它的含义是把所有主机名为blog.oneplus.info,URI为/feed的请求都重定向到blog.oneplus.info/feed下。

添加完重写规则后可以通过访问blog.oneplus.info/feed来测试一下重写规则是否生效。 还有一些其他网站提供mod_rewrite的测试,比如说这里,重定向失败的话可以把.htaccess投到这个网站中,找些样例测试一下。

至于第三项,我倒确实把男女比那篇的一百多个“喜欢”给丢了,不过I don’t care

主页

完成博客迁移后,我发觉应该给blog.oneplus.info写一个主页。最后决定在里面写一个个人简介(留着吹牛用)。 这次,我想尝试一下css框架(平时在实验室里也没机会),于是把bootstrap、blueprint、foundation几个框架都试了试。最后还是决定用bootstrap,原因是我在网上找到了它对ie6做的patch。 至于为什么要兼容ie6,这篇豆瓣日记记录了原因。

后来我觉得应该在主页中加一个最近发布的博客。 直接查库当然是个好选择,但是我还想在ir.hit.edu.cn/~yjliu/上面做个镜像。 所以在主机上写了一个小php - query来查库。 这样,blog.oneplus.info和ir.hit.edu.cn/~yjliu/都可以通过查这个网页获得最近的文章。 不过,我的主机在国外,国内访问速度慢,而且这个网页的更新频率实在不高。做cache是必须的。

起初,我想了好久如何在query.php上做cache,后来才发现,最应该做cache的是主页这一端。所以在主页中添加了下面的代码:

$cache = new Cache(3600, "some_path");

$key = "last_post";
$values = $cache->get( $key );

if ($values == false) {
	$page = '';
	$handler = fopen('some_url', 'r');

	while(!feof($handler)){
		$page .= fread( $handler, 1048576 );
	}
	fclose( $handler );
	
	$values = $page;
	$cache->put( $key, $values );
	echo $values;
} else {
	echo $values;
}

对于主页的请求,先去看看cache过没过期,没过期就直接返回cache的结果,这样可以减少不少网络传输。其中,cache类我是参考这篇的。

总结

至此,博客的重组织工作告于段落。现在可以通过www.oneplus.info访问我的主页,也可以通过blog.oneplus.info访问博客。 虽然还有一些想做的工作,不过我还有别的事情,不能在这上面花太多时间,就这样吧。

PS: 这篇的另一目的是测试一下Feed输出是否正常。

blog comments powered by Disqus