IIS에서 모든 HTTP를 HTTPS로 리디렉션하는 가장 좋은 방법 각 사이트에서 ‘SSL 필요’로 해당

웹 서버 (IIS 10)의 모든 사이트가 SSL을 시행 (즉, HTTP를 HTTPS로 리디렉션)하기를 원합니다.

Google은 현재 각 사이트에서 ‘SSL 필요’로 해당 사이트 의 https 주소에 대한 403 error처리기를 설정합니다 302 redirect.

이것은 잘 작동합니다. 그러나 모든 단일 사이트에서 수행해야하는 어려움은 인적 오류의 여지가 많습니다.

이상적으로 301 redirect는 모든 HTTP://*것을 영구적 으로 설정하고 싶습니다HTTPS://*

IIS에서이를 수행하는 간단한 방법이 있습니까?



답변

IIS7 + 용 IIS URL 다시 쓰기 모듈 2.1은 친구가 될 수 있습니다. 모듈은 IIS URL 다시 쓰기 에서 다운로드 할 수 있습니다 . URL 다시 쓰기 모듈URL 다시 쓰기 모듈 2.0 구성 참조 사용은 모듈 사용 방법을 설명합니다.

모듈이 설치되면 IIS 관리자를 사용하여 호스트 전체 리디렉션을 만들 수 있습니다. 선택 URL 재 작성 , 규칙 (들) … 추가 하고, 빈 규칙을 .

이름 :
HTTPS로 리디렉션


요청 된 URL과 일치하는 URL : Matches the Pattern
사용 : Wildcards
패턴 : *
대소 문자 무시 : 확인

조건
논리 그룹화 : Match Any
조건 입력 : {HTTPS}
입력 문자열 확인 : Matches the Pattern
패턴 : OFF
대소 문자 구분 : 확인
조건에 따른 트랙 캡처 그룹 : 확인 되지 않음

서버 변수
비워 두십시오.

작업
작업 유형 : Redirect
리디렉션 URL : https://{HTTP_HOST}{REQUEST_URI}
쿼리 문자열 추가 : 선택되지 않음
리디렉션 유형 : Permanent (301)

규칙을 적용하고 IISReset을 실행하십시오 (또는 IIS 관리자에서 다시 시작을 클릭하십시오)

또는 모듈을 설치 한 후 다음과 같이 applicationHost.config 파일을 수정할 수 있습니다.

<system.webServer>
  <rewrite>
    <globalRules>
      <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" ignoreCase="true" negate="false" />
        <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
          <add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
      </rule>
    </globalRules>
  </rewrite>
</system.webServer>


답변

내 연구에 따르면 이것이 리디렉션을 개선하는 더 좋은 방법 일 수 있습니다.

<rewrite>
    <rules>
        <rule name="http to https" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
    </rules>
</rewrite>


답변