Asp.net mvc 301 redirect from www.domain.com to domain.com

牧云@^-^@ 提交于 2019-11-26 16:31:49

问题


We have a website at domain.com, which is also accessible via a CNAME entry for www.domain.com that points back to domain.com. We'd like all visitors to www.domain.com to be redirected to domain.com using a 301 redirect. What's the best way to implement this in asp.net mvc? In global.asax?


回答1:


I accept that doing this at application level is non-desirable as per the comments to the question.

Installing the HTTP Redirect feature in IIS7 is the best way to do this.

In our case, other constraints force us to do this at application level.

Here is the code that we use in global.asax to perform the redirect:

    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();
        }
    }


来源:https://stackoverflow.com/questions/2175975/asp-net-mvc-301-redirect-from-www-domain-com-to-domain-com

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!