コンテンツにスキップ

APIを介して作成

http_custom_errorsフェーズに属するルールとしてカスタムエラーレスポンスを設定します。Rulesets APIを使用して、APIを介してカスタムエラーレスポンスを作成します。

基本的なルール設定

APIを介してカスタムエラーレスポンスを作成する際は、次の点に注意してください。

  • ルールアクションをserve_errorに設定します。
  • レスポンスタイプに応じて、action_parametersフィールドにパラメータを定義します。
  • ゾーンレベルでhttp_custom_errorsフェーズにカスタムエラーレスポンスルールをデプロイします。

http_custom_errorsフェーズのルールセット内で最初に一致したルールが適用されます。ルールセット内の他のルールは一致または適用されません。

手順

APIを介して特定のゾーンのカスタムエラーレスポンスルールを作成するためのワークフローは次のとおりです。

  1. List zone rulesets操作を使用して、ゾーンレベルでhttp_custom_errorsフェーズのルールセットがすでに存在するかどうかを確認します。

  2. フェーズルールセットが存在しない場合は、Update a zone entry point ruleset操作を使用して作成します。この操作では、ルールセットが存在しない場合に作成し、ルールセット内のすべてのルールを更新できます。http_custom_errorsフェーズにルールセットを作成します。

    フェーズルールセットがすでに存在する場合は、Update a zone entry point ruleset操作を使用してルールセット内のすべてのルールを置き換えるか、Add rule to ruleset操作を使用して既存のルールにルールを追加します。

API呼び出しの例

このセクションの例では、ルール式に次のフィールドを使用しています。

  • http.response.code: クライアントに返されるHTTPステータスコードを表します。これはCloudflare製品によって設定されるか、オリジンサーバーによって返されます。このフィールドを使用して、オリジンサーバーまたはCloudflare製品(Workerなど)によって返されるエラーコードのエラーレスポンスをカスタマイズします。

  • cf.response.1xxx_code: Cloudflare生成のエラーに対する特定のエラーコードを含みます。このフィールドは、52x1xxxなどのCloudflare生成のエラーにのみ機能します。

すべての5xxエラーに対するカスタムJSONレスポンス

この例では、IDが{zone_id}のゾーン内のすべての5xxエラー(500-599)に対してカスタムJSONエラーレスポンスを設定します。カスタムエラーレスポンスのHTTPステータスコードは530に設定されます。

Terminal window
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フェーズのエントリポイントルールセット内の既存のルールを置き換えます。

更新されたステータスコードを持つカスタムHTMLレスポンス

この例では、500 HTTPステータスコードを持つレスポンスに対してカスタムHTMLエラーレスポンスを設定し、レスポンスステータスコードを503に再定義します。

Terminal window
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レスポンス

この例では、Cloudflareエラー1020(アクセス拒否)に対するカスタムHTMLエラーレスポンスを設定します。

Terminal window
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リクエストで使用されるAPIトークンは、少なくとも次の権限を持っている必要があります。

  • Custom Error Rules > Edit