首页 > BLOG建设 > 支持IIS的cos-html-cache

支持IIS的cos-html-cache

2009年5月8日 发表评论 阅读评论

  本篇文章将解决cos-html-cache在IIS下不能使用的问题,也是昨天发的文章的回答。
  通过分析cos-html-cache的代码后,发现主要问题是在IIS6.0下$_SERVER['REQUEST_URI']获取的URI是覆写前的,所以导致cos-html-cache在IIS6.0下不能使用。具体的分析可以看我昨天写的文章“cos-html-cache在IIS下不能使用的原因”。
  最初尝试从ISAPI Rewrite入手,但对这玩意儿不懂,没法只有从cos-html-cache的代码上想办法了。
  第一个思路是把获取的URI通过正则还原成覆写后的,再交给cos-html-cache插件的CreateHtmlFile处理,这样做实现上没问题,但太麻烦,判断是东西比较多。改动幅度可能也比较大。
  第二个思路,无意中发现的:),使用wordpress自带的get_permalink();函数(该函数位于wp-includes/link-template.php文件中),可以获得页面的URL地址。只要能在cos-html-cache中调用到这个函数就可以间接的获取到URI。好在wordpress在设计上的支持,可以在插件中调用wordpress自带函数。下面是获取理想中的URI的代码:

$url=get_permalink();//获取当前页面的地址
$url=preg_replace("'http:\/\/[^/]+([^# ]*)'",'$1',$url); //get /xx/xx/xx.xx

修改中还包括几个判断,具体的修改可以查看源文件(在文章末尾有下载地址);

另外在写ISAPI Rewrite规则时应该在转发规则前加上:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

上面的意思是判断请求的文件和目录是否存在,如果不存在那么将应用后面的规则。
一个简单的rewrite配置方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /html/(\d+)\.html /index.php?p=$1

修改后的插件下载地址:Download
目前在wordpress 2.7.1下测试通过(注:首页的生成上有一点问题,需要根据个人需要修改代码)。如果遇到问题请给我留言。

分类: BLOG建设 标签: , ,
  1. 匿名
    2009年6月9日18:12 | #1

    无法下载?

  2. 2009年6月9日21:43 | #2

    现在可以下载了!

  3. 2009年9月8日11:02 | #3

    你好,发现使用这个插件,每访问一次,静态页面就会被重新生成,这样实际更耗系统资源。

  4. 2009年9月19日01:02 | #4

    我修改过的和作者原版的只有在添加或更改文章后才会重新生成。
    你的问题能不能描述得更具体一点?

  5. imwpfans
    2010年7月5日17:30 | #5

    下载后提示,文件损坏

  6. 2010年7月5日23:49 | #6

    换了空间,换了域名地址。这篇文章忘记修改了,文件现在可以下载无错误。不过这个修改版本已经很老了。快一年了这个插件应该升级了,说不定已经支持IIS了。

点击刷新