利用iirf (Ionics Isapi Rewrite Filter) 进行url重写,实现泛域名
iirf (Ionics Isapi Rewrite Filter)是开源的组件,功能强大,可以进行url重写,实现很复杂的泛域名功能都可以。
IIRF(Ionic's Isapi Rewrite Filter)是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新编译)开发。它可以运行在IIS5.0至IIS7.0,支持ASP,ASP.NET(ASPX),PHP等许多格式。相对比ASP.NET2.0自带的URL重写,具有更好的性能和许多我们所需要特性,重要的一点在于:它可以支持无扩展名的URL(例如:www.444168.com/****,你无需在创建一个默认的default.aspx文件,IIRF自动会帮你解析),让URL更加的方便我们记忆,也能进一步提高搜索的排名?IIRF能够在aspnet_isapi提前捕获我们所请求的URL进行处理,如果我们访问www.444168.com/a.aspx,需要获取www.444168.com/a.htm,步骤需要(iis-aspnet_isapi),通过IIRF,我们可以直接跳aspnet_isapi.dll,直接访问a.htm,要知道,这种方式在ASP.NET是无法实现的。
例如要实现下面的url和泛域名重写效果:
input *.aaa.com output www.aaa.com/a.aspx?id=*
input *.aaa.com/1.html output www.aaa.com/b.aspx?id=1.html
input *.aaa.com/2.html output www.aaa.com/b.aspx?id=2.html
input *.aaa.com/3.html output www.aaa.com/b.aspx?id=3.html
input *.aaa.com/4.html output www.aaa.com/b.aspx?id=4.html
input *.aaa.com/5.html output www.aaa.com/b.aspx?id=5.html
那么正则表达式如下:
iirf.ini
RewriteCond %{HTTP_HOST} ^([^\.]+)\.aaa\.com$
RewriteRule ^/$ /a.aspx?id=*1 [L]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.aaa\.com$
RewriteRule ^/(\d+)\.html$ /b.aspx?id=$1.html [L]
iirf.dll需要下载安装,然后在iis配置,打开IIS管理器,选择“默认网站”,右击“属性”,选择“ISAPI筛选器”,点击“添加”,输入筛选器名称:Ionic Rewriter,可执行文件选择上面复制到c:\windows\system32\inetsrv下面的iirf.dll文件,点“确定”。
如果不明白,可以给我留言。