ISAPI_Rewrite规则实践(转)
最近刚刚做完一个网站,http://www.pepipe.cn/,闲着没事就想把网页静态化,
网站静态化有两种方案:
1,由后台程序生产HTML页面,现在很多CMS都具有这样的功能,不过就是感觉比较麻烦,每次更新完都要生成一次,要事内容多的话那就真的比较痛苦,要等的时间长不说,万一空间商说你运行的程序占用了大量的资源给你关闭了,那就真的比较郁闷了,所以这样的方法不想用,而且如果是自己写的程序的话还要写一个静态页面生成系统,偶水平有限,所以这种方法就不予考虑了。
2,ISAPI_Rewrite生成伪静态方案,个人觉得这个方案还是比较容易实现,不过就是很多站长都是资金有限,用的都是虚拟主机,虚拟主机支持伪静态的还是比较少,所以关键要找到一家能够支持伪静态的虚拟主机服务商,好像西部数据的就支持这样的,而且ISAPI_Rewrite规则都可以自己在后台定义,很方便,还有就是92合租的也支持。
下面就谈谈偶的网站的伪静态进程:
早就在淘宝网站买了一个空间,很便宜,1G才七十多块,还有就是服务商答应给我装ISAPI_Rewrite组建,规则我写好了给他们,他们帮我加进去。
http://www.pepipe.cn/网站其实很简单,只有三个地方需要静态化,就是一个是主页,一个是留言板还有一个就是行业动态,主页本来是想做成html的,但是要调用数据库里的一些数据,没办法只好做成了asp的,不过没关系偶可以伪静态,呵呵,真是好啊。
第一步 下载ISAPI_Rewrite组建,这个网上大把,随便一搜索就出来了。ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com/download/,就是那Lite Version (free)啦。安装.msi的文件,和装一般程序一样装就可以了,偶就装在D:\ISAPI_Rewrite.
接下来一步比较重要了,打开Internet 信息服务,右键,web站点属性,点ISAPI筛选器选项卡,添加筛选器,名称自己填,路径自己指定ISAPI_Rewrite.dll,然后确定。
到此,ISAPI_Rewrite组建就安装好了,接下来就要写规则了。
下面就以 news.asp 为例。
news.asp是读取新闻列表,shownews.asp是读取新闻的内容。
news.asp规则:
RewriteRule /news.html /news.asp
RewriteRule /pe-news-([0-9,a-z]*).html /shownews.asp\?id=$1
RewriteRule /news_([0-9,a-z]*).html /news.asp\?page=$1
第一句就是把对news.html的访问映射到news.asp上面
第二句就是把对pe-news-19.html访问映射到到shownews.asp?id=19上面
第三句就是把对news_2.html的访问映射到news.asp?page=2上面
news.asp代码修改:原来是:
<a href="shownews.asp?id=<%= rs("id") %>" target="_blank"><%= rs("title") %> </a>
修改链接后变成:
<a href="pe-news-<%= rs("id") %>.html" target="_blank"><%= rs("title") %> </a>
翻页代码也是一样的修改链接部分:
修改前:
<%
response.Write"当前有"&rs.recordcount&"条记录"
if page =1 then
response.Write"首页 前页 "
else
response.Write"<a href=news.asp?page=1>首页</a> <a href=news.asp?page="&page-1&">前页</a> "
end if
if page =allpages then
response.Write"下页 末页"
else
response.Write"<a href=news.asp?page="&page+1&">下页</a> "
response.Write"<a href=news.asp?page="&allpages&">末页</a>"
end if
response.Write" 第"&page&"页 共"&allpages&"页 "
%>
修改后:
<%
response.Write"当前有"&rs.recordcount&"条记录"
if page =1 then
response.Write"首页 前页 "
else
%>
<a href=news_1.html>首页</a> <a href=news_<%= page-1 %>.html >前页</a>
<%
end if
if page =allpages then
response.Write"下页 末页"
else
%>
<a href=news_<%= page+1 %>.html>下页</a> <a href=news_<%=allpages%>.html >末页</a>
<%
end if
response.Write" 第"&page&"页 共"&allpages&"页 "
%>
注意红色部分的区别,这就是主要的地方,修改后的链接要符合你的伪静态规则。
例子请看:www.pepipe.cn/news.html 和www.pepipe.cn/news.asp
www.pepipe.cn/pe-news-19.html 和www.pepipe.cn/shownews.asp?id=19
www.pepipe.cn/news.asp?page=2 和www.pepipe.cn/news_2.html
两种效果是一样的
index.asp和guest.asp这两个文件修改和规则都跟上面类似,就不再说了。整个规则就是下面的:
# PEPIPE.CN伪静态规则
RewriteRule /pe-news-([0-9,a-z]*).html /shownews.asp\?id=$1
RewriteRule /news_([0-9,a-z]*).html /news.asp\?page=$1
RewriteRule /guest_([0-9,a-z]*).html /guest.asp\?page=$1
RewriteRule /index.html /index.asp
RewriteRule /guest.html /guest.asp
RewriteRule /news.html /news.asp
找到ISAPI_Rewrite安装目录下的http.ini文件去掉只读属性,把上面的代码加进去就OK啦。
偶也是菜鸟,希望能抛砖引玉,呵呵。