2014-11-21 2 views
0

이것은 몇 번 질문했지만 나에게 효과적이지 않습니다. http://11.11.11.11:8008/foo/bar?baz=1과 같은 URL을 https://11.11.11.11:1443/foo/bar?baz=1으로 리디렉션하고 싶습니다. 그냥 S를 추가하고 포트를 변경하십시오.간단한 IIS 다시 쓰기

사용자가 computername.domain.local을 입력하거나 localhost으로 검색하면 아무 일도 일어나지 않습니다. 특정 IP 주소/포트로만 리디렉션되어야하며 http를 통해 액세스해야합니다.

내 컴퓨터가 내부적으로 SSL에 443을 사용하기 때문입니다 (localhost 또는 computername.domain.local). 하지만 사무실 건물 밖에서 발생한 요청의 경우 라우터 리디렉션이 있습니다. 따라서 포트를 사용하여 공용 IP 주소에 액세스하고 SSL은 더 이상 443이 아닙니다. 따라서 태블릿 및 다른 위치에서 코드를 테스트하려면 포트가있는 IP 주소를 찾아야합니다.

답변

0

그래서 내 부분에는 두 가지 오해가있었습니다. 첫째, 회사 외부의 외부 트래픽은 회사 고유의 IP 주소와 포트 8008을 사용합니다. 그러면 내 사이트를 호스팅하는 실제 컴퓨터로 라우팅됩니다. 그러나 트래픽이 지나면 트래픽이 8008이 아니라 내 컴퓨터의 포트 80으로 보내집니다. 두 번째로 다시 쓰기의 URL 표현식에는 경로와 쿼리 문자열 만 포함됩니다. 내가하려고했던 것처럼 전체 URL을 일치시킬 수는 없습니다.

해결 방법은 일치하는 항목에 와일드 카드를 추가하고 필요한 모든 조건을 충족시키는 조건을 사용하는 것입니다.

<rule name="SSL on 1443" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Redirect" url="https://11.11.11.11:1443/{R:0}" redirectType="Found" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="OFF" /> 
     <add input="{HTTP_HOST}" pattern="11\.11\.11\.11" /> 
    </conditions> 
</rule> 
0

어때?

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^11\.11\.11\.11$ 
RewriteCond %{SERVER_PORT} 8008 
RewriteRule ^(.*)$ https://11.11.11.11:1443/$1 [R]