Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)
(1) URLパターンの種類
リダイレクタのURLマッピングには次の4種類のURLパターンを指定できます。
- 完全パス指定
完全に一致するパターンです。
- URLの形式:
- /<パス>
- ルートだけ指定する場合は,「/」。
- /<パス>に指定できる文字:
- 次の文字を使用した,1文字以上の文字列を指定します。
- 半角英数字,「/」,「*」,「-」,「.」,「_」,「~」,「!」,「$」,「&」,「'」,「(」,「)」,「+」,「,」,「=」,「:」,「@」
- 例:
- URLパターンが"/examples/jsp/index.jsp"で,URLが"/examples/jsp/index.jsp"の場合,一致となります。
- パス指定
パスが一致するパターンです。
- URLの形式:
- /<パス>/*
- すべてのリクエストを対象にする場合の形式は,「/*」。
- /<パス>に指定できる文字:
- 次の文字を使用した,1文字以上の文字列を指定します。
- 半角英数字,「/」,「*」,「-」,「.」,「_」,「~」,「!」,「$」,「&」,「'」,「(」,「)」,「+」,「,」,「=」,「:」,「@」
- 例:
- URLパターンが"/examples/*"で,URLが"/examples/jsp/index.jsp"などの場合,一致となります。
- 拡張子指定
拡張子が一致するパターンです。指定されたパス以下のすべての階層に適用されます。
- URLの形式:
- /<パス>/*.<拡張子>
- すべてのパスを対象にする場合の形式は,「/*.<拡張子>」。
- <パス>,および<拡張子>に指定できる文字:
- 次の文字を使用した,1文字以上の文字列を指定します。
- 半角英数字,「/」,「*」,「-」,「.」,「_」,「~」,「!」,「$」,「&」,「'」,「(」,「)」,「+」,「,」,「=」,「:」,「@」
- 例:
- URLパターンが"/examples/*.jsp"で,URLが"/examples/jsp/index.jsp"などの場合,一致となります。
- サフィックス指定
サフィックスが一致するパターンです。指定されたパス以下のすべての階層に適用されます。
- URLの形式:
- /<パス>/*<サフィックス>
- すべてのパスを対象にする場合の形式は,「/*<サフィックス>」。
- <パス>,および<サフィックス>に指定できる文字:
- 次の文字を使用した,1文字以上の文字列を指定します。
- 半角英数字,「/」,「*」,「-」,「.」,「_」,「~」,「!」,「$」,「&」,「'」,「(」,「)」,「+」,「,」,「=」,「:」,「@」
- 例:
- URLパターンが"/examples/servlet/*Servlet"で,URLが"/examples/servlet/HelloServlet"などの場合,一致となります。
- 注意
- URLパターンの指定に関する注意事項を次に示します。
- URLパターンの先頭に「/」以外を指定しないでください。URLパターンの先頭に「/」以外を指定した場合,WindowsではKDJE41012-Eが出力され,そのマッピングは無視されます。それ以外のOSでは,メッセージが出力されて,HTTP Serverの開始に失敗します。
- 「*」をワイルドカードとして使用する場合,URLパターンの「/*」より前には指定できません。URLパターン内で最初の「*」の直前の文字が「/」ではない場合,そのURLパターンは「完全パス指定」として扱われます。その場合,URL内に「/*」となる個所があっても,ワイルドカードとして扱われません。
- 同じURLパターンのマッピングを複数記述しないでください。複数記述した場合,次のような動作となります。
「完全パス指定」,および「パス指定」の場合,先に書いたURLパターンのマッピングが有効となります。「拡張子指定」,または「サフィックス指定」の場合は,あとに書いたものが有効となります。
- <パス>,<拡張子>,<サフィックス>には,指定できる文字以外の文字を使用しないでください。指定できる文字以外の文字がURLパターンに含まれる場合,文字の種類によってはWebコンテナに転送されないことがあります。
- <拡張子>または<サフィックス>の文字列の長さは1文字以上で指定してください。1文字以上でない場合,「拡張子指定」ではKDJE41041-Wが出力され,そのマッピングは無視されます。「サフィックス指定」では,「パス指定」のURLパターンとして扱われます。
(2) 適用されるURLパターンの優先順位
四つのURLパターンへのマッピングのうち,最優先されるURLパターンは,「完全パス指定」です。「完全パス指定」に一致しない場合,次に示す順序でパスの一致が判定され,適用されるURLパターンが決定します。
- 「完全パス指定」に一致しない場合
「パス指定」「拡張子指定」「サフィックス指定」のうち,最長一致のものが適用されます。最長一致とは,先頭(「/」)から「*」の上位パスまでができるだけ長いものに一致することを示します。
次のように二つのマッピングが定義されている場合を例に,説明します。
- マッピング定義:
- /examples/* worker1
- /examples/jsp/* worker2
この場合,URLが"/examples/jsp/index.jsp"の場合にはworker2のマッピングが適用され,URLが"/examples/test/index.jsp"の場合にはworker1のマッピングが適用されます。
- 1.の条件に加えて,最長一致する「パス指定」「拡張子指定」「サフィックス指定」が複数存在する場合
「パス指定」より,「拡張子指定」または「サフィックス指定」が優先されます。
次のように二つのマッピングが定義されている場合を例に,説明します。
- マッピング定義:
- /examples/jsp/* worker1
- /examples/jsp/*.jsp worker2
この場合,URLが"/examples/jsp/index.jsp"の場合にはworker2のマッピングが適用され,URLが"/examples/jsp/test.html"の場合にはworker1のマッピングが適用されます。
- 1.および2.の条件に加えて,最長一致する「拡張子指定」「サフィックス指定」が複数存在する場合
あとに指定したURLパターンが優先されます。
次のように二つのマッピングが定義されている場合を例に,説明します。
- マッピング定義:
- /examples/*.jsp worker1
- /examples/*jsp worker2
この順番に指定されていた場合,URLが"/examples/jsp/index.jsp"の場合にはworker2のマッピングが適用されます。
- 注意
- 適用されるパターンの優先順位の判定に関する注意事項を次に示します。
- リクエストURLにクエリ(URLの「?」以降の文字列)がある場合,その部分はURLパターンとの比較には使用されません。
例:
リクエストURLが"/examples/jsp/index.jsp?query=foo"の場合,比較に使用されるURLは"/examples/jsp/index.jsp"となります。
- リクエストURLにパスパラメタ(URLの「;」以降の文字列)がある場合,その部分はURLパターンとの比較には使用されません。
例:
リクエストURLが"/examples/jsp/index.jsp;jsessionid=0000"の場合,比較に使用されるURLは"/examples/jsp/index.jsp"となります。
- リクエストURLはパスの正規化をしてから,URLパターンとの一致が判定されます。
例:
リクエストURLが"/examples/../examples/./jsp//index.jsp"の場合,比較に使用されるURLは"/examples/jsp/index.jsp"となります。
- URLパターンの正規化はしません。そのため,「./」,「../」などを含むURLパターンを定義しても,リクエストと一致することはありません。
- Windowsの場合,「拡張子指定」のURLパターンの拡張子について,大文字小文字は区別されないで判定されます。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.