オリジンサーバー上のリソースのストレージパスが変更されても、リクエストされた URL が変更されない場合は、Edge Security Acceleration (ESA) プレゼンスポイント (POP) でリダイレクトルールを構成して、オリジンパスを照合し、リクエスト URL を宛先 URL にリダイレクトできます。これにより、オリジンへのリクエストを減らし、クライアントのアクセス パフォーマンスを向上させることができます。
リダイレクトルールの仕組み
以下に、リダイレクトルールの仕組みを示します。
ESA POP でリダイレクトルールを構成した後、クライアントでリソースアクセス リクエストを開始します。
ESA POP は、301 や 302 などのリダイレクト状態コードをクライアントに返し、HTTP 応答ヘッダーに宛先 URL を含めます。
応答を受信した後、クライアントは ESA POP の Location ヘッダーにある URL へのリクエストを開始して、リソースアクセスを完了します。
サポートされているリダイレクト状態コードとシナリオ
301
説明: 永久に移動済み
処理方法: GET リクエストは変更されません。他のリクエストメソッドを使用するリクエストは GET に変更される場合があります。
シナリオ: リクエストされたリソースは、Location ヘッダーで指定された新しい URL に永久に移動されます。この場合、検索エンジンは Web ページの URL を更新します。
302
説明: 見つかりました
処理方法: GET リクエストは変更されません。他のリクエストメソッドを使用するリクエストは GET に変更される場合があります。
シナリオ: Web ページが一時的にアクセス不能です。この場合、検索エンジンは Web ページの URL を更新しません。
303
説明: その他を参照
処理方法: GET リクエストは変更されません。他のリクエストメソッドを使用するリクエストは GET に変更されます。メッセージ本文は削除されます。
シナリオ: この状態コードは、ページのリフレッシュによって発生する繰り返しのリダイレクトを防ぐために、PUT および POST リクエストをリダイレクトするために使用されます。
307
説明: 一時的なリダイレクト
処理方法: リクエストメソッドとメッセージ本文は変更されません。
シナリオ: Web ページが一時的にアクセス不能です。Web サイトが GET 以外のリクエストメソッドを使用するリクエストをサポートしている場合、状態コード 302 の代わりに状態コード 307 が返されます。
308
説明: 永続的なリダイレクト
処理方法: リクエストメソッドとメッセージ本文は変更されません。
シナリオ: リソースが永久に移動されます。リクエストメソッドとメッセージ本文は、クライアントで変更されないままにする必要があります。この状態コードは、Web サイトのリファクタリングや API の移行など、セマンティックな一貫性が必要なシナリオに適用されます。
リダイレクトルールの構成
リダイレクトルールを追加してリソースアクセス リクエストを開始すると、ESA は ルール優先度 に基づいてルールを順番に照合して実行し、対応する結果を返します。
ESA コンソールで、[Webサイト] を選択し、管理する Web サイトの名前をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[ルールを作成] をクリックし、[ルール名] に入力します。
[リクエストが一致する場合...] 領域で、受信リクエストを照合するための条件を指定します。ルールの構成方法の詳細については、「ルール」をご参照ください。
[URL リダイレクト] エリアで、[リダイレクトタイプ] として [静的] を選択し、[URL] を指定し、[ステータスコード] ドロップダウンリストから値を選択します。
リダイレクトタイプ
有効な値: 静的 および 動的。
静的: リクエストを固定 URL にリダイレクトするには、[静的] を選択し、宛先 URL を固定文字列に設定します。たとえば、[URL] を
https://test.example.com/image/1.jpg?test=123
に設定します。動的: 元の URL を動的に変更するには、[動的] を選択し、宛先 URL を式に設定します。たとえば、[式] を
concat("https://www.example.com", http.request.uri.path)
に設定します。この値は、リクエストされた URL のホスト名が新しいドメイン名に置き換えられ、URL のパスは変更されないことを示します。
状態コード
URL リダイレクトを示すために使用する応答コード。有効な値: 301、302、303、307、および 308。デフォルト値: 301。詳細については、「サポートされているリダイレクト状態コードとシナリオ」をご参照ください。
クエリ文字列を保持
元の要求のクエリパラメータを宛先 URL に含めるかどうかを指定します。デフォルトでは、URL リダイレクト後、元の要求のクエリパラメータは含まれません。
[クエリ文字列を保持] を有効にした後:
リクエスト URL にクエリ文字列が含まれている場合、クエリ文字列はリダイレクト URL のクエリ文字列を上書きします。
リクエストの URL にクエリ文字列が含まれていない場合、リダイレクト URL のクエリ文字列が使用されます。
詳細については、「設定例」をご参照ください。
[OK] をクリックします。
構成例
リダイレクトタイプが静的の場合の構成例
例 1
リクエストに含まれるクエリ文字列: いいえ
リダイレクト URL に含まれるクエリ文字列: はい
クエリ文字列の保持: 有効/無効
リクエスト URL の例:
http://test.example.com/1.jpg
リダイレクト URL の例:
http://test.example.com/image/1.jpg?test=123
Location ヘッダーの例:
http://test.example.com/image/1.jpg?test=123
注: リクエスト URL の例にクエリ文字列が含まれていない場合、Location ヘッダーの例には、クエリ文字列の保持が有効になっているかどうかに関係なく、リダイレクト URL の例のクエリ文字列が保持されます。
例 2
リクエストに含まれるクエリ文字列: はい
リダイレクト URL に含まれるクエリ文字列: はい
クエリ文字列の保持: 有効
リクエスト URL の例:
http://test.example.com/1.jpg?test=321
リダイレクト URL の例:
http://test.example.com/image/1.jpg?test=123
Location ヘッダーの例:
http://test.example.com/image/1.jpg?test=321
注: クエリ文字列の保持が有効になっている場合、リクエスト URL の例のクエリ文字列のみが保持され、リダイレクト URL の例のクエリ文字列は無視されます。
例 3
リクエストに含まれるクエリ文字列: はい
リダイレクト URL に含まれるクエリ文字列: はい
クエリ文字列の保持: 無効
リクエスト URL の例:
http://test.example.com/1.jpg?test=321
リダイレクト URL の例:
http://test.example.com/image/1.jpg?test=123
Location ヘッダーの例:
http://test.example.com/image/1.jpg?test=123
注: クエリ文字列の保持が無効になっている場合、リダイレクト URL の例のクエリ文字列のみが保持され、リクエスト URL の例のクエリ文字列は無視されます。
例 4
リクエストに含まれるクエリ文字列: はい
リダイレクト URL に含まれるクエリ文字列: いいえ
クエリ文字列の保持: 有効
リクエスト URL の例:
http://test.example.com/1.jpg?test=321
リダイレクト URL の例:
http://test.example.com/image/1.jpg
Location ヘッダーの例:
http://test.example.com/image/1.jpg?test=321
注: クエリ文字列の保持が有効になっている場合、リダイレクト URL の例にクエリ文字列が含まれているかどうかに関係なく、リクエスト URL の例のクエリ文字列がリダイレクト URL の例に自動的に追加されます。
例 5
リクエストに含まれるクエリ文字列: はい
リダイレクト URL に含まれるクエリ文字列: いいえ
クエリ文字列の保持: 無効
リクエスト URL の例:
http://test.example.com/1.jpg?test=321
リダイレクト URL の例:
http://test.example.com/image/1.jpg
Location ヘッダーの例:
http://test.example.com/image/1.jpg
注: クエリ文字列の保持が無効になっている場合、リクエスト URL の例のクエリ文字列は破棄され、リダイレクト URL の例のみが返されます。
リダイレクトタイプが動的の場合の構成例
例 1
クエリ文字列の保持: 無効
リクエスト URL の例:
https://test.example.com/image/1.jpg?test=123
関数式:
concat("https://www.example.com", http.request.uri.path)
Location ヘッダーの例:
https://www.example.com/image/1.jpg
注:
クエリ文字列の保持が無効になっている場合、リクエスト URL の例のパス部分 (
/image/1.jpg
) のみが保持され、クエリ文字列 (?test=123
) は無視されます。関数式はドメイン名とパスを連結するだけで、クエリ文字列は処理しません。
例 2
クエリ文字列の保持: 有効
リクエスト URL の例:
https://test.example.com/image/1.jpg?test=123
関数式:
concat("https://www.example.com", http.request.uri.path)
Location ヘッダーの例:
https://www.example.com/image/1.jpg?test=123
注:
クエリ文字列の保持が有効になっている場合、関数式がクエリ文字列を明示的に処理するかどうかに関係なく、リクエスト URL の例のクエリ文字列がリダイレクト URL の例に自動的に追加されます。
関数式はパスのみを連結します。システムは構成に基づいてクエリ文字列を自動的に追加します。
クエリ文字列の保持 | リクエスト URL の例 | 関数式 | Location ヘッダーの例 |
無効 | https://test.example.com/image/1.jpg?test=123 | concat("https://www.example.com", http.request.uri.path) | https://www.example.com/image/1.jpg |
有効 | https://test.example.com/image/1.jpg?test=123 | concat("https://www.example.com", http.request.uri.path) | https://www.example.com/image/1.jpg?test=123 |
可用性
リダイレクトルール | エントランス | Pro | プレミアム | エンタープライズ |
リダイレクトルールの数 | 10 | 25 | 50 | 125 |