などのいくつかの組み合わせについて、Google の上位 30 件のヒットを読みましたIIS rewrite map condition
が、microsoft.com サイトまたは他の場所で適切なドキュメントを見つけることができません。
IIS7 には、末尾のスラッシュが続くかどうかに関係なく処理したい書き換えマップがたくさんあります。したがってwww.foo.com/bar
、 andwww.foo.com/bar/
は両方ともルールに一致する必要があります。
<rewrite>
<rewriteMaps>
<rewriteMap name="ShortURLs">
<add key="/terms" value="/en-us/terms-and-conditions/"/>
<add key="/privacy" value="/en-us/privacy-and-cookies/"/>
<add key="/buy" value="/en-us/where-to-buy/"/>
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Short URL redirects">
<match url="^/?(.+)/?$" />
<conditions>
<add input="{ShortURLs:{REQUEST_URI}}" pattern="(.+)"/>
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="true"/>
</rule>
</rules>
</rewrite>
現在、これは完全にうまく機能しますが、書き換えマップの最初のキーを一致させる唯一の方法は/terms/
、マップを複製することであり、次のようになります。
<rewriteMap name="ShortURLs">
<add key="/terms" value="/en-us/terms-and-conditions/"/>
<add key="/privacy" value="/en-us/privacy-and-cookies/"/>
<add key="/buy" value="/en-us/where-to-buy/"/>
<add key="/terms/" value="/en-us/terms-and-conditions/"/>
<add key="/privacy/" value="/en-us/privacy-and-cookies/"/>
<add key="/buy/" value="/en-us/where-to-buy/"/>
</rewriteMap>
そもそも正規表現を使用してそれらを照合していることを考えると、これはとてつもなく洗練されていないように思えます。条件入力または条件パターンへの追加/?
が機能していないようです。
IIS7 Rewrite Map Regexへの回答を見ましたか? 正規表現は使用できないと述べています(Using Rewrite Maps in URL Rewrite Moduleから引用)が、私がそこでコメントしたように、これは大規模な「これは決して機能しない」というよりも、そのテキストの前に示されている特定の例に関連しているようです.
私は何が欠けていますか?これを行うには何らかの手段が必要です。明らかな何かが欠けていますか?