最近要实现一个IIS7下的纯HTML页面的请求来源,由于诸多原因:
- 多个独立域名绑定到了一个website
- 域名供应商不支持url forwarding
- 想达到输入次域名后自动redirect到主域名,如:
- 输入www.ccc.net后会redirect到www.aaa.com
- 输入www.ddd.cn后会redirect到www.aaa.com
所以试着做了个html handler
步骤:
- 设置目标网站的application pool模式为integrate
- 编写一个.NET 2.0的HttpHandler来处理请求(此处是*.html文件的请求)
- public class UrlVerify : IHttpHandler { public bool IsReusable { get { return true; } } const string mainHostName = " www.aaa.com "; public void ProcessRequest(HttpContext context) { if (context.Request.Url.Host.ToLower() != mainHostName) { string url = GenerateMainSiteUrl(context.Request.Url.AbsoluteUri, context.Request.RawUrl); context.Response.Redirect(url, true); } else { context.Response.WriteFile(context.Request.PhysicalPath); } } public string GenerateMainSiteUrl( string fullUrl, string virtualPath) { string url = fullUrl; string preUrl = " http "; if (url.Substring( 0, 5).ToLower() == " https ") preUrl = " https "; virtualPath = virtualPath.TrimStart( ' / '); url = string.Format( " {0}://{1}/{2} ", preUrl, mainHostName, virtualPath); return url; } }
- 将编译后的dll文件放到目标网站的bin目录中
- 打开IIS7,找到目标网站,双击 Handler Mappings 图标
- 在右上方click Add Managed Handler链接
- OK
迷惑:
上述组件是用.net2.0编写的,我用.net4.0也试了一下,但是总是报错,不知道怎么回事,望有经验的兄弟告诉我一下。