APIを介して作成
http_custom_errorsフェーズに属するルールとしてカスタムエラーレスポンスを設定します。Rulesets APIを使用して、APIを介してカスタムエラーレスポンスを作成します。
APIを介してカスタムエラーレスポンスを作成する際は、次の点に注意してください。
- ルールアクションを
serve_errorに設定します。 - レスポンスタイプに応じて、
action_parametersフィールドにパラメータを定義します。 - ゾーンレベルで
http_custom_errorsフェーズにカスタムエラーレスポンスルールをデプロイします。
http_custom_errorsフェーズのルールセット内で最初に一致したルールが適用されます。ルールセット内の他のルールは一致または適用されません。
APIを介して特定のゾーンのカスタムエラーレスポンスルールを作成するためのワークフローは次のとおりです。
-
List zone rulesets操作を使用して、ゾーンレベルで
http_custom_errorsフェーズのルールセットがすでに存在するかどうかを確認します。 -
フェーズルールセットが存在しない場合は、Update a zone entry point ruleset操作を使用して作成します。この操作では、ルールセットが存在しない場合に作成し、ルールセット内のすべてのルールを更新できます。
http_custom_errorsフェーズにルールセットを作成します。フェーズルールセットがすでに存在する場合は、Update a zone entry point ruleset操作を使用してルールセット内のすべてのルールを置き換えるか、Add rule to ruleset操作を使用して既存のルールにルールを追加します。
このセクションの例では、ルール式に次のフィールドを使用しています。
-
http.response.code: クライアントに返されるHTTPステータスコードを表します。これはCloudflare製品によって設定されるか、オリジンサーバーによって返されます。このフィールドを使用して、オリジンサーバーまたはCloudflare製品(Workerなど)によって返されるエラーコードのエラーレスポンスをカスタマイズします。 -
cf.response.1xxx_code: Cloudflare生成のエラーに対する特定のエラーコードを含みます。このフィールドは、52xや1xxxなどのCloudflare生成のエラーにのみ機能します。
この例では、IDが{zone_id}のゾーン内のすべての5xxエラー(500-599)に対してカスタムJSONエラーレスポンスを設定します。カスタムエラーレスポンスのHTTPステータスコードは530に設定されます。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_custom_errors/entrypoint \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "action": "serve_error", "action_parameters": { "content": "{\"message\": \"サーバーエラーが発生しました。\"}", "content_type": "application/json", "status_code": 530 }, "expression": "http.response.code ge 500 and http.response.code lt 600", "enabled": true } ]}'このPUTリクエストは、Update a zone entry point ruleset操作に対応しており、http_custom_errorsフェーズのエントリポイントルールセット内の既存のルールを置き換えます。
この例では、500 HTTPステータスコードを持つレスポンスに対してカスタムHTMLエラーレスポンスを設定し、レスポンスステータスコードを503に再定義します。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_custom_errors/entrypoint \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "action": "serve_error", "action_parameters": { "content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>アプリケーションが利用できません</title></head><body><h1>アプリケーションは一時的に利用できません</h1><p>後でもう一度お試しください。</p></body></html>", "content_type": "text/html", "status_code": 503 }, "expression": "http.response.code eq 500", "enabled": true } ]}'このPUTリクエストは、Update a zone entry point ruleset操作に対応しており、http_custom_errorsフェーズのエントリポイントルールセット内の既存のルールを置き換えます。
この例では、Cloudflareエラー1020(アクセス拒否)に対するカスタムHTMLエラーレスポンスを設定します。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_custom_errors/entrypoint \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "action": "serve_error", "action_parameters": { "content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>アクセス拒否</title></head><body><h1>このページにアクセスする権限がありません</h1><p>これがエラーだと思われる場合は、お問い合わせください。</p></body></html>", "content_type": "text/html" }, "expression": "cf.response.1xxx_code eq 1020", "enabled": true } ]}'このPUTリクエストは、Update a zone entry point ruleset操作に対応しており、http_custom_errorsフェーズのエントリポイントルールセット内の既存のルールを置き換えます。
カスタムエラーレスポンスを管理するためにAPIリクエストで使用されるAPIトークンは、少なくとも次の権限を持っている必要があります。
- Custom Error Rules > Edit