url重写IIRF(Ionic's Isapi Rewrite Filter)手册第1/2页
更新时间:2016年1月27日 20:18 点击:2003
说明
IIRF与ISAPI_Rewrite的规划区别只在于IIRF不需要使用转义字符\,而ISAPI_Rewrite则需要使用转义字符\.
介绍
IIRF是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新编译)开发。它可以运行在IIS5.0+,支持ASP,ASP.NET,PHP等许多格式。相对比ASP.NET2.0自带的URL重写,具有更好的性能和许多我们所需要特性,重要的一点在于:它可以支持无扩展名的URL(例如:cnlbogs.com/****,你无需在创建一个默认的default.aspx文件,IIRF自动会帮你解析),让URL更加的方便我们记忆,也能进一步提高搜索的排名?IIRF能够在aspnet_isapi提前捕获我们所请求的URL进行处理,如果我们访问cnlbogs.com/a.aspx,需要获取cnlbogs.com/a.htm,步骤需要(iis-aspnet_isapi),通过IIRF,我们可以直接跳aspnet_isapi.dll,直接访问a.htm,要知道,这种方式在ASP.NET是无法实现的。
IIRF跟ASP.NET重写URL一样,它也是基于正则的方式来匹配,具有LOG记录,请求的条件判断。还是进入正题吧。
安装
IIRF安装需要我们手动操作来完成。不过。也是很方便了。
1 将IsapiRewrite4.dll, IsapiRewrite4.ini复制到c:\windows\system32\inetsrv(你也可以复制到其它适当的文件夹下面)。
IsapiRewrite4.ini是IIRF配置文件,每次该文件更改之后,IIRF会自动重新加载该文件,无需重启IIS来重新加载配置,如果您修改后INI文件后格式不正确,IIRF将会自动获取最后正确加载的配置文件。
2 打开IIS管理器,选择“默认网站”,右击“属性”,选择“ISAPI筛选器”,点击“添加”,输入筛选器名称:Ionic Rewriter,可执行文件选择上面复制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,点“确定”。
3重启IISADMIN service服务。(在计算机管理----windows服务里面)
4 完成。
日志
IIRF能够将INI配置文件加载,用户的URL请求记录都会保存到指定的日志文件里。因为它具有很大的性能开销,因此建议将它日志的记录等级设为0,只有
为了方便调试的时候时候,可以设置为5,
RewriteLog 保存的日志路径,如 c:\temp\iirfLog.out
RewriteLogLevel {0,1,2,3,4,5} 日志的等级,默认值为0
0 –不会记录日志
1- 少许的日志
2- 比较多的日志
3- 比较详细的日志
4- 详细的日志(4),并会跟踪server variable和替换的字符串。
5- 详细的日志(5),包括日志文件更改的事件,建议方便调试的时候使用
正则
正则的语法跟.NET一样,只不过是格式不一样而已。所以我也不在详细介绍。具体有关正则的说明大家可以用GOOGLE搜索。
格式:
RewriteRule <url-pattern> <replacement-string> [<modifiers>]
url-pattern:匹配的正则表达式(必需)
replacement-string:要替换的字符串(必需)
modifiers:有关对RewriteRule的操作标记。可选选项。在下面我会说明
默认下IIRF的url-pattern,replacement-string正则的前面已经带了主机头的。
为了方便描述,直接看几个示例(以下示例基本全部来源IIRF文档)
RewriteRule ^/original/(.*).php /modified/$1.aspx
源:http://xxx/original/index.php
目标:http://xxx/modified/index.aspx
RewriteRule ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG) /chiesa/pics.aspx?d=$1&p=$2.$3
源:http://xxx/dinoch/album/30/1.jpg
目标:http://xxx/chiesa/pics.aspx?d=30&p=1.jpg
比较简单,主要还在于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服务器变量中。)
[R] or [R=code]
就像跟我们在ASP.NET使用的Redirect方法一样,重新改变浏览器的方向,跳转到新的指定的URL中。
[R=code]允许我们指定特定的HTTP状态返回码。只能介于301到399。如果超出这个范围。默认会是使用302状态。
RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]
源:http://xxx/goto.aspx?r=http://www.google.com/
目标:http://www.google.com
[L]
上面已经简单介绍过。不在说明
[NF]
上面已经简单介绍过。它还可以跟RewriteCond一起配合,来实现自定义的404错误请求。
特别要注意,你所要匹配的文件必须存在,替换的字符串不允许是存在文件名
RewriteRule ^/1008.aspx$ /1.aspx [NF]
1008.aspx文件需要存在,1.aspx不存在,否则无法正常达到我们的结果。
(很奇怪,我不知道是不是我搞错了。但我最终测试的结果确实是这样,文档也没详细说明过,有知道的朋友可以告诉我一下原因)
[F]
不在说明。
[I]
模糊匹配
[U]
保存原始的url到HTTP_X_REWRITE_URL服务器变量中。
在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]获取原始值。
IIRF与ISAPI_Rewrite的规划区别只在于IIRF不需要使用转义字符\,而ISAPI_Rewrite则需要使用转义字符\.
介绍
IIRF是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新编译)开发。它可以运行在IIS5.0+,支持ASP,ASP.NET,PHP等许多格式。相对比ASP.NET2.0自带的URL重写,具有更好的性能和许多我们所需要特性,重要的一点在于:它可以支持无扩展名的URL(例如:cnlbogs.com/****,你无需在创建一个默认的default.aspx文件,IIRF自动会帮你解析),让URL更加的方便我们记忆,也能进一步提高搜索的排名?IIRF能够在aspnet_isapi提前捕获我们所请求的URL进行处理,如果我们访问cnlbogs.com/a.aspx,需要获取cnlbogs.com/a.htm,步骤需要(iis-aspnet_isapi),通过IIRF,我们可以直接跳aspnet_isapi.dll,直接访问a.htm,要知道,这种方式在ASP.NET是无法实现的。
IIRF跟ASP.NET重写URL一样,它也是基于正则的方式来匹配,具有LOG记录,请求的条件判断。还是进入正题吧。
安装
IIRF安装需要我们手动操作来完成。不过。也是很方便了。
1 将IsapiRewrite4.dll, IsapiRewrite4.ini复制到c:\windows\system32\inetsrv(你也可以复制到其它适当的文件夹下面)。
IsapiRewrite4.ini是IIRF配置文件,每次该文件更改之后,IIRF会自动重新加载该文件,无需重启IIS来重新加载配置,如果您修改后INI文件后格式不正确,IIRF将会自动获取最后正确加载的配置文件。
2 打开IIS管理器,选择“默认网站”,右击“属性”,选择“ISAPI筛选器”,点击“添加”,输入筛选器名称:Ionic Rewriter,可执行文件选择上面复制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,点“确定”。
3重启IISADMIN service服务。(在计算机管理----windows服务里面)
4 完成。
日志
IIRF能够将INI配置文件加载,用户的URL请求记录都会保存到指定的日志文件里。因为它具有很大的性能开销,因此建议将它日志的记录等级设为0,只有
为了方便调试的时候时候,可以设置为5,
RewriteLog 保存的日志路径,如 c:\temp\iirfLog.out
RewriteLogLevel {0,1,2,3,4,5} 日志的等级,默认值为0
0 –不会记录日志
1- 少许的日志
2- 比较多的日志
3- 比较详细的日志
4- 详细的日志(4),并会跟踪server variable和替换的字符串。
5- 详细的日志(5),包括日志文件更改的事件,建议方便调试的时候使用
正则
正则的语法跟.NET一样,只不过是格式不一样而已。所以我也不在详细介绍。具体有关正则的说明大家可以用GOOGLE搜索。
格式:
RewriteRule <url-pattern> <replacement-string> [<modifiers>]
url-pattern:匹配的正则表达式(必需)
replacement-string:要替换的字符串(必需)
modifiers:有关对RewriteRule的操作标记。可选选项。在下面我会说明
默认下IIRF的url-pattern,replacement-string正则的前面已经带了主机头的。
为了方便描述,直接看几个示例(以下示例基本全部来源IIRF文档)
RewriteRule ^/original/(.*).php /modified/$1.aspx
源:http://xxx/original/index.php
目标:http://xxx/modified/index.aspx
RewriteRule ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG) /chiesa/pics.aspx?d=$1&p=$2.$3
源:http://xxx/dinoch/album/30/1.jpg
目标:http://xxx/chiesa/pics.aspx?d=30&p=1.jpg
比较简单,主要还在于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服务器变量中。)
[R] or [R=code]
就像跟我们在ASP.NET使用的Redirect方法一样,重新改变浏览器的方向,跳转到新的指定的URL中。
[R=code]允许我们指定特定的HTTP状态返回码。只能介于301到399。如果超出这个范围。默认会是使用302状态。
RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]
源:http://xxx/goto.aspx?r=http://www.google.com/
目标:http://www.google.com
[L]
上面已经简单介绍过。不在说明
[NF]
上面已经简单介绍过。它还可以跟RewriteCond一起配合,来实现自定义的404错误请求。
特别要注意,你所要匹配的文件必须存在,替换的字符串不允许是存在文件名
RewriteRule ^/1008.aspx$ /1.aspx [NF]
1008.aspx文件需要存在,1.aspx不存在,否则无法正常达到我们的结果。
(很奇怪,我不知道是不是我搞错了。但我最终测试的结果确实是这样,文档也没详细说明过,有知道的朋友可以告诉我一下原因)
[F]
不在说明。
[I]
模糊匹配
[U]
保存原始的url到HTTP_X_REWRITE_URL服务器变量中。
在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]获取原始值。
当前1/2页 12下一页
相关文章
从PHP $_SERVER相关参数判断是否支持Rewrite模块
如果是http://www.jb51.net/p1141.html形式的URL,可通过$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']值的区别来分析,最主要是如果页面是通过重定向会产生$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIREC...2013-10-04真正可用的IIS的ISAPI-Rewrite伪静态URL图片防盗链规则写法
本规则支持白名单排除式防盗链,搜索引擎友好不屏蔽,被盗链后的错误提示转向,支持各种文件类型,经作者亲验真的能用...2016-01-27- 这篇文章主要介绍了ASP.NET中Global和URLReWrite用法,较为深入浅出的分析了Global.asax的功能及配置技巧,并实例分析了URLReWrite实现伪静态的方法,需要的朋友可以参考下...2021-09-22
- ServerName www.111cn.net ServerAlias *.111cn.net 111cn.net RewriteEngine on RewriteCond %{HTTP_HOST} ^((?!www)w)+.111cn.net$ RewriteRul...2016-11-25
- 这篇文章主要介绍了nginx rewrite重写规则与防盗链配置方法教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-28
- apache Rewrite检查手机移动设备访问网站 代码如下 复制代码 RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} (android|bbd+|meego...2016-01-28
没有ISAPI Rewrite FULL照样玩多站点伪静态的方法分享
IIS中增加URL Rewrite功能,最多人选用的是名为“ISAPI Rewrite“的软件,网上下载的破解版,其实破解不完善,最终会不能用...2016-01-27详解nginx rewrite和根据url参数location
本篇文章主要是介绍了nginx rewrite和根据url参数location,有兴趣的同学可以了解以下。 ...2016-11-22- 这篇文章主要介绍了nginx重写rewrite基础及实例分享,需要的朋友可以参考下...2016-05-22
- IIS不支持UrlRewrite。 所以我们需要通过安装第三方服务器扩展让IIS支持UrlRewrite。 目前有一种产品能比较好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。...2016-01-27
- 这篇文章介绍了ASP.NET中URL Rewrite的具体实现方法,有需要的朋友可以参考一下...2021-09-22
Nginx下支持Thinkphp URL Rewrite的配置示例
这篇文章主要介绍了Nginx下支持Thinkphp URL Rewrite的配置示例,本文直接给出配置示例,需要的朋友可以参考下...2016-01-27- 这篇文章主要介绍了Nginx Rewrite规则与使用介绍和技巧实例,本文讲解了正则表达式匹配、文件及目录匹配、flag标记、Nginx Rewrite相关指令等内容,需要的朋友可以参考下...2016-01-27
- 本功能对服务器环境有特殊要求,独立主机用户需要对 Web 服务器增加相应的 Rewrite 规则,因此需要服务器权限才可使用...2016-01-27
url重写IIRF(Ionic's Isapi Rewrite Filter)手册第1/2页
IIRF与ISAPI_Rewrite的规划区别只在于IIRF不需要使用转义字符\,而ISAPI_Rewrite则需要使用转义字符\....2016-01-27- linux系统中 一、检查确认Rewrite模块加载 本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.conf LoadModule rewrite_module modules/mod_rewrite.so 如果前...2016-01-28
- 最近服务器需要防图片别盗链,所以找了很多代码,下面给出具体配置代码...2016-01-27
- 首先确认你已经开启服务器的路由重写模块,如果不确认,请在httpd.conf文件中查找如下代码,并将前面的#符号删除,重启服务器,即开启了重写模块 第一步:找到apache的配置文件httpd.co...2016-01-28
- Rewirte主要的功能就是实现URL的跳转,Rewirte代码的正则表达式是基于Perl语言.基于服务器级的(httpd.conf)和目 录级的 (.htaccess)两种方式,而我们Apache一般用的是目录级...2016-01-28
IIS中使用的ISAPI_Rewrite Full版本做反向代理详解
代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 ...2016-01-27