cos-html-cache是个很不错的,可以生成静态html文件的插件,可是如作者所说“cos-html-cache插件是需要urlrewrite支持的,不幸的是这个条件已经将国内的70%的虚拟主机挡在门外了”,我也是因为urlrewrite都原因,一直徘徊在实现html静态页面都大门之外,看着网站的速度越来越慢,可是又改变不了这种现状,已经让我失眠几个晚上。

前段时间想自己写个程序,不用urlrewrite来生成html。今晚想正式开始做,于是就想到借鉴一下cos-html-cache,无意中看到了“图解cos-html-cache原理”这篇文章,就仔细都读了一下,果然受到启发,由此我又想到了以前看到的一篇文章“IIS下不用Rewrite实现wordpress伪静态”,说实话,第一次看到这篇文章都时候挺不屑的,因为我现在不要华丽的URL,不要什么所谓的SEO,我要的是实实在在的访问速度,没有了性能,我没心情搞那些花哨的东西。

首先cos-html-cache的原理就是,当访问者请求一个网址的时候,如/html/2009/110.html,服务器首先会去相关的文件夹(/html/2009/)下寻找文件(110.html)是否存在,如果存在则直接将该文件发送给浏览者,否则发送一个404文件未找到的错误给浏览者,所以我们只要设置好IIS的404错误页面,当访问出现404错误的时候,自动访问首页(index.php)即可,剩下都任务交给cos-html-cache来处理,它会自动为你生成html文件。

第一步,如“IIS下不用Rewrite实现wordpress伪静态”所说,在网站根目录新建一个404.php文件,内容如下:

<?php
$qs = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ':80')+3);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

第二步,在IIS的网站属性-自定义错误里面,将404错误的地址改成URL形式的,地址为/404.php

第三步,将永久链接改成自定义的一个访问路径,如/html/%post_id%.html

第四步,安装上cos-html-cache,享受html带给你的速度吧(如果没有正确生成html,请参考cos-html-cache的说明文件)

希望所有用IIS作php服务器并且无法用urlrewrite的武林同道,wordpress生成html成功!