ISAPI_Rewrite 实用的 RewriteRule (转静态)「建议收藏」

(5) 2024-05-22 19:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说ISAPI_Rewrite 实用的 RewriteRule (转静态)「建议收藏」,希望能够帮助你!!!。

[ISAPI_Rewrite]

# 3600 = 1 hour
CacheClockRate 3600

RepeatLimit 32

# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP

# 无忧网络文章管理系统 Rewrite 规则

#RewriteRule ^(.*)/Channel-([0-9]+)-([0-9]+)/.html$ $1/Channel/.Asp/?ID=$2&Page=$3 [I,O]
#RewriteRule ^(.*)/Channel-([0-9]+)/.html$ $1/Channel/.Asp/?ID=$2 [I,O]

#RewriteRule ^(.*)/(.+)_([0-9]+)-([0-9]+)/.html$ $1/Content/.Asp/?ID=$3&Page=$4 [I,O]
#RewriteRule ^(.*)/(.+)_([0-9]+)/.html$ $1/Content/.Asp/?ID=$3 [I,O]

#RewriteRule ^(.*)/([0-9]+)-([0-9]+)/.html$ $1/Content/.Asp/?ID=$2&Page=$3 [I,O]
#RewriteRule ^(.*)/([0-9]+)/.html$ $1/Content/.Asp/?ID=$2 [I,O]

#RewriteRule /test-([0-9,a-z]*).html /test.asp/?inso=$1
#test-333.html-->test.asp?inso=333
#RewriteRule /test_(/d+)_(/d+)_(/d+)/.html /test.asp/?page=$1&type=$2&type2=$3 [N,I]
#test_1_2_3.html-->test.asp?page=1&type=2&type2=3
RewriteRule /([0-9,a-z]*) /test.asp/?id=$1
#localhost/333-->test.asp?id=333

------------------------------------
1. 从http://www.isapirewrite.cn下载ISAPI_Rewrite Lite版,安装在硬盘上,如C:/Program Files/Helicon/ISAPI_Rewrite;
2. 打开IIS管理,选择要配置的主机,转到“ISAPI筛选器”选项卡。并添加一个筛选器,名称任意,执行文件为“C:/Program Files/Helicon/ISAPI_Rewrite/ISAPI_Rewrite.dll”;
3. 修改C:/Program Files/Helicon/ISAPI_Rewrite/httpd.ini文件,添加相应的过滤规则,例如:
我要将输入的网址localhost/54powerman显示localhost/blog.asp?id=54powerman,在配置文件中输入如下配置信息。
RewriteRule ^(/)([a-z0-9/-/_]+)$ /blog.asp?id=$2 [I,O]
4. 运行iisreset,重启IIS;这一步很重要,每次修改httpd.ini后都要重启以加载配置。
5. 测试,在站点首页目录添加新的blog.asp作为测试页面,输入代码:
<%
Response.Write "Hello," & Request.QueryString("id") & ".This is your blog."
%>
6. 在浏览器地址栏中输入http://localhost/54powerman,地址栏没有变化,但是网页中显示了如下内容:
Hello,54powerman.This is your blog.
7. 测试分析:http://localhost/54powerman这个url并不存在真实的文件,但是从用户看来好像存在真实的文件一样。
8. 试用后的思考:
8.1 如果RewriteRule ^(/soft_)([a-z0-9/-/_]+)(.html)$ /down.asp?softid=$2 [I,O],结果如何?
提示:输入http://localhost/soft_159746.html,结果为/down.asp?softid=159746的内容,这正好是一些下载站的方式。
8.2 如果RewriteRule ^(/)([a-z0-9/-/_]+)(/)([a-z0-9/-/_/.]+)$ /soft.asp?id1=$2&id2=$4 [I,O],结果如何?
提示:输入http://localhost/54powerman/photo.html,结果为id1=54powerman;id2=photo.html,这样可以让54powerman看起来像是一个虚拟目录
8.3 再复杂一些,如果RewriteRule ^(/)([a-z0-9/-/_/.//]+)$ /soft.asp?id=$2 [I,O]呢?
提示:http://localhost/54powerman/myFolder/photos/list.asp,那么soft.asp中就会获得到id1=54powerman/myFolder/photos/list.asp,在soft.asp中来拆分各个参数,是不是就可以模拟更复杂的虚拟目录结构呢。
如下的soft.asp:
query = Request("id")
Response.Write "原始字符串:   " & query &"<p>拆分后的字符串:<p>"
params = Split(query,"/")
For i=0 To UBound(params)
Response.Write 1+i & "级目录   " & params(i) &"<p>"
Next
显示如下:
原始字符串:   54powerman/myFolder/photos/list.asp
拆分后的字符串:

1级目录   54powerman

2级目录   myFolder

3级目录   photos

4级目录   list.asp

保存.

注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite进行动态链接重写HTML静态网址,

最近升级到 Widnows 2003 IIS6.0 后,发现ISAPI_Rewrite根本运行不起来,在IIS 6.0里面一直提示“未加载”,后来查了又查,原来是文件的权限问题。

IIS 6.0 ISAPI_Rewrite 是在Service帐号下运行的,将数据文件的读写权限给予Service 帐号后,ISAPI_Rewrite 终于可以正常运行了。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复