跳转到内容
搜索文档

通过 API 创建 Bulk Redirects

最后更新 查看 MarkdownAgent 设置

了解如何使用 Cloudflare API 创建 Bulk Redirects。 要通过 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。列表的 kind 必须为 redirect

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 Lists 本质上是 URL 重定向的容器,您必须通过创建 Bulk Redirect Rule 来启用列表中的 URL 重定向。

将 Bulk Redirect Rules 添加到账户级别 http_request_redirect 阶段的 入口点规则集。有关 创建规则集 和为规则集提供规则列表的更多信息,请参阅 Rulesets API 文档。

Bulk Redirect Rule 必须具有:

以下 Create an account ruleset 操作的请求会在账户级别为 http_request_redirect 阶段创建阶段入口点规则集,并定义一条重定向规则。如果您尚未为 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 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 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

这篇文档对您有帮助吗?