了解如何使用 Cloudflare API 创建 Bulk Redirects。 要通过 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 Lists 本质上是 URL 重定向的容器,您必须通过创建 Bulk Redirect Rule 来启用列表中的 URL 重定向。
将 Bulk Redirect Rules 添加到账户级别 http_request_redirect 阶段的 入口点规则集。有关 创建规则集 和为规则集提供规则列表的更多信息,请参阅 Rulesets API 文档。
Bulk Redirect Rule 必须具有:
action设为redirect- 包含其他配置设置的
action_parameters对象 — 详情请参阅 Bulk Redirects API JSON 对象。
以下 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 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 时,通过 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 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