オリジンサーバー上のリソースのディレクトリが変更されると、プレゼンスポイント (POP) 上のリソースのディレクトリも変更されます。 リソースへのリクエストURLが変更されない場合、POPはリクエストURLを書き換え、リクエストを宛先ディレクトリにリダイレクトする必要があります。 これにより、back-to-originリクエストの数が減り、クライアントのアクセスパフォーマンスが向上します。
背景情報
HTTP 302ステータスコードは、Foundメッセージとも呼ばれ、要求されたリソースが一時的に再配置されたことを示します。 アクセスURL書き換え機能を設定した後、POPは、HTTPステータスコード302の応答メッセージのLocationヘッダーにリソースの新しいURLを追加します。 クライアントは、メッセージを受信した後、新しいURLに要求を送信する。
アクセスURL書き換えルールを作成した後、要求されたリソースが再配置された場合、POPはデフォルトでHTTPステータスコード302をクライアントに返します。 HTTPステータスコードを303または307に設定することもできます。 HTTPステータスコードを変更するには、チケットを起票
HTTPステータスコード | 説明 | 解決策 | シナリオ |
302 | 見つかりました | GETリクエストは変更されません。 他のメソッドを使用するリクエストは、GETリクエストに変更できます。 | 不明な理由により、webページに一時的にアクセスできません。 この場合、検索エンジンはwebページのURLを更新しません。 |
303 | その他を見る | GETリクエストは変更されません。 他のメソッドを使用するリクエストはGETリクエストに変更されます。 メッセージ本文が削除されます。 | PUTまたはPOST要求が処理された後にWebページがリダイレクトされ、ページ更新によって頻繁に開始される要求を防ぎます。 |
307 | 一時的なリダイレクト | リクエストメソッドとメッセージ本文は変更されません。 | 不明な理由により、webページに一時的にアクセスできません。 この場合、検索エンジンはwebページのURLを更新しません。 WebサイトがGET以外のメソッドを使用するリクエストをサポートしている場合、HTTP 307ステータスコードの代わりにHTTP 302ステータスコードが返されます。 |
ドメイン名に対して最大50の書き換えルールを作成できます。 複数のアクセス書き換えルールを作成する場合、ルールはAlibaba Cloud CDN コンソールにリストされている降順で適用されます。
シナリオ
オリジンサーバー上のリソースが別のURLに移動され、Alibaba Cloud CDN POPにキャッシュされているリソースのURLが更新されます。 ただし、クライアントは元のURLにリクエストを送信します。 この場合、Alibaba Cloud CDN はリクエストを書き換えて、リクエストを新しいURLにリダイレクトする必要があります。 たとえば、イメージファイルは /download /ディレクトリから /image /ディレクトリに移動されます。
手順
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、キャッシュ設定 をクリックします。
アクセス URL の書き換え タブをクリックします。
追加 をクリックし、ビジネス要件に基づいてパラメーターを設定します。
パラメーター
説明
書き直すパス
スラッシュ (/) で始まるURLを入力します。 URLにhttp:// またはドメイン名を含めることはできません。 Perl Compatible Regular Expressions (PCRE) を使用してURLを指定できます。 例: ^/hello $。
変更後のパス
スラッシュ (/) で始まるURLを入力します。 URLにhttp:// またはドメイン名を含めることはできません。 例: /index.html。
フラグ
デフォルトでは、リダイレクトとブレークがサポートされています。
リダイレクト: リクエスト内のURLがルールと一致する場合、Alibaba Cloud CDNはHTTP 302ステータスコードを返し、リクエストは実際のURLにリダイレクトされます。 POPによってクライアントに返される応答メッセージのLocationヘッダーの値は、実際のURLです。 元のURLのパラメータは変更されません。 現在のルールが実行された後、リクエストは他のルールと照合されます。
Break: リクエストのURLがルールと一致する場合、リクエストされたURLは実際のURLで上書きされます。 元のURLのパラメータは変更されません。 現在のルールが実行された後、他のルールはスキップされます。
Empty、enhance-break、およびenhance_redirectもサポートされています。 これらのルールを使用するには、チケットを起票
空: 複数のルールが設定され、リクエスト内のURLがルールと一致する場合、現在のルールが実行された後に後続のルールが一致します。
enhance_break: enhance_breakはbreakに似ていますが、パラメーターを含めてURLを変更します。
enhance_redirect: enhance_redirectはredirectに似ていますが、パラメーターを含めてURLを変更します。
説明異なるルールは異なる書き換え方法を使用し、書き換えられたURLが他のドメイン名や他のプロトコルをサポートするかどうかも異なります。
Empty、Break、enhance_breakはリクエストのURLを書き換えますが、URLのドメイン名やプロトコルを変更することはできません。 たとえば、プロトコルをHTTPからHTTPSに変更することはできません。
Redirectおよびenhance_redirectは、302リダイレクトを使用してURLを書き換え、URL内のドメイン名またはプロトコルを変更できます。
302 302のリダイレクト応答でLocationヘッダーを現在のドメイン名または別のドメイン名に設定できます。 このように、元のURLは
example.com
ドメイン名を使用し、書き換えられたURLはaliyundoc.com
ドメイン名を使用します。302 リダイレクション応答の位置302ヘッダは、異なるプロトコルをサポートする。
ルール条件
ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。
条件を使用しない
ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。
NGINX変数コンピューティングの有効化
デフォルトでは、チェックボックスは選択されていません。 このチェックボックスをオンにすると、ターゲットURLでNGINX組み込み変数を使用できます。 サンプル設定:
書き直すパス:
^/test.jpg$
ターゲットパス:
/test.${arg_type}
NGINX変数の計算を有効にすると、${nginx_var} の値が計算されます。 ${arg_type} は、元のURLのtypeパラメーターの値を示します。
説明このパラメーターを設定するには、チケットを起票
OK をクリックします。
書き換えルールが作成されると、[アクセスURLの書き換え] タブにルールが表示されます。 ルールを変更または削除できます。
設定例
正規表現を使用してアクセスURLの書き換えルールを設定する方法を次の図に示します。
クライアントが /hello
を含むhttp://example.aliyundoc.com/hello
を要求すると、POPはLocationヘッダーに新しいURL http://example.aliyundoc.com/index.html
を書き込み、HTTPステータスコード302をクライアントに返します。 クライアントは、http://example.aliyundoc.com/index.html
要求を開始する。