すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:URL の書き換え

最終更新日:Jul 17, 2026

Edge Security Acceleration (ESA) のエッジノードで URL リライトルールを設定して、オリジンリクエストの際に、リクエストパスとクエリ文字列を変更します。ユーザー向けの URL やフロントエンドの設定を変更することなく、オリジンサーバーのパスを移行します。

一般的なユースケース

  • オリジンの移行: オリジンファイルのパスは調整されますが、ユーザーのアクセスパスは変更したくありません。

  • API バージョンの適応: 古い API バージョンのパスを新しいバージョンに書き換えます。

  • パラメーターの標準化: 異なるクライアントから渡されるパラメーターの形式を統一します。

  • クリーン URL: 複雑なバックエンドパスを、分かりやすいユーザー向けパスにマッピングします。

仕組み

説明

URL リライトが有効になっている場合、プリフェッチリクエストは書き換え後の URL を使用する必要があります。

URL リライトはオリジンリクエストの際にのみ適用され、ESA の内部処理パイプラインには影響しません。キャッシュキーは元の URL から生成されるため、キャッシュのマッチングには影響しません。書き換えられた URL は、オリジンリクエストにのみ使用されます。

実行フロー

  1. キャッシュの確認: エッジノードは元の URL でキャッシュを検索します。キャッシュミスの場合、URL リライトルールが URL をターゲットパスに変換します。

  2. オリジンリクエスト: 書き換えられた URL がオリジンサーバーに送信されます。レスポンスは、元の URL をキャッシュキーとしてキャッシュに保存されます。

  3. キャッシュされたコンテンツの返却: キャッシュされたコンテンツがクライアントに返されます。

実行順序

URL リライトは、キャッシュの確認とオリジンの選択の後、オリジンリクエストヘッダーの変更前に実行されます。パスは、オリジンターゲットが決定された後に調整され、ヘッダー処理には影響しません。

URL リライトルールの設定

  1. ESA コンソールで サイト管理 を選択し、サイト 列で対象のサイトをクリックします。

  2. ナビゲーションペインで、ルール > 変換ルール を選択します。

  3. URL の書き換え セクションで、ルールを追加 をクリックして ルール名 を入力します。 パスクエリ文字列 を設定し、OK をクリックします。

    書き換え対象

    操作方法

    説明

    [パス]

    [保持する]

    元のパスを変更しません。

    -

    [静的]

    固定パスに置き換えます (/ で始まる必要があります)。

    /new/path

    [動的]

    を使用してパスを動的に生成します。

    concat("/v2", http.request.uri.path)

    [クエリ文字列]

    [保持する]

    元のクエリ文字列を変更しません。

    -

    [静的]

    固定パラメーターに置き換えます (? なし)。

    version=new&type=api

    [動的]

    を使用してクエリ文字列を動的に生成します。

    concat("version=new&", http.request.uri.query)

設定例

例 1:オリジンパスの移行

  • ユースケース: オリジンは画像を /images/ ディレクトリから /static/img/ ディレクトリに移動します。

  • 一致条件: starts_with(http.request.uri.path, "/images/")

  • 書き換え設定:

    書き換え対象:パス

    操作方法:動的

    式: regex_replace(http.request.uri.path, "^/images/", "/static/img/")

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/images/logo.png

    オリジンリクエスト: https://origin.com/static/img/logo.png

例 2:API バージョンの適応

  • ユースケース: オリジンリクエスト中に、/api/v1/ から /api/v2/ へリクエストを書き換え、バージョン識別子を追加します。

  • 一致条件: starts_with(http.request.uri.path, "/api/v1/")

  • 書き換え設定:

    書き換え対象:パス、クエリ文字列

    操作方法:動的

    パス書き換え式: regex_replace(http.request.uri.path, "^/api/v1/", "/api/v2/")

    クエリ文字列書き換え式:concat("api_version=v2&", http.request.uri.query)

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/api/v1/users?limit=10

    オリジンリクエスト: https://origin.com/api/v2/users?api_version=v2&limit=10

例 3:パラメーターの標準化

  • ユースケース: クライアントごとに異なるパラメーター名 (useriduid など) を、標準の user_id に統一します。

  • 一致条件: http.request.uri.query contains "userid="

  • 書き換え設定:

    書き換え対象:クエリ文字列

    操作方法:動的

    式: regex_replace(http.request.uri.query, "userid=", "user_id=")

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/profile?userid=123

    オリジンリクエスト: https://origin.com/profile?user_id=123

例 4:パスの正規化

