2010-02-01 4 views
9

domain.com 사이트는 domain.com을 가리키는 www.domain.com의 CNAME 항목을 통해 액세스 할 수 있습니다. www.domain.com의 모든 방문자가 301 리디렉션을 사용하여 domain.com으로 리디렉션되기를 바랍니다. asp.net mvc에서 이것을 구현하는 가장 좋은 방법은 무엇입니까? global.asax 에서요?Asp.net mvc 301 www.domain.com에서 domain.com으로 리디렉션

+4

가장 쉬운 방법은 리디렉션을 처리하기 위해 IIS에서 다른 웹 사이트를 만드는 것입니다 : 여기

우리가 리디렉션을 수행하기 위해 Global.asax에에서 사용하는 코드입니다. 코드를 작성할 필요가 없습니다. IIS 리디렉션은 자동으로 처리 할 수 ​​있습니다. –

+1

실제로. IIS가 나아갈 길입니다. IIS가 무료로 수행 할 때 이러한 종류의 작업으로 응용 프로그램을 묶고 싶지는 않습니다. IIS7이 최선의 방법입니다. –

+1

여기에있는 문제는 사이트가 부하 조절기 뒤에 앉아있는 농장에 있다는 것입니다. 호스트는 서버의 내부 IP 주소로 해석되고 원래 호스트 이름은 헤더 "x-forwarded-host"에 다시 패키징됩니다. 지금까지 보았 듯이 IIS7 HTTP 리디렉션 기능을 사용하지 않습니다. – spender

답변

22

본인은 애플리케이션 레벨에서이를 수행하는 것이 질문에 대한 의견과 같이 바람직하지 않음을 인정합니다.

IIS7에 HTTP 리디렉션 기능을 설치하는 것이 가장 좋은 방법입니다.

우리의 경우 다른 제약 조건 때문에 응용 프로그램 수준에서이 작업을 수행해야합니다.

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

이 나를 알려줍니다. 잘못된 그룹 이름 : 그룹 이름은 다음과 같아야합니다. 단어 문자로 시작하십시오 –

+2

이제 사이트의 web.config에 추가 할 수있는 UrlRewrite를 사용하여 더 쉽게 만들었습니다. 여기에서 언급하고 싶었습니다. http://stackoverflow.com/a/10193142 – gldraphael

+0

[www] 또는 [www]가 없으면 [this] (http://stackoverflow.com/q/15951963/2218697) 게시물에 다음과 같이 표시되는 SEO에 가장 적합합니까? – stom