← Правила Cloudflare / rules / transform / url-rewrite
Создайте правило URL rewrite через API
Используйте Rulesets API для создания URL Rewrite Rules через API. См. Галерея примеров правил типичные случаи использования.
Если вы используете Terraform, см. Настройка Transform Rules с помощью Terraform.
Базовые настройки правила
При создании правила перезаписи URL через API убедитесь, что вы:
- Задайте для действия правила значение
rewrite. - Определите Параметры URL rewrite в
action_parametersполе в соответствии с типом перезаписи URL (статическая или динамическая). - Разверните правило в
http_request_transformфаза на уровне зоны.
Процедура
Чтобы создать правило перезаписи URL для указанной зоны через API, выполните следующие действия:
-
Используйте Список наборов правил зоны операцию, чтобы проверить, существует ли уже набор правил для
http_request_transformфаза на уровне зоны. -
Если набор правил для этой фазы не существует, создайте его с помощью Создание набора правил зоны операцию. В свойствах нового набора правил задайте следующие значения:
- тип:
zone - фаза:
http_request_transform
- тип:
-
Используйте Обновление набора правил зоны операцию, чтобы добавить правило перезаписи URL в список правил набора правил. Либо включите правило в Создание набора правил зоны запрос, упомянутый на предыдущем шаге.
Убедитесь, что ваш API токен имеет необходимые разрешения для выполнения операций API.
Примеры запросов
Пример: добавление правила, выполняющего статическую перезапись URL
Следующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило перезаписи URL со статической перезаписью пути URI, используя Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "rewrite_eu_to_emea",
"expression": "(http.request.uri.query contains \"eu\")",
"description": "My first static URL rewrite rule",
"action": "rewrite",
"action_parameters": {
"uri": {
"path": {
"value": "/emea.html"
}
}
}
}
]
}'{
"result": {
"ref": "rewrite_eu_to_emea",
"id": "<RULESET_ID>",
"name": "Zone-level Transform Ruleset",
"description": "Zone-level ruleset that will execute Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"uri": {
"path": {
"value": "/emea.html"
}
}
},
"expression": "(http.request.uri.query contains \"eu\")",
"description": "My first static URL rewrite rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_request_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: добавление правила, выполняющего динамическую перезапись URL
Следующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило перезаписи URL с динамической перезаписью пути URI, используя Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "rewrite_2012_to_archive",
"expression": "starts_with(http.request.uri.path, \"/news/2012/\")",
"description": "My first dynamic URL rewrite rule",
"action": "rewrite",
"action_parameters": {
"uri": {
"path": {
"expression": "concat(\"/archive\", http.request.uri.path)"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Transform Ruleset",
"description": "Zone-level ruleset that will execute Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "rewrite_2012_to_archive",
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"uri": {
"path": {
"expression": "concat(\"/archive\", http.request.uri.path)"
}
}
},
"expression": "starts_with(http.request.uri.path, \"/news/2012/\")",
"description": "My first dynamic URL rewrite rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_request_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Необходимые разрешения API-токена
Токен API, используемый в запросах API для управления URL Rewrite Rules, должен иметь как минимум следующие разрешения:
- Аккаунт > Transform Rules > Изменить
- Аккаунт > Account Rulesets > Чтение