我们在domain.com上有一个网站,也可以通过www.domain.com的CNAME条目访问domain.com.我们希望www.domain.com的所有访问者都可以使用301重定向重定向到domain.com.在asp.net mvc中实现这一点的最好方法是什么?在global.asax?
解决方法
我接受根据问题的意见,在应用程序级别做到这一点是不可取的.
在我们的例子中,其他约束迫使我们在应用程序层面这样做.
private static readonly Regex wwwRegex = new Regex(@"www\.(?<mainDomain>.*)",RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline); protected void Application_BeginRequest(Object sender,EventArgs e) { string hostName = Request.Headers["x-forwarded-host"]; hostName = string.IsNullOrEmpty(hostName) ? Request.Url.Host : hostName; Match match = wwwRegex.Match(hostName); if (match.Success) { string mainDomain = match.Groups["mainDomain"].Value; var builder=new UriBuilder(Request.Url) { Host = mainDomain }; string redirectUrl = builder.Uri.ToString(); Response.Clear(); Response.StatusCode = 301; Response.StatusDescription = "Moved Permanently"; Response.AddHeader("Location",redirectUrl); Response.End(); } }