url重写IIRF(Ionic’s Isapi Rewrite Filter)手册第1/2页

说明

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下一页

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/7464.html

(0)
晴川运维晴川运维
上一篇 2025年6月9日
下一篇 2025年6月9日

相关推荐

  • IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7

    1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个…

    IIS 2025年6月29日
  • IIS入门:为网站分配域名

    IIS入门:为网站分配域名 IIS入门:为网站分配域名 在建立一个网站时,为其分配一个域名是非常重要的。域名是网站的唯一标识符,使用户能够通过互联网访问您的网站。在使用IIS(In…

    IIS 2025年10月25日
  • IIS 6.0的web园 最大工作进程数

    IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)。要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网…

    IIS 2025年6月8日
  • iis 添加新的.shtml的影射

    执行文件是: C:\WINDOWS\system32\inetsrv\ssinc.dll 动作是:GET,POST 也可以为整台服务器的主机加上: 在管理区—虚拟主机服…

    IIS 2025年7月10日
  • 用户IIS APPPOOL\DefaultAppPool登录失败的解决方法

    本文为大家分享了解决iis APPPOOL\DefaultAppPool登录失败的问题,供大家参考,具体内容如下 添加ASP.NET网站时,选择添加”添加应用程序&#8…

    IIS 2025年6月8日
  • win2003 PHP服务器的突破新思路

    在WIN2000中, 一个普通的php SHELL便能把它打垮; 在WIN XP, 即使Safe mode = off,你也无法用system() 等函数执行系统命令, 但是我们还…

    IIS 2025年6月8日
  • Vista IIS7添加PHP支持的设置方法

      截止到发文时(2009年9月25日),PHP是最新版本为5.3.0,但是5.3.0在IIS中的运行方式是FastCGI,要在Vista的IIS7上实现这一点我始终没弄成。   …

    IIS 2025年10月6日
  • “/”应用程序中的服务器错误和Server Error in ”/” Application.的终极解决方法

    “/”应用程序中的服务器错误。 运行时错误 说明: 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务…

    IIS 2025年6月8日
  • IIS新手指南:配置IIS模块

    IIS新手指南:配置IIS模块 IIS新手指南:配置IIS模块 什么是IIS模块 IIS(Internet Information Services)是微软开发的一款用于托管和提供…

    IIS 2025年10月7日
  • Win2003主机播放FLV视频的设置图解方法

    一、如果你的服务商不给你做扩展名解释,你就只能把FLV文件改名为SWF,把它当做FLASH文件播放,这样,FLV的播放器就没办法使用了。 二、如果可以解释,就好办了,登陆服务器,依…

    IIS 2025年9月24日

发表回复

登录后才能评论