微软的URLRewrite能够对URL进行重写,但是也只能对域名之后的部分进行重写,而不能对域名进行重写,如:可将 http://www.sunyet.com/showuser.aspx?us=bbs 重写为 http://www.worldbao.com/suyiming.aspx 但不能将 http://www.worldbao.com/show.aspx?us=bbs 重写为 http://bbs.worldbao.com/
要实现这个功能,首先要做域名泛解析,去域名管理里面的域名解析中添加一个:*.worldbao.com 指向服务器ip。
第二,重写URLRewrite里面的两个方法。
1.BaseModuleRewriter.cs 里面的BaseModuleRewriter_AuthorizeRequest方法
将
改为
2, ModuleRewriter.cs 里面的 Rewrite 方法
将
改为
就是将
string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";
改成了
string lookFor = "^" + rules[i].LookFor + "$";
完成这过程之后将整个项目重新编译一下。
这些都做完之后,
在webconfig配置里面的
<configSections>里面 添加:
在</configSections>下面添加
在httpModules里面添加
最后一步
IIS里面添加 ASPNET_ISAPI的通配符应用程序映射
操作方法:IIS站点属性 ->主目录 -> 配置
点击插入按键
选择或输入C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll
取消"确认文件是否存在"前的钩. 确定
ok,现在输入http://suyiming.worldbao.com/就可以看到效果了
例子稍后放到csdn下载服务器,请大家关注我的博客。