首页 > 原创 > 生活 > WordPress无Rewrite用cos-html-cache实现静态化
2012
08-22

WordPress无Rewrite用cos-html-cache实现静态化

 

 

WordPress是一个非常不错的博客程序(不然本人页不用啊~),但是有一个缺点~插件安装多了就显示的很慢,但是还有很多插件不得不装,比如本人是个程序员,在网站上发布自己的心得,前几天写了域名批量查询工具by苗启源:http://miaoqiyuan.cn/p/yuming-query/,想要吧代码高亮的形式显示,安装了WP-Syntax:http://wordpress.org/extend/plugins/wp-syntax/,这样每次有用户请求页面就很变的很慢,甚至导致用户不能正常访问。这时候实现程序的静态化是一个不错的选择~

在网上狂搜一番,口碑最好的是cos-html-cache(http://wordpress.org/extend/plugins/cos-html-cache/),其最新版本为2.5,需要服务器支持Rewrite才能实现,但是国内虚拟主机基本上都是Window主机IIS平台,很少有支持Rewrite(IIS需要ISAPI Rewrite支持),难道国内的WrodPress只能用Liunx虚拟主机才能实现吗?我们Windows主机就没有静态化的权利?

经过笔者一番测试,终于实现了用WordPress不使用Rewrite实现静态化的方法(http://miaoqiyuan.cn/p/wordpress-plus-chc)

1.下载cos-html-cache 1.1(http://downloads.wordpress.org/plugin/cos-html-cache.1.1.zip),解压,传到/wp-content/plugins/目录,在后台”插件”中启用”cos-html-cache”

2.在”设置”永久选项中,自定义结构修改静态化的规则,本站为/p/%postname%/

3.在”设置”-”CosHtmlCache” 生成静态。看到这里,可能有的读者会说这和网上的很多文章一样,不就是网上的文章Copy了一份吗?这样是实现了内容页的静态化,点分类的时候就开始提示出错了~因为CosHtmlCache1.1只支持文章页首页的静态化,没有这个页面自然不能访问咯。解决方法嘛,请往下看:

4.现在虚拟主机都支持404页面自定义,所以~~聪明的你想到了吧?如果访问已经生成的静态页,自然能正常访问,不能生成的呢?提交参数给index.php,这样就实现了服务器不支持Rewrite实现静态化的目的了,下面是功能实现的代码:

我的空间支持404.asp,所以先发个404.asp的代码

< %
‘ASP_Rewrite with 404 By MiaoQiyuan

‘定义WordPress的处理页面,也可以是”/?”
PHP_Resource=”/index.php/”

‘获取服务器地址,这样可以实现多域名访问
Hst_Svr=Request.Servervariables(“HTTP_HOST”)
‘获取服务器端口,防止
Hst_Pot=Request.Servervariables(“SERVER_PORT”)
‘构造网址
Hst=Hst_Svr&”:”&Hst_Pot
‘构成404错误提交给404.asp的请求,因为服务器不一样,大家可以自己根据自己的虚拟主机测试一下
Err_404=”404;http://”&Hst&”/”
Res_Get=Request.QueryString
‘用真实404.asp的请求的错误信息(包括错误的请求地址)替换掉构成404错误,就剩下了请求的相对地址
Fnk_Get=Replace(Res_Get,Err_404,””)

‘如果不为空,吧Fnk_Get提交给定义WordPress的处理页面
If Request.QueryString<>”” then
Response.Redirect PHP_Resource&Fnk_Get
Else
Response.Redirect PHP_Resource&”404.php”
End if
%>


下面说一下普通404.htm实现上述功能,因为html不能直接获取端口域名,所以我们用JS调用的方法,404.htm页面的代码只有一行


404_js.asp的代码如下

< %
<%
‘ASP_Rewrite with 404,Javascript By MiaoQiyuan

‘定义WordPress的处理页面,也可以是”/?”
PHP_Resource=”/index.php/”

‘获取服务器地址,这样可以实现多域名访问
Hst_Svr=Request.Servervariables(“HTTP_HOST”)
‘获取服务器端口,防止
Hst_Pot=Request.Servervariables(“SERVER_PORT”)
‘构造网址
Hst=Hst_Svr&”:”&Hst_Pot
‘构成404错误提交给404.asp的请求
Err_404=”404;http://”&Hst&”/”
%>

 

为什么不是用CosHtmlCache2.5?
因为CosHtmlCache2.0以上的版本都是根据Rewrite第一次访问自动生成,比如这篇文章,/p/wordpress-plus-chc,第一次访问,因为没有页面跳到/index.php/p/wordpress-plus-chc,这样文件路径就是/index.php/p/wordpress-plus-chc,而不是/p/wordpress-plus-chc,所以导致不能生成,而CosHtmlCache1.1是在文章创建的时候根据设置中的路径生成。
如果服务器仅支持404.htm是否有生成的必要?
在不考虑搜索引擎收录的情况下,可以使用,如果想要搜索引擎较好的收录,建议不要使用。404.htm只能通过JavaScript在浏览器中识别,而在搜索引擎中只能看到,如果支持404.asp就能较好的收录

最后编辑:
作者:狐狸窝窝主

狐狸窝窝主,一个闷骚的窝主!带着曾经的梦想,踏上新的旅途!
如果你在这里找到一点触动你或者帮助到你的,就加狐狸微信StarFoxz吧!


留下一个回复

你的email不会被公开。