웹 서버 (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>