ISAPI筛选器,现在网络上最多的应用就是作为伪静态输出。

因为这种操作人力成本最低,所以很适合搭配ASP.NET来操作。国内空间也支持这个。

===============================

前几天帮客户上传一个网站,网站里用了是web.config配置了伪静态。

这个就是网上通常所说的利用一个rewrite.dll来配置ASP.NET网站。

这个网站在本地机运行良好。但是,上传到服务器就不行了。

GOOGLE了好几天的资料,发现网上的都是转载,大多未经亲自试验,让我实在头疼。经过这两天的搜索,总结一下:

第一:通过web.config进行配置(利用网上热传的rewrite.dll)

ASP.NET上通过WEB.CONFIG配置的确可以达到伪静态的效果,但是不能脱离IIS去配置,配置了WEB.CONFIG文件后,仍然需要在IIS上这样操作:

在服务器的iis配置中,需要设置如下信息:
站点-属性-主目录-配置-通配符应用程序映射(执行顺序)中插入:
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

=================================

第二:配置ISAPI筛选器(利用这个Rewrite1.3.0.16)

这种方法,无需对ASP.NET进行任何特殊配置。

在Rewrite1.3.0.16文件夹中,有如下文件

httpd.ini

httpd.parse.errors

mtbnotif.dll

Rewrite.dll

有了这几个文件后,在IIS中添加ISAPI筛选器即可,操作方法如下:

默认网站——右键属性——ISAPI筛选器——添加——筛选器名称re,可执行文件选择上述文件夹中的rewrite.dll——确定即可。(应该无需重启IIS,但建议重启。)

随后,就需要在httpd.ini中进行配置了。

这个文件的配置网上也一大堆,真假难辨,以下是我亲写的规则,保证有用,经过试验!

 

 
  
  1. [ISAPI_Rewrite] 
  2. # 3600 = 1 hour 
  3. CacheClockRate 3600 
  4. RepeatLimit 32 
  5. # 请在下面添加您的规则         
  6. RewriteRule /Default.htm /default.aspx 
  7. RewriteRule /(.*).htm\?id=(\d+) /$1.aspx\?id=$2 
  8. RewriteRule /(.*)_(\d+).htm /$1.aspx\?id=$2 
  9. RewriteRule /(.*)_(\d+).do /$1.aspx\?id=$2 

rewriterule 后面跟着的就是规则。

/代表网站根目录(不太准确,应该是当前目录,反正需要知道就是该网页所在虚拟路径)

上面的四行分别是

1、把对Default.htm的访问提交为 default.aspx。

2、把匹配(.*).htm\?id=(\d+) 这个规则的访问,提交为$1.aspx\?id=$2 

例子:如访问snowleung.htm?id=12345,则和访问snowleung.htm?id=12345结果相同。

3、把匹配(.*)_(\d+).htm 这个规则的访问,提交为$1.aspx\?id=$2

例子:如访问snowleung_12345.htm,则和访问snowleung.htm?id=12345结果相同。(隐藏参数吗?)

 

4、把匹配(.*)_(\d+).do 这个规则的访问,提交为$1.aspx\?id=$2

例子:如访问snowleung_12345.do,则和访问snowleung.htm?id=12345结果相同。(改写后缀名吗?)

有了以上的规则,你应该可以轻易写出自己的输出了。

补充几个小小的正则,可以让你快速解决问题。

1、小括号()里面表示参数值,后可利用$1,$2引用。

2、转移字符要用\

3、符合正则表达式的使用规则。

=====