2013-09-21 3 views
6

내 Web.config 파일에 httpRedirectrewrite을 사용하는 경우 어떤 규칙을 우선으로 지정할 수 있습니까?IIS 리디렉션 규칙 우선 순위

예를 들어 wildcard="*"과 같은 규칙을 모두 잡을 수 있지만 wildcard="/news" destination="/new/news"도 있다고 가정하면 wildcard="*" 규칙 만 실행되는 것처럼 보입니다.

Apache에서 이러한 동작을 얻을 수 있습니다. 나는 IIS에 방법이 있어야한다고 생각합니다.

답변

7

우선 순위는 지정된 순서와 동일합니다. IIS 관리자에는 "위로 이동"및 "아래로 이동"단추가있어서 사용자를 대신합니다. 예를 들어

:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
<rewrite> 
    <rules> 
     <rule name="Rule1" stopProcessing="true"> 
      <match url="^foo/?bar=123"/> 
      <action type="Rewrite" url="foo.aspx?bar=special" appendQueryString="false" /> 
     </rule> 
     <rule name="Rule2" stopProcessing="true"> 
      <match url="^foo/?bar=([A-z0-9]+)"/> 
      <action type="Rewrite" url="foo.aspx?bar={R:1}" appendQueryString="false" /> 
     </rule> 
     <rule name="Rule3" stopProcessing="true"> 
      <match url="^foo/"/> 
      <action type="Rewrite" url="somethingElse.aspx" appendQueryString="false" /> 
     </rule> 
    </rules> 
</rewrite> 
</system.webServer> 
</configuration> 

/foo?bar=123에 대한 들어오는 요청을 고려하십시오. Rule1 먼저 때문에이 예에서는

는, 상기 요청이 동시에 Rule1, Rule2Rule3 일치하더라도 foo.aspx?bar=special 대신 foo.aspx?bar=123 재기록 될 것임을 의미한다.

stopProcessing="true" 속성은 다른 일치 규칙이 실행되지 않도록합니다 (예 : Rule2Rule3).

출처 : http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation

IIS의 각 구성 수준이 정의 0 개 이상의 재 작성 규칙을 가질 수 있습니다. 규칙은과 동일한 순서로 평가됩니다. URL 다시 쓰기 모듈은 다음 알고리즘을 사용하여 규칙 집합을 처리합니다.

  1. 먼저 URL은 규칙 패턴과 일치합니다. 일치하지 않으면 URL 재 작성 모듈은 즉시 해당 규칙 처리를 중지하고 다음 규칙으로 이동합니다.
  2. 패턴이 일치하고 규칙에 대한 조건이없는 경우 URL 다시 쓰기 모듈은이 규칙에 대해 지정된 작업을 수행 한 다음 대체 된 URL을 해당 규칙의 입력으로 사용하는 다음 규칙으로 이동합니다.
  3. 패턴이 일치하고 규칙 조건이있는 경우 URL 다시 쓰기 모듈은 조건을 평가합니다. 평가에 성공하면 지정된 규칙 작업을 수행 한 다음 다시 URL은 web.config 파일의 맥락에서이를 설명 할 수있는 후속 규칙
+0

에 대한 입력으로 사용됩니까? 나는 gui에 관하여 아무 것도 모른다. – tau

+1

@ tau 답변을 업데이트했습니다. – Dai

+0

대단히 감사합니다! 나는 이것을 가능한 빨리 시도 할 것이다. – tau