二级域名和系统中会员帐号自动关联,也就是系统中注册一个会员,会员自动就可以通过二级域名来访问,比如我的帐号是zhangsan,我在morecoder.com注册后,访问zhangsan.morecoder.com就是我的个人空间。
实现这个功能有多种方式,本文是通过微软官方提供的url重写dll实现。
URLRewriter.dll,1.0版本,微软提供,适用于iis6、iis7或以上版本。
微软提供的原版dll并不支持二级域名,需要更改源码后重新生成dll。
具体实现步骤:
1、微软官方下载安装文件“MSDNURLRewriting.msi”,安装后是源码的解决方案。
找到安装后的目录,如下图:
2、“URLRewriter”文件夹是url重写核心代码,更改BaseModuleRewriter.cs文件内容
原内容:
protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication) sender;
Rewrite(app.Request.Path, app);
}
更改为:
protected virtual void BaseModuleRewriter_AuthorizeRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication) sender;
Rewrite(app.Request.Url.AbsoluteUri, app);
}
3、更改ModuleRewriter.cs文件内容
原内容:
string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";
更改为:
string lookFor = "^" + rules[i].LookFor + "$";
4、更改完成后重新生成项目,将新生成的URLRewriter.dll复制到项目中使用
5、Webconfig对应配置节点参考:
<RewriterRule>
<LookFor>http://(\d+)\.morecoder\.com</LookFor>
<SendTo>/default.aspx?domain=$1</SendTo>
</RewriterRule>