Url Rewriteを使用して、/ foo_bar/*を/ foo/*にリダイレクトしようとしています。私はこれを試しました:
<rule name="Redirect foo_bar to foo" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_URL}" pattern="^/foo_bar/(.*)" />
</conditions>
<action type="Redirect" url="/foo/{R:1}" />
</rule>
しかし、これは/ foo/foo_bar/*にリダイレクトするだけです。どこが間違っているのですか?
まず、すべてのリクエスト(。*)に一致するルールを指定してから、特定のURLの条件を追加します。
試合には制限基準が必要です。
<match url="^/foo_bar/(.*)" />
その後、条件はもう必要ありません。条件は、URLに基づかない追加の基準にのみ使用します。
次に、{R:1}は一致したURL全体を参照するため、URLに/foo_bar/
が含まれている場合、それが{R:1}に含まれているため、/ foo/foo_bar /にリダイレクトされる理由が説明されます。
新しい一致ルールでは、{R:1}はURL全体ではなく、(.*)
にあるものを保持するため、機能するはずです。