オリジンサーバー上のリソースのパスが変更された場合、CDN の POP (ポイントオブプレゼンス) 上の元のパスでは、そのリソースにアクセスできなくなります。クライアントが元の URL を使用してリソースをリクエストした場合、CDN はリクエスト URL を書き換えて、リクエストを宛先パスにリダイレクトできます。これにより、オリジンフェッチリクエストが削減され、クライアントのアクセスパフォーマンスが向上します。
背景情報
HTTP ステータスコード 302 (302 Found) は、リソースが一時的に移動されたことを示します。アクセス URL の書き換え機能を設定すると、CDN POP は HTTP Location ヘッダーに新しい URL を含む 302 応答を返します。クライアントは 302 応答を受信した後、指定された URL に新しいリクエストを送信します。
デフォルトでは、アクセス URL の書き換えルールを設定した後、CDN POP は 302 ステータスコードを送信します。303 および 307 ステータスコードもサポートされています。ステータスコードを変更するには、チケットを送信してください。
ステータスコード | 意味 | 処理メソッド | 利用シーン |
302 | Found | GET メソッドは変更されません。他のメソッドは GET メソッドに変更される場合があります。 | 予期せぬ理由で Web ページが一時的に利用できなくなりました。この場合、検索エンジンはリンクを更新しません。 |
303 | See Other | GET メソッドは変更されません。他のメソッドは GET メソッドに変更されます。メッセージ本文は失われます。 | PUT または POST リクエストが完了した後のページリダイレクトに使用されます。これにより、ページが更新された場合に同じ操作が再度トリガーされるのを防ぎます。 |
307 | Temporary Redirect | メソッドとメッセージ本文は変更されません。 | 予期せぬ理由で Web ページが一時的に利用できなくなりました。この場合、検索エンジンはリンクを更新しません。サイトが GET 以外のメソッドを使用するリンクや操作をサポートしている場合、このステータスコードは 302 ステータスコードよりも優先されます。 |
1 つのドメイン名に対して最大 50 個の書き換えルールを設定できます。複数のルールを設定した場合、それらは CDN コンソールの [アクセス URL の書き換え] ページに表示されている順序で実行されます。
アクセス URL の書き換えとオリジン URL の書き換えの違い
機能 | 影響を受ける対象 | クライアントエクスペリエンス | 利用シーン |
クライアントがアクセスする URL に影響します。また、POP がオリジンフェッチに使用する URL も変更されます。 |
| 古いドメイン名から新しいドメイン名への URL の移行やマッピング、またはモバイルクライアントと PC クライアントに異なる URL を提供するためによく使用されます。 例:クライアントが | |
POP がオリジンフェッチに使用する URL に影響します。クライアントがアクセスする URL は変更されません。 | クライアントに表示される URL はアクセスされた URL と同じで、変更されません。 | オリジンサーバーの実際の URL 構造を隠してオリジンサーバー情報を保護するため、または URL マッピングを使用して CDN POP が異なるオリジンディレクトリからコンテンツをフェッチできるようにするためによく使用されます。 例:クライアントが |
アクセス URL の書き換え
クライアントが POP にリクエストを送信します。リクエスト URL は
old.example.com/helloです。POP はリクエストを受信した後、アクセス URL の書き換えルールに基づいてリクエスト URL を
new.example.com/helloに書き換えます。その後、POP は 302 応答の HTTP Location ヘッダーに新しい URL を含めます。クライアントは 302 応答を受信した後、新しい URL に新しいリクエストを送信します。
POP はキャッシュを確認します。書き換えられた URL のコンテンツがキャッシュされている場合、POP はそのコンテンツをクライアントに返します。コンテンツがキャッシュされていない場合、POP はオリジンサーバーにリクエストを送信します。リクエスト URL は書き換えられた URL、
new.example.com/helloです。オリジンサーバーはリクエストを受信し、応答を POP に返します。
POP は応答をキャッシュし、クライアントに返します。
オリジン URL の書き換え
クライアントが POP にリクエストを送信します。リクエスト URL は
cdn.example.com/files/hello.txtです。POP はリクエストを受信した後、キャッシュを確認します。リクエスト URL のコンテンツがキャッシュされている場合、POP はそのコンテンツをクライアントに返します。コンテンツがキャッシュされていない場合、POP はオリジン URL の書き換えルールに基づいてオリジン URL を
origin.example.com/secret/files/hello.txtに書き換え、オリジンサーバーにリクエストを送信します。オリジンサーバーはリクエストを受信し、応答を POP に返します。
POP は応答をキャッシュし、クライアントに返します。
操作手順
CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、目的のドメイン名を見つけ、操作 列の 管理 をクリックします。
ドメインのナビゲーションウィンドウで、キャッシュ設定 をクリックします。
アクセス URL の書き換え タブをクリックします。
追加 をクリックして、アクセス URL の再書き込みルールのパラメーターを設定します。

