Ionic’s Isapi Rewrite Filter(IIRF)配置以及示例

 最近帮群里几个网友弄PHP环境,基本上全部是win2003,虽然我已经不玩win了,但以前会的技术并没有遗忘。于是,答应帮他们处理下,其实,我并不想给他们弄,通常来说win上的环境比较乱,不如linux比较规范。但还算聊得来。所以嘛……

鄙视那些老是破解别人组件的人,而且win上用的比较多的是ISAPI_REWRITE组件,功能不及开源免费的IIRF。


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中用了。
值得一提的是,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服务器变量中)

 


 

IIS多站点伪静态实现工具Ionic’s Isapi Rewrite Filter(IIRF)——ISAPI Rewrite FULL的替代方案

IIS中增加URL Rewrite功能,最多人选用的是名为“ISAPI Rewrite”的软件,网上下载的破解版,其实破解不完善,最终会不能用。

再次查找,找到了Ionic’s Isapi Rewrite Filter,完全开源,完全免费,也完全没有中文使用手册。

不过,IIRF可以完美的支持IIS下多站点的伪静态,可以定义一个所有站点共用的全局规则、以及对每个站点分别定义规则。其规则与apache下的规则基本上完全一致,当然与ISAPI Rewrite也高度兼容,完全可以替代“ISAPI Rewrite”。

首先到官方网站http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx下载最新软 件包,注意要下载的是IonicIsapiRewriter-2.1-Release-bin.zip,版本号可能会变化。以下安装仅针对Windows2003+IIS6.0的服务器环境。

一、安装IIRF

1、复制IIRF的DLL(IIRF.dll)到相应的文件夹,如D:/Rewrite,或者,它可以在一个完全不同的目录树。

2、如果您创建一个服务器全局范围的设置文件(iirfglobal.ini),你必须把它与(iirf.dll)文件在同一目录中。 该URL Rewrite筛选器将寻找其在该文件中的全局设置文件。 如果是多个站点,则在站点更目录下创建(iirf.dll)文件。

3、对(iirf.dll)所在目录赋予IIS_WPG用户组“读取”、“读取与运行”、“写入”权限。

4、 打开Internet信息服务管理器。右键点击IIS管理器左栏“网站”->“属性”,弹出“网站属性”选项卡,选择“ISAPI筛选器”,如下图添加IIRF。

5、重启IIS

6、右键点击IIS管理器左栏“网站” ->“属性”,弹出“网站属性”选项卡,选择“ISAPI筛选器”,查看“IIRF”加载是否成功。若是绿色向上箭头,则表示加载成功。

二、规则文件格式基本照搬ISAPI Rewrite,要作修改

RewriteRule [源URL正则条件] [目的URL]
ISAPI Rewrite与IIRF的区别就在[目的URL],ISAPI Rewrite的要转义,而IIRF不用转义。
如果网上有现成的ISAPI Rewrite的规则可以直接复制过来,将[目的URL]中的反斜杠()一个个删除就可以用在IIRF中用了。
知道这个之后,你就可以随便在网上与人交流,按ISAPI Rewrite交流,最后把转义符()删掉就行了。

三、日志设置

在IIRF中日志值可以设置为0-5,在规则文件的开头部分有两行设置日志类型
RewriteLog C:RewritesupesiteiirfLog.out (注意要写清楚路径,各站点不同)
RewriteLogLevel 0 (0为不记类,3为一般测试,5为处理故障)
日志的代价高昂,同时不会自动删除文件,日志类型一定要设成0,除非用于检查才能修改为其他值,检查完后一定要改为0,否则日志文件把硬盘占满就麻烦了。
如果日志不为0,筛选器起用后,对应文件夹会产生类似以下的文件,是文本格式的,可以用记事本查看。
iirfLog.out.12345.log

四、查看配置

在IIRF.ini文件中输入以下配置参数,则可通过浏览器方便查看目前IIRF配置
StatusUrl iirfStatus
StatusInquiry ON
在浏览器中输入http://localhost/iirfstatus,即可查看。

五、规则文件可随时修改,随时生效!(这一点跟apache一样)

六、附上WordPress的IIRF规则

先到WordPress后台设置固定连接为:/post/%post_id%.html
然后在WordPress所在网站的根目录创建(iirf.ini)文件,并在文件中加入以下规则:

RewriteLogLevel 0

RewriteLog E:/flyingbluelogfilesIIRFLOGlog

StatusUrl iirfStatus

StatusInquiry ON

RewriteRule /index.html$ /index.php [L]

# # from accessing through HTTP

# # WordPress rewrite rules

# # Below is for permalink like /post/%post_id%.html

# # Provided By Sideblue

# # URL:http://ivup.cn

RewriteCond %{REQUEST_FILENAME} ^wp-content.*

RewriteCond %{REQUEST_FILENAME} ^wp-admin.*

RewriteCond %{REQUEST_FILENAME} ^wp-include.*

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule /post/tag/(.*) /index.php?tag=$1

RewriteRule /tag/(.*) /index.php?tag=$1

RewriteRule /(contact|about-copyright|favor|archives|tags|sitemap) /index.php?pagename=$1

RewriteRule /post/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php?category_name=$1&feed=$2

RewriteRule /post/category/?(.*) /index.php?category_name=$1

RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php?author_name=$1&feed=$2

RewriteRule /author/?(.*) /index.php?author_name=$1

RewriteRule /rss.xml /wp-feed.php?feed=rss2

RewriteRule /feed/?$ /wp-feed.php?feed=rss2

RewriteRule /comments/feed/?$ /wp-feed.php?feed=comments-rss2

# RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index.php?p=$1&page=$2

# RewriteRule /post/([0-9]+)/?([0-9]+)?/?$ /index.php?p=$1&page=$2

RewriteRule /post/([0-9]+).html /index.php?p=$1

RewriteRule /page/(.*)/?s=(.*) /index.php?s=$2&paged=$1

RewriteRule /page/(.*) /index.php?paged=$1

RewriteRule /post/date/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index.php?year=$1&monthnum=$2&day=$3&name=$4&page=$5

RewriteRule /post/date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3&page=$4

RewriteRule /post/date/([0-9]{4})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&page=$3

RewriteRule /post/([0-9]+).html/(feed|rdf|rss|rss2|atom) /index.php?feed=rss2&p=$1

RewriteRule /post/([0-9]+).html/trackback /wp-trackback.php?p=$1

 

 

300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00660 秒