Ionic’s Isapi Rewrite Filter(IIRF)配置详解
2011-03-10 23:18:42 来源:WEB开发网对于ISAPI Rewrite我想大家再熟悉不过了,它的伪静态URL重写功能已经被广大服务器所应用,但是ISAPI Rewrite不是免费的,那么有没有一款软件功能与ISAPI Rewrite相同,但又是免费的呢,而今答案是肯定的,Ionic’s Isapi Rewrite Filter 就是一款就可以实现ISAPI Rewrite相同的功能并且又是免费的,简称:IIRF。下面就对此做初步介绍。
Ionic’s Isapi Rewrite Filter 官方网站:http://iirf.codeplex.com
下载地址:http://iirf.codeplex.com/releases/view/14394
官方使用在线帮助手册:http://cheeso.members.winisp.net/Iirf20Help/frames.htm
IIRF文件下载
将下载下来的文件解压,只要找到bin目录下的iirf.dll文件即可,其他文件都是没有太大用处的,找到这个文件后将其复制到一个合适的目录,我的目的就是多个网站都用这一个dll,所以我将它放置在一个自己整理的服务应用文件夹内;确保该文件夹IIS_WPG或者IUSR_XXX之类的账号拥有权限访问;
安装配置(IIS7)
以下以IIS7.5为例:
1、打开IIS,找到ISAPI筛选器,如图:
添加iirf.dll,如图:
2、然后打开处理程序映射,如图,这一步可以省略:
添加脚本映射,如图:
3、最后,设置iirf.ini和iirf.dll权限,如图,如果iirf.dll所在分区为FAT32格式,这一步可以省略:
注意:需要添加IIS_IUSRS和NETWORK SERVICE两个用户的读写权限。
4、查看设置状态:
--在IIRF.ini文件中输入以下内容--
#开启设置状态
StatusUrl iirfStatus
StatusInquiry ON
#设置日志
RewriteLog D:\inetpub\IonicIsapiRewriter\iirfLog.out
RewriteLogLevel 5
#开启RewriteEngine
RewriteFilterPriority HIGH
NotifyLog ON
RewriteEngine ON
然后在浏览器窗口中输入网址+iirfstatus即可查看设置状态
http://localhost:81/iirfstatus (本人是在本地测试的)
关于iirf.ini规则的编写
规则文件格式基本照搬ISAPI Rewrite,要作修改,如:
RewriteRule [源URL正则条件] [目的URL]
ISAPI Rewrite与IIRF的区别就在[目的URL],ISAPI Rewrite的要转义,而IIRF不用转义。
如果有现成的ISAPI Rewrite的规则可以直接复制过来,将[目的URL]中的反斜杠(\)一个个删除就可以用在IIRF中用了。
值得一提的是,INI配置文件是动态加载的,我们在配置文件的时候不需要重新启动IIS就可以看到配置文件的结果;
好了,由于篇幅所限,就到此吧,如果有什么疑问可以一起交流。
全局配置(iirfglobal.ini)
如果我们想要作用在所有加载了这个dll的网站的配置,我们可以在dll文件夹创建一个iirfglobal.ini文件,这个文件可以使所有加载了同文件夹内的DLL的所有网站使用这个相同的配置,单个配置就需要在每个网站的根目录创建一个文件名iirf.ini的文件,并在其中编写规则即可;
IIRF的Log日志设置
RewriteLog c:\temp\iirfLog.outRewriteLogLevel 0
在我们调试规则的时候,我们可能需要看一下调试的内容Log一边纠正规则:
路径设置,确保文件夹的存在,否则会生成错误系统Log,但不影响IIRF的运行日志的等级,默认值为0
0 – 不会记录日志 1 – 少许的日志 2 – 比较多的日志 3 – 比较详细的日志 4 – 详细的日志,并会跟踪server variable和替换的字符串。
5 – 详细的日志,包括日志文件更改的事件,建议方便调试的时候使用。
规则格式
RewriteRule url-pattern replacement-string [modifiers]
url-pattern: 匹配的正则表达式(必需)
replacement-string: 要替换的字符串(必需)
modifiers: 有关对RewriteRule的操作标记,可选选项 modifiers的功能。
下面列举了它的所有值,允许组合(如[R,L]):
R = Redirect(URL跳转到<replacement-string>地址)
NF = Not found(返回404错误给用户,但该文件并未移除,还是保留在网站中)
L = Last test if match(如果已经匹配,将不在继续匹配下去)
F = Forbidden(跟NF标志相似)
I = Do case-insensitive matching(不区分大小写)
U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服务器变量中)
更多精彩
赞助商链接