2014-09-19 2 views
1

HTTP 요청을 https로 리디렉션해야합니다. 하지만 내 사이트가 일반 URL을 통해 액세스되는 경우에만 가능합니다. ie www.accufinance.comURL 특정 URL에서 https로 다시 쓰기

로컬로 디버그하여 액세스 할 때 localhost를 사용하여 연결하고 재 작성을 원하지 않습니다 (SSL을 로컬로 사용하지 않기 때문에).

<rewrite> 
     <rules> 
     <clear /> 
     <rule name="Redirect to https" stopProcessing="true"> 
      <match url="^accufinance.com$" ignoreCase="true"/> 
      <conditions> 
      <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
     </rule> 
     </rules> 
    </rewrite> 

을하지만 재 작성 규칙은 발생하지 않습니다

나는이 노력하고 있어요. 일치 URL로. *을 사용하면 정상적으로 작동하지만 모든 연결을 포착합니다. URL에 'accufinance.com'이있을 때만 규칙을 실행할 수 있습니까?

답변

1

도메인 이름과 일치하는 조건으로 HTTP_HOST을 확인해야합니다.
에 대한 지침 match에는 도메인 이름 뒤에있는 내용 만 포함됩니다.

예 : http://www.domain.tld/some/url/here.ext

  • HTTP_HOST = www.domain.tld
  • REQUEST_URI = 당신은

    <rule name="Redirect to https" stopProcessing="true"> 
        <match url=".*" ignoreCase="true" /> 
        <conditions> 
         <add input="{HTTP_HOST}" pattern="^(www\.)?accufinance\.com$" ignoreCase="true" /> 
         <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
        </conditions> 
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
    </rule> 
    

    는거야 당신을주의하고 싶은 일을하기 위해이 규칙을 사용할 수 있습니다

/some/url/here.ext 필요하다 다시 시도하기 전에 브라우저의 캐시를 비우십시오 (이전 규칙은 영구적 인 리디렉션으로 인해 캐시에 남아 있습니다).

2

정규식 ^accufinance.com$은 매우 제한적입니다. ^은 처음과 끝까지 일치해야한다는 것을 나타냅니다 (즉 앞에 오는 것은 없음). $은 마지막까지 아무 것도 따르지 않아야합니다. 따라서 일치는 요청 URL이 정확히 accufinance.com 일 때만 성공합니다.

^$을 삭제 해보세요. 또는 원하는 필터 앞뒤에 URL 부분을 명시 적으로 허용 할 수 있습니다 (예 : .*accufinance\.com.*).

+0

고마워요! 나는 이것을 시도했다 - - 그러나 여전히 https로 리다이렉트하지는 않는다. '도트'와 '슬래시'가 필요한가요? – Craig

+0

또한 - - 작동하지만 ... URL이 localhost 또는 다른 것일 때 리디렉션하지 않습니다. – Craig