IIS 7.5のURL Rewrite 2.0のコンテキストでは、複数の国にまたがるサイトの複数のドメインに対して、正規のドメイン名をできるだけ少ないルールで適用できるようにしたいと考えています。このようなもの:
<rule name="UK Host Name">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^company\.co\.uk$" />
<add input="{HTTP_HOST}" pattern="^company\.co$" />
<add input="{HTTP_HOST}" pattern="^company\.org$" />
<add input="{HTTP_HOST}" pattern="^company\.net$" />
<add input="{HTTP_HOST}" pattern="^company\.uk\.com$" />
<add input="{HTTP_HOST}" pattern="^www\.company\.co\.uk$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.company.co.uk/{R:1}" />
</rule>
<rule name="France Host Name">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^company\.fr$" />
<add input="{HTTP_HOST}" pattern="^company-france\.com$" />
<add input="{HTTP_HOST}" pattern="^www\.company\.fr$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.company.fr/{R:1}" />
</rule>
上記の問題は、これらの各条件が true でなければならないためlogicalGrouping="MatchAll"
、変更するMatchAny
と最後の条件 ( を使用negate="true"
) が無視され、ユーザーが正しいドメインにアクセスしている場合でもリダイレクト ルールが実行されることだと思います。
私が考えられる唯一の代替案は、異なるドメインごとに個別の書き換えルールを設定することですが、膨大な数のドメインが存在する可能性があり、面倒になる可能性があります。他の書き換えルールとマップはそのままでたくさんあります。
All または Any だけでなく、より複雑な条件のセットを作成するにはどうすればよいですか?