優先順位は、指定された順序と同じです。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
リクエストが書き換えられることを意味します。foo.aspx?bar=special
foo.aspx?bar=123
Rule1
Rule2
Rule3
このstopProcessing="true"
属性により、他の一致ルールが実行されないことが保証されます (つまりRule2
、 およびRule3
)。
ソース: http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation
IIS の各構成レベルには、0 個以上の書き換え規則を定義できます。ルールは、指定された順序で評価されます。URL 書き換えモジュールは、次のアルゴリズムを使用して一連のルールを処理します。
- 最初に、URL がルールのパターンと照合されます。一致しない場合、URL 書き換えモジュールはそのルールの処理を直ちに停止し、次のルールに進みます。
- パターンが一致し、ルールの条件がない場合、URL 書き換えモジュールは、このルールに指定されたアクションを実行してから、次のルールに進み、置換された URL をそのルールの入力として使用します。
- パターンが一致し、ルールの条件がある場合、URL 書き換えモジュールは条件を評価します。評価が成功すると、指定されたルール アクションが実行され、書き換えられた URL が後続のルールへの入力として使用されます。