Url Rewrite Filterでは基本的に要素で指定したパターンに対してURLのマッチングが行われるが、要素を使用することで、URLパターン以外の条件を指定することも可能だ。リクエストメソッド、リクエストヘッダ、リクエストパラメータ、セッションパラメータ、現在の日時など様々な値を条件に指定することができ、たとえば同じURLでもユーザエージェントによって実際にアクセスするパスを振り分けるといった利用法が考えられる。

<!-- GETメソッドの場合のみ -->
<condition type="method">GET</condition>

<!-- User-AgentヘッダがMozilla/[1-4]にマッチする場合のみ -->
<condition name="user-agent">Mozilla/[1-4]</condition>

<!-- リクエストパラメータidが001以外の場合のみ -->
<condition type="parameter" name="id" operator="notequal">001</condition>

デフォルトではtype属性およびname属性で指定したパラメータとボディ部に記述した値と一致した場合に条件が成立したとみなされるが、3番目の例のようにoperator属性を指定することで「一致しない場合(notequal)」や「大きい場合(greater)」「小さい場合(less)」といった条件指定が可能だ。ボディ部には任意の正規表現を用いることもできる。

なお、要素は1つのルールに対し複数記述することができ、すべての条件が成立した場合にルールが実行されるが、要素のnext属性を以下のように指定しておくと、OR条件を指定することができる。

<rule>
    <!-- ホストがlocalhostもしくはwww.example.comの場合のみ -->
    <condition type="host" next="or">localhost</condition>
    <condition type="host">www\.example\.com</condition>
    ...
</rule>