私はIIS URL Rewriteを使用していますが、これは私を困惑させました。
特定のサブフォルダーを持つURLを新しいURLにリダイレクトしています。
例えばhttps://myapp.example.com/customsite1
はhttps://newsite1-myapp.example.com
にリダイレクトされました
このパターンを使用する場合:
^(.*)customsite1(.*)$
正常に動作します。問題は、Word customsite1
も使用する引数がURLに追加される可能性があることです。だから、「もちろん、これを修正する簡単な方法は/customsite1
に一致する」
しかし、それは決して機能しません。
^(.*)/customsite1(.*)$
テストパターン機能で一致すると言われても、https://myapp.example.com/customsite1
とは一致しません。
ここで何が欠けていますか?
次のように、[URLパターンの一致]フィールドを参照していると思います。
その場合、受信した値は常に最初の/
なしでwithout開始し、クエリ文字列パラメーターも含めません(作成する必要がある場合)クエリ文字列に基づく決定、条件ルールで処理する必要があります(条件入力の{QUERY_STRING}
フィールドを使用)。
したがって、引数がクエリ文字列に追加されても、まったく心配する必要はありません。言及している引数がURLの一部である場合、例えば:
https://myapp.example.com/customsite1/action/param1/customsite1/param3
次に、次のような正規表現を使用する必要があります。
^customsite1(/.*){0,1}$
これは、「/ customsite1」に一致し、最後のスラッシュとその後に続くものの有無に関係なく、その部分をキャプチャします。 URLのいずれかの部分が、リダイレクトしようとしているメインフォルダーと同じ名前を追加するかどうかは関係ありません。
リダイレクトアクションの[リダイレクトURL]フィールドには、次のように記述できます。
https://newsite1-myapp.example.com{R:1}
正規表現でキャプチャされるため、最後のスラッシュなしで、そのフォルダーへの要求を新しいドメインにリダイレクトし、フォルダーの後に残りのURLを追加します。
HTH