2017-12-28 45 views
1

무한 루프가 발생하는 매우 단순한 URL 다시 쓰기 리디렉션 규칙이 있습니다. 실패하면 "페이지를 표시 할 수 없음"오류가 표시됩니다. 오류 트래핑 팁 또는 스크립트 수정 사항을 주시면 감사하겠습니다.IIS의 URL 다시 쓰기 루프

<rewrite> 
    <rules> 
     <rule name="Test redirect" enabled="false" stopProcessing="true"> 
      <match url=".*" /> 
     <action type="Redirect" url="/pub/" appendQueryString="false" logRewrittenUrl="true" redirectType="Permanent" /> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="{HTTP_HOST}" pattern="^mydomain.*(com|net)$" /> 
      </conditions> 
     </rule> 
    </rules> 
</rewrite> 
  • 규칙이 wwwroot 폴더의 web.config 파일에 있습니다.
  • 이 규칙은 wwwroot/pub/폴더의 MVC 응용 프로그램으로 리디렉션됩니다.
  • IIS 로그는 IIS가 요청을 종료 할 때까지/pub/폴더가 루프에서 여러 번 호출되고 있음을 보여줍니다.
  • 규칙을 사용하지 않고 URL을 직접 입력하면 올바르게 작동합니다.
  • 다른 브라우저에서도 같은 오류가 발생합니다.
  • 브라우저 캐시 문제가 아닙니다.

+0

URL 재 작성 규칙을 여기에 붙여 주실 수 있습니까? –

+0

몇 가지 이상한 이유로 stackoverflow 내가 질문에 규칙을 붙여 넣을 수 없습니다. 어쩌면 총알 포인트 일 겁니다. 나는 그것을 아래에 붙여 넣을 것이다. –

+0

<규칙 이름 = "테스트 리디렉션"활성화 = "false"를 stopProcessing = "진정한"> <매치 URL = ". *"/> \t <작업 유형 = "리디렉션"URL = "/ 주점/"addAttribute ="false "logRewrittenUrl ="true "redirectType ="영구 "/> "혼란에 대한 />

답변

1

문제가 밝혀졌다 SSL 관련. HTTPS 리디렉션에는 아래와 같이 {HTTPS} 조건이 필요합니다. 이 조건이 없으면 https : \ URL로 리디렉션하려고하면 규칙이 반복됩니다. 또한 그림과 같이 작업에 전체 https : \ URL을 포함해야합니다.

<rule name="Test redirect" enabled="true" stopProcessing="true"> 
    <match url=".*" /> 
    <action type="Redirect" url="https://yourdomain.com/pub/" appendQueryString="false" logRewrittenUrl="true" redirectType="Temporary" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{HTTP_HOST}" pattern="^yourdomain.*(com|net)$" /> 
     <add input="{HTTPS}" pattern="off" /> 
    </conditions> 
</rule> 
0

그것이 <match url=".*" /> 지침을 통해 모든 URL에 대한 일치 이후, 여러 번 충돌되는 규칙을 리디렉션하여 URL처럼 보인다

. This post says thatstopProcessing='true' 지시문이 리디렉션 규칙에 반드시 작동하는 것은 아닙니다.

Taking a look at a similar question

, 당신은 당신의 무한 루프 시나리오를 어떤 재 작성 규칙을 트리거하고 입력에서 조각 mydomain.com/pub 어떤 URL을 방지하기 위해 먼저 block 규칙을 추가 할 수 있습니다 것은 :

<rule name="block" stopProcessing="true"> 
    <match url="^mydomain.*(com|net)/pub.*" /> 
    <action type="None" /> 
</rule> 
+0

Adil에게 감사하지만 아직 반복 중입니다. 웹 응용 프로그램 폴더에있는 web.config 파일을 사용하여 규칙을 사용하여 리디렉션을 수행 할 수 있습니다. 그러나 규칙이 wwwroot 폴더의 web.config에 적용될 때 실패합니다. 어떤 아이디어? –