0

내 Windows 2012 서버에서 IIS에 URL 다시 쓰기 모듈을 설치했습니다. www가 아닌 ​​www를 web.config에서 www로 리디렉션하기 위해이 가이드를 따라 왔습니다. http://www.surfingsuccess.com/asp/iis-url-rewrite.html#.VF6GBid0yAU비 WWW를 WWW로 리디렉션 (특정 하위 도메인 제외)

지금까지 매우 훌륭했습니다!

유일한 문제는 하위 도메인 "api.example.com"도 호스팅한다는 것입니다. 이 API는 web.config에 코드를 적용하면 작동을 멈 춥니 다.

내 질문은 : 아래 코드가 잘못 되었습니까? "api.example.com"을 제외하고 www가 아닌 ​​www를 www로 리디렉션하려고 할 때 하위 도메인이 작동하지 않는 이유는 무엇입니까?

<rewrite> 
     <rules> 
      <rule name="CanonicalHostNameRule1"> 
       <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" /> 
        <add input="{HTTP_HOST}" pattern="^api\.example\.com$" negate="true" /> 
       </conditions> 
       <action type="Redirect" url="http://www.example.com/{R:1}" /> 
      </rule> 
     </rules> 
    </rewrite> 

답변

0

나는 비슷한 검사를 받았지만 동일한 규칙이 있지만 패턴이 다르게 지정되었습니다.

내 제안은 실패한 요청 추적이 URL 재 작성을 검사하도록하는 것입니다. http://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules

편집 : 업데이트 된 규칙.

<rewrite> 
      <rules> 
       <rule name="non-root" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions logicalGrouping="MatchAll"> 
         <add input="{HTTP_HOST}" pattern="^(www.example.com)$" negate="true" /> 
         <add input="{HTTP_HOST}" pattern="^(api.example.com)$" negate="true" /> 
         <add input="{HTTP_HOST}" pattern="^(example.com)$" /> 
        </conditions> 
        <action type="Redirect" url="http://www.example.com/{R:1}" /> 
       </rule> 
      </rules> 
     </rewrite> 
+0

불행히도 도움이되지 않았지만 web.config (example.com)에 코드를 추가하면 api.example.com이 계속 작동하지 않습니다. api.example.com은 IIS의 한 사이트이고 example.com은 IIS의 다른 사이트이기 때문에 이것은 매우 이상하다고 생각합니다. 한 사이트 (example.com)에서 사용자 URL을 다시 작성할 때 다른 사이트 (api.example.com)에 영향을주는 이유는 무엇입니까? 또한 별도의 응용 프로그램 풀에서 실행됩니다. –

+0

입력이 www로 시작하지 않으면 www.example.com으로 리디렉션되는 규칙을 만들 수 있습니까? 또는 api.? –

+0

WWWROOT \ web.config 수준에서 다시 쓰기 규칙을 추가하고 있습니까? 간섭을 일으킬 수있는 다른 것이 있습니까? 실패한 요청 추적을 시도하여 로그를 확인하는 것이 좋습니다. 문제가있는 곳을 정확히 찾아냅니다. – bdoshi

0

실제로 재 작성 코드에는 아무런 문제가 없습니다. API가 작동을 멈추게 한 이유는 사이트의 최상위 도메인 (example.com)을 참조했기 때문입니다. 이로 인해 다시 쓰기 코드와 충돌이 발생했습니다. doman (www.example.com)의 www -version에 대한 참조를 변경 한 후 모든 것이 잘 동작했습니다.

+0

@yvind, 질문이 있었는데 사이트의 최상위 도메인에 대한 "참조"가 있다고 언급했는데 그 참조는 어디에 있었습니까? 나는이 같은 문제를 안고있다. 아직 공식적으로 코드를 시도하지는 않았지만 코드를 다시 작성한다고 말하고 있습니까? 난 그냥 최고의 도메인에 대한이 "referenece"어디서 동일한 문제가 있는지 궁금해. – Alpdog14