各例のルール式では、次のフィールドを使います。
-
http.response.code(Response Status Code): クライアントへ返す HTTP ステータスコードです。Cloudflare 製品が設定したもの、またはオリジンサーバーが返したものです。オリジンサーバー、または Worker などの Cloudflare 製品が返すエラーコード向けにレスポンスをカスタマイズするときに使います。 -
cf.response.1xxx_code: Cloudflare が生成したエラーの具体的なエラーコードです。このフィールドは、52X や 1XXX など、Cloudflare が生成したエラーにだけ使えます。
この例は、ゾーン内のすべての 5XX エラー(500–599)に対して、カスタム JSON エラーレスポンスを設定します。カスタムエラーレスポンスの HTTP ステータスコードは 530 になります。
Custom Error Rule の設定:
-
Name:
Custom JSON response for all 5XX errors -
If incoming requests match > Custom filter expression:
Field Operator Value Logic Response Status Code greater than or equal to 500And Response Status Code less than or equal to 599Expression Editor を使う場合:
(http.response.code ge 500 and http.response.code le 599) -
Response type: JSON response
-
Response code:
530 -
JSON response:
{"message": "A server error occurred."}
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "json_response_for_5xx_errors",
"action": "serve_error",
"action_parameters": {
"content": "{\"message\": \"A server error occurred.\"}",
"content_type": "application/json",
"status_code": 530
},
"expression": "http.response.code ge 500 and http.response.code lt 600",
"enabled": true
}
]
}'Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
この PUT リクエストは、ゾーンのエントリポイントルールセットを更新する 操作に対応し、http_custom_errors フェーズのエントリポイントルールセット内の既存ルールをすべて置き換えます。
この例は、HTTP ステータスコード 500 のレスポンス向けにカスタム HTML エラーレスポンスを設定し、レスポンスのステータスコードを 503 に差し替えます。
Custom Error Rule の設定:
-
Name:
Custom HTML response for 500 errors -
If incoming requests match > Custom filter expression:
Field Operator Value Response Status Code equal to 500Expression Editor を使う場合:
(http.response.code eq 500) -
Response type: HTML response
-
Response code:
503 -
HTML response:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Application unavailable</title></head><body><h1>Application temporarily unavailable</h1><p>Please try again later.</p></body></html>
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "html_response_500_to_503",
"action": "serve_error",
"action_parameters": {
"content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Application unavailable</title></head><body><h1>Application temporarily unavailable</h1><p>Please try again later.</p></body></html>",
"content_type": "text/html",
"status_code": 503
},
"expression": "http.response.code eq 500",
"enabled": true
}
]
}'Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
この PUT リクエストは、ゾーンのエントリポイントルールセットを更新する 操作に対応し、http_custom_errors フェーズのエントリポイントルールセット内の既存ルールをすべて置き換えます。
この例は、Cloudflare エラー 1020(Access Denied)向けに、カスタム HTML エラーレスポンスを設定します。
Custom Error Rule の設定:
-
Name:
Custom HTML response for 1020 errors -
If incoming requests match > Custom filter expression
Expression Editor を使います:
(cf.response.1xxx_code eq 1020) -
Response type: HTML response
-
HTML response:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Access denied</title></head><body><h1>You do not have access to this page</h1><p>Contact us if you think this is an error.</p></body></html>
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "html_response_cf_1020",
"action": "serve_error",
"action_parameters": {
"content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Access denied</title></head><body><h1>You do not have access to this page</h1><p>Contact us if you think this is an error.</p></body></html>",
"content_type": "text/html"
},
"expression": "cf.response.1xxx_code eq 1020",
"enabled": true
}
]
}'Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
この PUT リクエストは、ゾーンのエントリポイントルールセットを更新する 操作に対応し、http_custom_errors フェーズのエントリポイントルールセット内の既存ルールをすべて置き換えます。
この例は、HTTP ステータスコード 500 のレスポンス向けに、あらかじめ作成した 500_error_template という custom error asset を返す Custom Error Rule を設定します。
Custom Error Rule の設定:
-
Name:
Serve asset for HTTP 500 errors -
If incoming requests match > Custom filter expression:
Field Operator Value Response Status Code equal to 500Expression Editor を使う場合:
(http.response.code eq 500) -
Response type: Custom error asset
-
Asset:
500_error_template
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "serve_error_500_asset",
"action": "serve_error",
"action_parameters": {
"asset_name": "500_error_template",
"content_type": "text/html"
},
"expression": "http.response.code eq 500",
"enabled": true
}
]
}'Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
この PUT リクエストは、ゾーンのエントリポイントルールセットを更新する 操作に対応し、http_custom_errors フェーズのエントリポイントルールセット内の既存ルールをすべて置き換えます。