2008-09-05 9 views
137

사이트의 HTTP : // 버전으로 이동하려는 모든 시도를 해당 HTTPS : //로 리디렉션 할 수있는 명확한 방법이 있습니까?IIS7 : HTTP-> HTTPS Cleanly

+0

대답 제임스 코바치의 블로그에서 확인할 수 있습니다 : http://jameskovacs.com/2007/05/09/how-to-autoredirect-to-a-sslsecured-site- in-iis/ – cpuguru

+0

IIS 7 및 R2 [여기] (http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using- url-rewrite-2-0 /)은 잘 작동하고 가장 깨끗한 안내서입니다 –

답변

173

가장 깨끗한 방법은 here on IIS-aid.com입니다. web.config 전용이므로 서버를 변경하면 403.4 사용자 정의 오류 페이지 또는 기타 특수 권한을 사용하여 수행 한 모든 단계를 기억할 필요가 없으며 작동합니다. > 오류 페이지에서 SSL

  • 필요 - - 403.4 오류에> - 내가 찾은

    <configuration> 
        <system.webServer> 
        <rewrite> 
         <rules> 
         <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
          <match url="(.*)" /> 
          <conditions> 
           <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
          </conditions> 
          <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /> 
         </rule> 
         </rules> 
        </rewrite> 
        </system.webServer> 
    </configuration> 
    
  • +4

    완벽하게 작동하며 보너스 포인트로 완전히 자체 포함되어 있으므로 허용 된 답변 – WickyNilliams

    +1

    에 설명 된대로 새 웹 사이트를 만들 필요가 없습니다. 파일 형식에 관계없이 모든 URL에 대해 해당 URL이 실행됩니까? 예 : txt 파일에 대한 직접 URL? – Cheekysoft

    +9

    이것은 리디렉션 URL을 https : // {HTTP_HOST} {REQUEST_URI} –

    -4

    '깔끔하게'는 300 개의 리디렉션을 의미한다고 생각합니다. 많은 서버에 대한 구성 & 언어 here.

    5

    깨끗한 방법으로 URL 체계 만 http -> https로 변경하고 나머지는 모두 동일하게 유지합니다. 브라우저 문제가 없도록 서버 측이어야합니다.

    JPPinto.com은 서버 쪽 리다이렉트 대신 javascript (HttpRedirect.htm)를 사용한다는 점을 제외하면 어떻게 수행되는지에 대해서는 Step-By-Step instructions입니다. 웬일인지, '친숙한 HTTP 오류 메시지 표시'가 활성화되어 있으면 기본적으로 IE가 자바 스크립트를 실행할 수 없습니다. 스크립트의 또 다른 기능은 FF 또는 Chrome에서도 경로로 리디렉션이 작동하지 않는다는 것입니다. 스크립트는 항상 루트로 리디렉션됩니다. (경로로 리디렉션해야하기 때문에 뭔가 놓친 것일 수도 있습니다.)

    이러한 이유로 리디렉션을 위해 ASP 페이지를 사용했습니다. 단점은 물론 서버에서 클래식 ASP를 사용하도록 설정해야한다는 것입니다.

    OpsanBlog는 IIS6에서 잘 작동하는 ASP script and instructions을 가지고 있습니다.

    IIS7에서이 방법을 사용할 때 몇 가지 문제가있었습니다. IIS7이 뭔가를 놓치기 쉽도록 만든 이래로 사용자 인터페이스 문제가 대부분 발생합니다.

    • 먼저 ASP를 웹 서버 역할 기능으로 설치해야합니다.
    • 둘째, IIS7에서 가상 디렉터리를 사용하면 이 예상대로 작동하지 않았으므로 디버깅을 시도하십시오. 대신 파일을 사이트의 루트 폴더에 저장하고 URL을 '/SSLRedirect.asp'로 사용하여 403.4 오류 페이지를 참조하십시오.
    • 마지막으로 가장 까다로운 부분 인 은 SSLRedirect.asp에 대해 SSL을 시행해서는 안됩니다. 그렇지 않으면 403.4 오류가 발생합니다. 이렇게하려면 IIS7 '콘텐츠보기'에서 파일을 선택하고 '기능보기'로 전환하여 단일 파일에 대한 SSL 설정을 편집하고 'SSL 필요'확인란을 비활성화 할 수 있습니다.

    IIS 관리자는 파일 이름을 헤더에 표시해야합니다.

    +1

    JPPinto.com의 링크 된 지침은 IIS 7.5 또는 R2에서 작동하지 않는다는 점을 강조하기 위해 업데이트되었습니다. 그들은 최신 버전의 IIS에서 보안이 변경되어 잠금 위반이 발생한다고 말합니다. 대신에 URL Rewrite 2.0 방법을 사용하는 것이 좋습니다 (@toxaq의 대답과 비슷한 방법). – AussieRob

    9

    가장 간단하고 깨끗한 솔루션

    SSL 설정에서
    1. 이었다>는 HTTPS로 리디렉션 사이트

    2. 오류 페이지 -> 기능 설정 편집 중 ...-> 원격 요청에 대한 로컬 요청 및 사용자 정의 오류 페이지에 대한 세부 오류 설정

    이점은 추가 코드 줄이 필요 없다는 것입니다. 단점은 절대 URL로 리디렉션된다는 것입니다.

    +0

    은 완벽하게 작동합니다 (IIS 8.5/2012 R2). web.config – schmendrick

    +0

    으로 문제를 해결하는 것은 현명한 방법입니다. thx –

    +0

    이 단점에 대한 예를 들어 주시겠습니까? 어떤 상황에서 그것이 일어날 것이며 왜 그것이 부정적일까요? 대답에 추가 할 수 있다면 좋을 것입니다. 고마워요! –

    0

    Global.asax에

    protected void Application_BeginRequest() 
    { 
    if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) 
    Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); 
    } 
    
    +0

    "localhost"를 URI 어딘가에 넣음으로써이 리디렉션을 쉽게 해결할 수 있습니다. 쿼리 문자열 http://yourdomain.com?localhost=true 대신 Request.Url.Host 속성을 확인하는 것이 좋습니다. –