web-dev-qa-db-ja.com

IIS URL Rewrite:スラッシュで始まるパターンは一致しません

私はIIS URL Rewriteを使用していますが、これは私を困惑させました。

特定のサブフォルダーを持つURLを新しいURLにリダイレクトしています。

例えばhttps://myapp.example.com/customsite1https://newsite1-myapp.example.comにリダイレクトされました

このパターンを使用する場合:

^(.*)customsite1(.*)$

正常に動作します。問題は、Word customsite1も使用する引数がURLに追加される可能性があることです。だから、「もちろん、これを修正する簡単な方法は/customsite1に一致する」

しかし、それは決して機能しません。

^(.*)/customsite1(.*)$ 

テストパターン機能で一致すると言われても、https://myapp.example.com/customsite1とは一致しません。

ここで何が欠けていますか?

1
ChrisYYC

次のように、[URLパターンの一致]フィールドを参照していると思います。

The first fields of the new rule editor

その場合、受信した値は常に最初の/なしで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}

The action URL

正規表現でキャプチャされるため、最後のスラッシュなしで、そのフォルダーへの要求を新しいドメインにリダイレクトし、フォルダーの後に残りのURLを追加します。

HTH

1
jalarcon