2013-04-11 2 views
5

최근 ASP.net 사이트를 ASP.net MVC 사이트로 마이그레이션했습니다. 이전에는 두 개의 호스트 헤더가 하나의 mydomain.com이고 다른 하나는 www.mydomain.com이었습니다. 내 SEO는 SEO 이점을 위해 하나의 URL "www.domain.com"만을 사용해야한다고 말합니다.ASP.net MVC 사이트 : "non WWW"요청을 모두 WWW로 리디렉션

나는 모든 mydomain.com 리디렉션 요청을 www.mydomain.com으로 리디렉션 할 수있는 옵션을 찾고 있습니다.

이 사이트는 ASP.net MVC 4에

답변

18

당신은 당신의 web.config 파일

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Redirect to WWW" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^example.com$" /> 
      </conditions> 
      <action type="Redirect" url="http://www.example.com/{R:0}" 
       redirectType="Permanent" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
+0

이를 멋진 대답, @ 토미; C# 줄이 보이지 않습니다. –

+0

URL 다시 쓰기 모듈을 사용하려면 IIS7 이상을 사용해야합니다. 적어도 IIS7을 사용하는 경우이 방법을 사용할 수 있지만 IIS6에서는 작동하지 않습니다. – Craig

+0

@ 토미 - IIS7 URL 다시 쓰기 모듈 또는.두 가지 기능을 모두 사용할 수있는 경우 리디렉션을 수행 할 웹 응용 프로그램 내의 인터넷 라우팅 기능은 무엇입니까? 또는 (세 번째 옵션) URL 재 작성 모듈에서 리버스 프록시를 사용하여 둘 모두에 대해 응답하고 URL을 유지 관리해야합니까? ... 그 마지막 세 번째 옵션은 내가 생각할 것 인 SEO에 이상적이지 않지만. – johntrepreneur

5

당신은 IIS에서 설정 또는 URL Rewriter는 사용할 수에서이 작업을 수행 할 수 IIS6에서 호스팅 및 개발, 하지만 내가 찾은 가장 좋은 방법은 다음과 같이 당신의 global.asax.csApplication_BeginRequest()에서 몇 가지 코드를 넣어 그냥 :

var HOST = "www.mydomain.com"; 

if (!Request.ServerVariables[ "HTTP_HOST" ].Equals(
    HOST, 
    StringComparison.InvariantCultureIgnoreCase) 
) 
{ 
    Response.RedirectPermanent(
    (HttpContext.Current.Request.IsSecureConnection ? "https://" : "http://") 
    + HOST 
    + HttpContext.Current.Request.RawUrl); 
} 

당신이 코드에서이 일을하고 있기 때문에, 당신이 할 수있는 요청에 따라 필요한 모든 논리를 갖춰야합니다.

+0

나는 규칙을 모든 측면에서 구성했지만 IIS 7에서는 성공하지 못했지만이 솔루션은 저에게서 작용합니다. 고마워. – CrazyDev

0

http://www.codeproject.com/Articles/87759/Redirecting-to-WWW-on-ASP-NET-and-IIS

에서

(위의 솔루션과 유사하게,하지만 자신의 도메인 이름을 추가 할 필요 없습니다.) (7 이상이 필요합니다 IIS)

<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="WWW Rewrite" enabled="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{HTTP_HOST}" negate="true" 
          pattern="^www\.([.a-zA-Z0-9]+)$" /> 
        </conditions> 
        <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" 
         appendQueryString="true" redirectType="Permanent" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

주 당신이 가장 것 태그 아래에 구불 구불 한 선이있을 가능성이 높습니다. 태그가 잘못되었음을 알리는 메시지가 표시됩니다. 나는이 메시지를 얻었지만 실제로는 잘 작동했다.

http://ruslany.net/2009/08/visual-studio-xml-intellisense-for-url-rewrite-1-1/

이 httpRedirect에 대한 자세한 정보는 여기에서 찾을 수 있습니다

당신이 직장에 인텔리을 원하는 경우에, 당신이 여기이 업데이트를 시도 할 수 있습니다

...

http://www.iis.net/configreference/system.webserver/httpredirect

관련 문제