← Правила Cloudflare / rules / url-forwarding / bulk-redirects
Создайте Bulk Redirects через API
Чтобы создать Bulk Redirects через API, необходимо:
- Создайте Bulk Redirect List через API.
- Добавьте элементы (URL-редиректы) в список, созданный на шаге 1.
- Создайте Bulk Redirect Rule через API, чтобы включить список, созданный на шаге 1.
1. Создайте Bulk Redirect List через API
Используйте Создайте список операцию, чтобы создать новый Bulk Redirect List. Список kind должен быть redirect.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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 документация.
2. Добавление элементов в список
Используйте Создание элементов списка операцию, чтобы добавить элементы перенаправления URL в список. Введите ID списка из предыдущего шага в URL-адресе конечной точки:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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 который вы будете использовать для проверки успешного завершения операции с помощью Получение статуса массовой операции операцию:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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": []
}3. Создание Bulk Redirect Rule через API
Bulk Redirect Lists представляют собой контейнеры для перенаправлений URL, поэтому, чтобы включить перенаправления из списка, нужно создать Bulk Redirect Rule.
Добавьте Bulk Redirect Rules в ruleset точки входа из http_request_redirect фаза на уровне аккаунта. См. Rulesets API документацию, чтобы узнать больше о создание ruleset и указав список правил для набора правил.
Bulk Redirect Rule должно содержать:
actionимеет значениеredirect- Одна
action_parametersобъект с дополнительными настройками конфигурации, см. Объекты JSON API Bulk Redirects для получения подробностей.
Следующий запрос Создайте account ruleset создаёт входной набор правил фазы для http_request_redirect фаза на уровне аккаунта, определяющая одно правило перенаправления. Используйте эту операцию, если вы ещё не создали набор правил точки входа для фазы http_request_redirect фазу ещё не создали.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Если для фазы уже есть entry point ruleset для http_request_redirect фазы используйте Обновление account ruleset операцию, как показано в следующем примере:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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": []
}Необходимые разрешения API-токена
Токен API, используемый в запросах API для управления объектами Bulk Redirects (списками, элементами списков и правилами), должен иметь как минимум следующие разрешения:
- Аккаунт > Bulk URL Redirects > Изменить
- Аккаунт > Account Filter Lists > Изменить
- Mass URL Redirects Write
- Account Rule Lists Write