API で Bulk Redirects を作成するには、次の手順が必要です。
- API で Bulk Redirect List を作成する。
- 手順 1 で作成したリストに項目(URL リダイレクト)を追加する。
- API で Bulk Redirect Rule を作成し、手順 1 で作成したリストを有効にする。
Create a list 操作で、新しい Bulk Redirect List を作成します。リストの kind は redirect である必要があります。
Required API token permissions
At least one of the following token permissions is required:Account Filter Lists Edit
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "my_redirect_list",
"description": "My redirect list.",
"kind": "redirect"
}'{
"result": {
"id": "f848b6ccb07647749411f504d6f88794",
"name": "my_redirect_list",
"description": "My redirect list.",
"kind": "redirect",
"num_items": 0,
"num_referencing_filters": 0,
"created_on": "2021-10-28T09:11:42Z",
"modified_on": "2021-10-28T09:11:42Z"
},
"success": true,
"errors": [],
"messages": []
}リスト ID を控えてください。次の手順で使います。
リスト操作の詳細は Lists API のドキュメントを参照してください。
Create list items 操作で、URL リダイレクト項目をリストに追加します。エンドポイント URL には、前の手順のリスト ID を入れます。
Required API token permissions
At least one of the following token permissions is required:Account Filter Lists Edit
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists/f848b6ccb07647749411f504d6f88794/items" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '[
{
"redirect": {
"source_url": "example.com/blog/",
"target_url": "https://example.com/blog/latest"
}
},
{
"redirect": {
"source_url": "example.net/",
"target_url": "https://example.net/under-construction.html",
"status_code": 307
}
}
]'{
"result": {
"operation_id": "92558f8b296d4dbe9d0419e0e53f6622"
},
"success": true,
"errors": [],
"messages": []
}これは非同期操作です。レスポンスには operation_id が含まれます。Get bulk operation status 操作で、完了したかどうかを確認します。
Required API token permissions
At least one of the following token permissions is required:Account Filter Lists EditAccount Filter Lists Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists/bulk_operations/92558f8b296d4dbe9d0419e0e53f6622" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"操作が正常に完了すると、レスポンスは次のようになります。
{
"result": {
"id": "92558f8b296d4dbe9d0419e0e53f6622",
"status": "completed",
"completed": "2021-10-28T09:15:42Z"
},
"success": true,
"errors": [],
"messages": []
}Bulk Redirect List は URL リダイレクトの入れ物です。リスト内の URL リダイレクトを有効にするには、Bulk Redirect Rule を作成します。
Bulk Redirect Rule は、アカウントレベルの http_request_redirect フェーズの エントリポイントルールセット に追加します。ルールセットの作成とルール一覧の指定は Rulesets API の ルールセットの作成 を参照してください。
Bulk Redirect Rule には次が必要です。
actionをredirectに設定する- 追加の設定を持つ
action_parametersオブジェクト — 詳細は Bulk Redirects API JSON objects を参照してください。
次の Create an account ruleset 操作のリクエストは、アカウントレベルで http_request_redirect フェーズのフェーズエントリポイントルールセットを作成し、リダイレクトルールを 1 件定義します。http_request_redirect フェーズのフェーズエントリポイントルールセットをまだ作っていない場合に、この操作を使います。
Required API token permissions
At least one of the following token permissions is required:Mass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "My redirect ruleset",
"kind": "root",
"phase": "http_request_redirect",
"rules": [
{
"ref": "enable_my_redirect_list",
"expression": "http.request.full_uri in $my_redirect_list",
"description": "Bulk Redirect rule.",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list",
"key": "http.request.full_uri"
}
}
}
]
}'{
"result": {
"id": "528f4f03bf0da53a29907199625867be",
"name": "My redirect ruleset",
"kind": "root",
"version": "1",
"rules": [
{
"ref": "enable_my_redirect_list",
"id": "8da312df846b4258a05bcd454ea943be",
"version": "1",
"expression": "http.request.full_uri in $my_redirect_list",
"description": "Bulk Redirect rule.",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list",
"key": "http.request.full_uri"
}
},
"last_updated": "2021-10-28T09:20:42Z"
}
],
"last_updated": "2021-10-28T09:20:42Z",
"phase": "http_request_redirect"
},
"success": true,
"errors": [],
"messages": []
}Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
http_request_redirect フェーズのフェーズエントリポイントルールセットがすでに存在する場合は、代わりに Update an account ruleset 操作を使います。次の例を参照してください。
Required API token permissions
At least one of the following token permissions is required:Mass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "My redirect ruleset",
"kind": "root",
"phase": "http_request_redirect",
"rules": [
{
"ref": "eval_redirects_list_1",
"expression": "http.request.full_uri in $my_redirect_list_1",
"description": "Bulk Redirect rule 1",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list_1",
"key": "http.request.full_uri"
}
}
},
{
"ref": "eval_redirects_list_2",
"expression": "http.request.full_uri in $my_redirect_list_2",
"description": "Bulk Redirect rule 2",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list_2",
"key": "http.request.full_uri"
}
}
}
]
}'{
"result": {
"id": "67013aa153df4e5fbda92f92bc979331",
"name": "default",
"description": "",
"kind": "root",
"version": "2",
"rules": [
{
"ref": "eval_redirects_list_1",
"id": "8be62ab2ef9a4a41af30c24ff8e73e41",
"version": "1",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list_1",
"key": "http.request.full_uri"
}
},
"expression": "http.request.full_uri in $my_redirect_list_1",
"description": "Bulk Redirect rule 1",
"last_updated": "2021-12-03T15:38:51.658387Z",
"ref": "8be62ab2ef9a4a41af30c24ff8e73e41",
"enabled": true
},
{
"ref": "eval_redirects_list_2",
"id": "97e38797fb2b4b22a4919800f1318a5c",
"version": "1",
"action": "redirect",
"action_parameters": {
"from_list": {
"name": "my_redirect_list_2",
"key": "http.request.full_uri"
}
},
"expression": "http.request.full_uri in $my_redirect_list_2",
"description": "Bulk Redirect rule 2",
"last_updated": "2021-12-03T15:38:51.658387Z",
"ref": "97e38797fb2b4b22a4919800f1318a5c",
"enabled": true
}
],
"last_updated": "2021-12-03T15:38:51.658387Z",
"phase": "http_request_redirect"
},
"success": true,
"errors": [],
"messages": []
}Bulk Redirects のオブジェクト(リスト、リスト項目、ルール)を管理する API リクエストで使う API トークンには、少なくとも次の 権限 が必要です。
- Account > Bulk URL Redirects > Edit
- Account > Account Filter Lists > Edit
- Mass URL Redirects Write
- Account Rule Lists Write