Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

API で Bulk Redirects を作成する

最終更新 Markdown で表示Agent セットアップ

API で Bulk Redirects を作成するには、次の手順が必要です。

  1. API で Bulk Redirect List を作成する。
  2. 手順 1 で作成したリストに項目(URL リダイレクト)を追加する。
  3. API で Bulk Redirect Rule を作成し、手順 1 で作成したリストを有効にする。

1. API で Bulk Redirect List を作成する

Create a list 操作で、新しい Bulk Redirect List を作成します。リストの kindredirect である必要があります。

Required API token permissions

At least one of the following token permissions is required:
  • Account Filter Lists Edit
Create a listbash
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 のドキュメントを参照してください。

2. リストに項目を追加する

Create list items 操作で、URL リダイレクト項目をリストに追加します。エンドポイント URL には、前の手順のリスト ID を入れます。

Required API token permissions

At least one of the following token permissions is required:
  • Account Filter Lists Edit
Create list itemsbash
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 Edit
  • Account Filter Lists Read
Get bulk operation statusbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists/bulk_operations/92558f8b296d4dbe9d0419e0e53f6622" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

操作が正常に完了すると、レスポンスは次のようになります。

Responsejson
{
	"result": {
		"id": "92558f8b296d4dbe9d0419e0e53f6622",
		"status": "completed",
		"completed": "2021-10-28T09:15:42Z"
	},
	"success": true,
	"errors": [],
	"messages": []
}

3. API で Bulk Redirect Rule を作成する

Bulk Redirect List は URL リダイレクトの入れ物です。リスト内の URL リダイレクトを有効にするには、Bulk Redirect Rule を作成します。

Bulk Redirect Rule は、アカウントレベルの http_request_redirect フェーズの エントリポイントルールセット に追加します。ルールセットの作成とルール一覧の指定は Rulesets APIルールセットの作成 を参照してください。

Bulk Redirect Rule には次が必要です。

  • actionredirect に設定する
  • 追加の設定を持つ 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 Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • Transform Rules Write
  • Select Configuration Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
Create an account rulesetbash
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 Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • Transform Rules Write
  • Select Configuration Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
Update an account rulesetbash
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": []
}

必要な API トークン権限

Bulk Redirects のオブジェクト(リスト、リスト項目、ルール)を管理する API リクエストで使う API トークンには、少なくとも次の 権限 が必要です。

  • Account > Bulk URL Redirects > Edit
  • Account > Account Filter Lists > Edit
  • Mass URL Redirects Write
  • Account Rule Lists Write

役に立ちましたか?