パラメーター
説明
書き換えのパス
パスはスラッシュ (
/) で始まる必要があり、プロトコルやドメイン名を含めることはできません。PCRE (Perl 互換正規表現) がサポートされています。例:^/hello$。変更後のパス
フラグを [中断] に設定した場合、パスはスラッシュ (
/) で始まる必要があり、プロトコルまたはドメイン名を含めることはできません。フラグを [リダイレクト] に設定した場合、パスにプロトコルとドメイン名を含めることができます。 PCRE (Perl 互換正規表現) がサポートされています。 例えば、
$1や$2を使用してパスから括弧内の文字列をキャプチャして再書き込みできます。
フラグ
デフォルトでは、[リダイレクト] と [中断] がサポートされています。
リダイレクト:リクエスト URL がルールに一致する場合、リクエストは 302 状態コードで宛先 URL にリダイレクトされます。 POP がクライアントに返す応答の Location ヘッダーは宛先 URL です。 元の URL のパラメーターは変更されません。 現在のルールが実行された後、リクエストは引き続き残りのルールと照合されます。
中断: リクエスト URL がルールに一致する場合、リクエストは宛先 URL に書き換えられます。元の URL のパラメーターは変更されません。現在のルールが実行された後、残りのルールはスキップされます。
Empty、enhance-break、enhance_redirect フラグもサポートされています。これらのフラグを使用するには、チケットを送信して、バックエンドで設定してもらう必要があります。
Empty:複数のルールを設定し、リクエスト URL がルールに一致する場合、現在のルールが実行された後、リクエストは後続のルールと照合され続けます。
enhance_break:Break に似ていますが、パラメーターを含む URL 全体を変更します。
enhance_redirect:Redirect に似ていますが、パラメーターを含む URL 全体を変更します。
説明フラグによって書き換え方法が異なります。書き換えられた URL が他のドメイン名やプロトコルをサポートするかどうかも異なります:
Empty、Break、enhance_break は、ユーザーリクエスト URL を直接書き換えます。他のドメイン名やプロトコルへの書き換えはサポートしていません。たとえば、これらのフラグを使用してプロトコルを HTTP から HTTPS に変更することはできません。
Redirect と enhance_redirect は、302 リダイレクトを使用して URL を書き換えます。他のドメイン名やプロトコルへの書き換えをサポートしています:
302 Location アドレスを現在の高速化ドメイン名または別のドメイン名に設定できます。これにより、
example.comドメイン名を使用する URL を、aliyundoc.comドメイン名を使用する新しい URL に書き換えることができます。302 Location アドレスは他のプロトコルをサポートしています。これにより、HTTP プロトコルを使用する URL を、HTTPS プロトコルを使用する新しい URL に書き換えることができます。
ルール条件
ルール条件は、ユーザーリクエスト内のさまざまなパラメーターを識別して、設定がリクエストに適用されるかどうかを判断します。
使用しない:ルール条件を使用しません。
ルール条件を追加または編集するには、ルールエンジンで管理します。
NGINX 変数計算を有効にする
デフォルトでは、この機能は無効になっています。この機能を有効にすると、宛先 URL で組み込みの NGINX 変数を使用できます。例:
書き換え元パス:
^/test.jpg$ターゲットパス:
/test.${arg_type}このオプションを有効にすると、
${nginx_var}の値が計算されます。${arg_type}は、元の URL の type パラメーターの値を指定します。
説明このパラメーターを設定するには、チケットを送信して、バックエンドで設定してもらう必要があります。
OK をクリックします。
再書き込みルールを設定すると、ルールがリストに表示され、[変更] または [削除] できます。
設定例
例 1
クライアントが http://example.aliyundoc.com/hello をリクエストします。リクエストパスが /hello であるため、CDN POP は新しい URL http://example.aliyundoc.com/index.html を 302 応答の Location ヘッダーに書き込み、その応答をクライアントに送信します。その後、クライアントは http://example.aliyundoc.com/index.html にリクエストを送信します。

302 リダイレクト中、Location ヘッダーにプロトコルとドメイン名が含まれていない場合、クライアントはデフォルトで元のリクエストのプロトコルとドメイン名を使用します。
例 2
クライアントが http://example.aliyundoc.com/hello をリクエストします。リクエストには /hello が含まれており、正規表現 ^/hello$ に一致します。CDN POP はクライアントに 302 ステータスコードを返し、Location ヘッダーに宛先 URL https://test.aliyundoc.com/index.html を含めます。応答を受信した後、クライアントは https://test.aliyundoc.com/index.html に新しいリクエストを送信します。

例 3
クライアントが http://www.example.com/cdn/url/http://image.example.com/image/cat.jpg をリクエストします。リクエストには /cdn/url/http:// が含まれており、正規表現 ^/cdn/url/http://(.*) に一致します。CDN POP はクライアントに 302 ステータスコードを返し、Location ヘッダーに宛先 URL http://image.example.com/image/cat.jpg を含めます。応答を受信した後、クライアントは http://image.example.com/image/cat.jpg にリクエストを送信します。
