飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

IIRF免费开源的URL伪静态重写插件

Author:piaoyi Source:飘易
Categories:网络技术 PostTime:2011-1-4 15:22:34
正 文:
   这2天,一直在找ISAPI_Rewrite的破解版本,用了2.9版本的,用了3.1的破解版本的,结果全是挂羊头卖狗肉,都不是真正破解的,只能通过全局文件httpd.conf来配置,但这会影响服务器上的其他网站。SO飘易经过一阵寻觅,终于找到了代替ISAPI_Rewrite的工具:IIRF 。

    IIRF是Ionic出品的ISAPI Rewriting Filter,专门为IIS服务的URL重写插件,完全开源,完全免费。抛弃ISAPI_Rewrite的99美元费用吧。真正可用,这下IIS下的所有的伪静态、二级域名泛解析全部搞定。

    首先,到官方网站 http://iirf.codeplex.com/ 下载最新版本的 IIRF,飘易看到的最新的版本是 IonicIsapiRewriter-2.1.1.23-Release-Win32-bin.zip 。

一、安装方法:
1、把 bin 目录下的文件全部拷贝到 D:\rewrite ,目录你可以自定义。
IIRF免费开源的URL伪静态重写插件

2、如果你创建一个服务器全局范围的设置文件(IirfGlobal.ini),你必须把它与(IIRF.dll)文件在同一目录中。 该URL Rewrite筛选器将寻找其在该文件中的全局设置文件。
3、对(IIRF.dll)文件赋予 IIS_WPG用户组“读取”、“读取与运行”、“写入”权限。
IIRF免费开源的URL伪静态重写插件

4、 打开Internet信息服务管理器。
右键点击IIS管理器左栏“网站” 》“属性”,弹出“网站属性”选项卡,选择“ISAPI筛选器”,如下图添加IIRF。
IIRF免费开源的URL伪静态重写插件

IIRF免费开源的URL伪静态重写插件

5、重启IIS
IIRF免费开源的URL伪静态重写插件

6、右键点击IIS管理器左栏“网站” 》“属性”,弹出“网站属性”选项卡,选择“ISAPI筛选器”,查看“IIRF”加载是否成功。若是绿色向上箭头,则表示加载成功。(提示,IIS重启后,人工访问一下该网站,不然无法触发,也就加载不成功)
IIRF免费开源的URL伪静态重写插件

二、规则文件格式基本和Apache的 mod_rewrite、ISAPI Rewrite一样
IIRF是参照Apache的 mod_rewrite 模块改写而来,所以大部分规则和mod_rewrite一样。略有区别,部分区别如下:
IIRF不支持这些修饰符 [C]、[co]、[E]、[N]、[NE]、[NI]、[NS]、[PT]、[S]、[T]
支持[I](作为[NC]的别名)

规则文件可随时修改,随时生效!

三、日志设置
在IIRF中日志值可以设置为0-5,在规则文件的开头部分有两行设置日志类型:

RewriteLog   C:\Rewrite\supesite\iirfLog.out (注意要写清楚路径,各站点不同) 
RewriteLogLevel 0   (0为不记录,3为一般测试,5为处理故障)

日志的代价高昂,同时不会自动删除文件,日志类型一定要设成0,除非用于检查才能修改为其他值,检查完后一定要改为0,否则日志文件把硬盘占满就麻烦了。如果日志不为0,筛选器起用后,对应文件夹会产生类似以下的文件,是文本格式的,可以用记事本查看。(via:没有ISAPI Rewrite FULL照样玩多站点URL Rewrite伪静态:Ionic’s Isapi Rewrite Filter (IIRF,伪静态URL重写筛选器)的安装与配置)

四、使用方法举例:
先在需要重写的网站根目录下创建(IIRF.ini)文件,并在文件中写入以下规则:
RewriteLogLevel 0 
RewriteLog  D:\iirf\logfiles\fxxsd
RewriteEngine ON
StatusInquiry ON 

RewriteCond %{HTTP_HOST}  ^(?!www)([^.]+)\.piaoyi\.org [NC]
RewriteRule ^/(.*)$  /type/*1.htm [U,L]

    该规则实现的是 任意二级域名 a.piaoyi.org 、b.piaoyi.org、123.piaoyi.org (除www外)等自动重定向到 /type/a.htm 、 /type/b.htm、 /type/123.htm 下。(飘易提醒:IIRF回调符是 *1,而 ISAPI_Rewrite里的回调符是 %1).

    更多的例子,请参考IIRF的英文帮助手册:
例子1,阻止特定IP段访问
RewriteLogLevel 1
RewriteLog c:\inetpub\iirfLogs\iirf
RewriteEngine ON
StatusInquiry ON
IterationLimit 5

# If the IP address is not in the specified range, return 404
# (NF = Not Found)
RewriteCond %{REMOTE_ADDR} ^(?!24\.132\.(\d+)\.(\d+))
RewriteRule ^/.*$ - [NF]

例子2,二级域名访问不同目录
RewriteEngine ON
RewriteLog c:\inetpub\iirfLogs\iirf
RewriteLogLevel 1
StatusInquiry ON

# +++++++++++++++++++++++++++++++++

RewriteCond %{HTTP_HOST}   ^alias1\.domain\.com$  [I]
ProxyPass ^/(.*)$          http://internal-server1/$1

RewriteCond %{HTTP_HOST}   ^alias2\.domain\.com$  [I]
ProxyPass ^/(.*)$          http://internal-server2/$1

RewriteCond %{HTTP_HOST}   ^alias3\.domain\.com$  [I]
ProxyPass ^/(.*)$          http://internal-server3/$1

例子3,老域名301到新域名
RewriteLog c:\logs\iirf
RewriteLogLevel 1
IterationLimit 10
MaxMatchCount 10
RewriteEngine ON
StatusInquiry ON

# With a request like http://olddomain.com/Alpha.htm or http://olddomain.com/Alpha.asp (or
# if the olddomain is prefixed with www) , redirect (HTTP 301)
# the request to http://www.domain.com/Alpha.aspx

RewriteCond  %{HTTP_HOST}            ^(www\.)?olddomain\.com$
RedirectRule ^/(.+)\.(htm|asp)$       http://www.newdomain.com/$1.aspx         [R=301]
作者:piaoyi
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:2011年Godaddy $0.49的.info域名优惠码
下一篇:C#中静态方法与非静态方法区别比较
6条评论 “IIRF免费开源的URL伪静态重写插件”
2011-1-4 17:20:21
很不错的一版插件,学习了!
2011-1-4 19:39:15
这个东西不错,非常实用
2011-1-4 20:23:06
要是apache服务器重写设置相当简单
2011-1-5 15:01:13
非常好的一篇文章,非常的实用,多谢楼主的分享!图片以步骤都非常的清楚,学习了。
5 向飘易学习
2011-1-7 8:16:34
因目前技术不成熟,所以基本看不懂,但是我知道我以后会懂的,学习了!
6 facekiss
2012-1-6 23:32:29
中文参数出现乱码,不知如何解决。
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2010 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有 渝ICP备07006361号