ケース 1

  • ユースケース:入力ミスが原因で URL に含まれてしまう余分なスラッシュ (// など) を取り除きます。

  • 注意: regex_replace 関数は、ソース文字列内で最初に一致した文字列のみを置換します。

  • 一致条件: http.request.uri.path contains "//"

  • 書き換え設定:

    書き換え対象:パス

    操作方法:動的

    式: regex_replace(http.request.uri.path, "//+", "/")

  • 書き換え効果:

    ユーザーリクエスト:https://example.com/path//to/resource

    オリジンリクエスト: https://origin.com/path/to/resource

ケース 2

  • 使用例:連続する複数のスラッシュを 1 つのスラッシュにまとめます。 例: /path///download//image//user.jpg

  • 解決策:複数の regex_replace の呼び出しをネストし、連続するスラッシュを段階的に置換します。

  • 一致条件: http.request.uri.path contains "//"

  • 書き換え設定:

    • 書き換え対象: パス

    • 操作方法: 動的

    • 式: regex_replace(regex_replace(regex_replace(http.request.uri.path, "//+", "/"), "//+", "/"), "//+", "/")

  • 書き換え効果:

    • ユーザーリクエスト: https://example.com/path///download//image//user.jpg

    • オリジンリクエスト: https://origin.com/path/download/image/user.jpg

例 5:すべてのクエリパラメーターを削除する

  • ユースケース: 静的リソースから、.css で終わる URI のクエリストリングなど、すべてのクエリパラメーターを除去します。

  • 一致条件: ends_with(http.request.uri.path, ".css")

  • 書き換え設定:

    書き換え対象:クエリ文字列

    操作方法:動的

    式: regex_replace(http.request.uri.query, ".*", "")

  • 書き換え効果:

    ユーザーリクエスト:https://example.com/style.css?version=1.2.3

    オリジンリクエスト:https://origin.com/style.css?

例 6:動的パスの簡略化

  • ユースケース: パスから冗長な数字シーケンスを削除します。たとえば、/example/ 配下のパスから、123 に続く数字を削除します。

  • 一致条件: (http.request.uri matches "^/example/(.*)123[0-9]+(.*)$")

  • 書き換え設定:

    書き換え対象:パス

    操作方法:動的

    式: regex_replace(http.request.uri,"^/example/(.*)123[0-9]+(.*)$","/example/$1$2")

  • 書き換え効果:

    ユーザーリクエスト:https://example.com/example/tool12300341features

    オリジンリクエスト: https://origin.com/example/toolfeatures

例 7:パスパラメーターを抽出し、クエリ文字列に追加する

  • ユースケース: 動的なパスセグメントを抽出し、それをクエリパラメーターとして追加し、固定文字列に置き換えます。

    元の URI:/api/v1/dynamic_value/download?version=1&size=2

    書き換えられた URI: /api/v1/fixed/download?version=1&size=2&token=dynamic_value

  • 一致条件: すべての受信リクエスト

  • 書き換え設定:

    書き換え対象:パス + クエリ文字列

    操作方法:動的

    パス書き換え式: regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$", "/api/v1/fixed/download")

    クエリストリング書き換え式: concat(http.request.uri.query,"&token=",regex_replace(http.request.uri.path, "^/api/v1/(.*)/download$","$1"))

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/api/v1/ABC123/download?version=1&size=2

    オリジンリクエスト: https://origin.com/api/v1/fixed/download?version=1&size=2&token=ABC123

例 8:特定のパラメーターを削除する

  • 使用例:特定のクエリパラメーターを削除します。 たとえば、https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6 の場合、key2、key3、key5、key6 を削除して、key1 と key4 のみを残します。

  • 一致条件: すべての受信リクエスト

  • 書き換え設定:

    書き換え対象:クエリ文字列

    操作方法:動的

    式: regex_replace(regex_replace(regex_replace(regex_replace(http.request.uri.query, "(&?key2=[^&]*)", ""), "(&?key3=[^&]*)", ""), "(&?key5=[^&]*)", ""), "(&?key6=[^&]*)", "")

    説明

    ネストされた各 regex_replace は 1 つのパラメーターを削除します。パターン (&?keyN=[^&]*) は先行する & にマッチし、& 文字が残るのを防ぎます。

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4&key5=value5&key6=value6

    オリジンリクエスト: https://origin.com/1.txt?key1=value1&key4=value4

例 9:特定のパラメーターを保持する

  • ユースケース:特定のクエリパラメーターのみを保持します。たとえば、 https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4 が指定された場合、 key1 と key4 のみを保持します。

  • 一致条件: すべての受信リクエスト

  • 書き換え設定:

    書き換え対象:クエリ文字列

    操作方法:動的

    表現式: concat("key1=", http.request.uri.args["key1"], "&key4=", http.request.uri.args["key4"])

    説明

    concat 関数は、指定されたパラメーターのみでクエリ文字列を再構築します。http.request.uri.args["keyN"] を使用して各パラメーター値を抽出します。リストにないパラメーターは除外されます。

  • 書き換え効果:

    ユーザーリクエスト: https://example.com/1.txt?key1=value1&key2=value2&key3=value3&key4=value4

    オリジンリクエスト:https://origin.com/1.txt?key1=value1&key4=value4