← Cloudflare Rules / rules / url-forwarding / single-redirects
Vytvořte pravidlo přesměrování přes API
Použijte Rulesets API k vytvoření přesměrovacího pravidla přes API.
Přidejte pravidla přesměrování do vstupní sady pravidel http_request_dynamic_redirect fázi na úrovni zóny. Viz Rulesets API dokumentaci, kde najdete další informace o vytváření sady pravidel a zadáním seznamu pravidel pro sadu pravidel.
Základní nastavení pravidla
Redirect rule musí obsahovat:
actionnastaveno naredirect-
action_parametersobjekt s dalšími konfiguračními nastaveními, viz Nastavení Single Redirects s podrobnostmi.
Příklady požadavků
Následující požadavek Vytvoření rulesetu zóny operace vytvoří vstupní ruleset fáze pro http_request_dynamic_redirect fázi na úrovni zóny a definuje jedno pravidlo přesměrování s dynamickým přesměrováním URL. Tuto operaci použijte, pokud jste ještě nevytvořili vstupní sadu pravidel fáze pro http_request_dynamic_redirect fázi.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Redirect rules ruleset",
"kind": "zone",
"phase": "http_request_dynamic_redirect",
"rules": [
{
"ref": "redirect_gb_fr_to_localized",
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\"",
"description": "Redirect GB and FR users in home page to localized site.",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"expression": "lower(concat(\"https://\", ip.src.country, \".example.com\"))"
},
"status_code": 307,
"preserve_query_string": true
}
}
}
]
}'Odpověď
{
"result": {
"id": "528f4f03bf0da53a29907199625867be",
"name": "Redirect rules ruleset",
"kind": "zone",
"version": "1",
"rules": [
{
"ref": "redirect_gb_fr_to_localized",
"id": "235e557b92fd4e5e8753ee665a9ddd75",
"version": "1",
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\"",
"description": "Redirect GB and FR users in home page to localized site.",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"expression": "lower(concat(\"https://\", ip.src.country, \".example.com\"))"
},
"status_code": 307,
"preserve_query_string": true
}
},
"last_updated": "2022-09-28T09:20:42Z"
}
],
"last_updated": "2022-09-28T09:20:42Z",
"phase": "http_request_dynamic_redirect"
},
"success": true,
"errors": [],
"messages": []
}Použijte ref pole, abyste při použití Terraformu měli stabilní ID pravidel napříč aktualizacemi. Přidání tohoto pole zabrání tomu, aby Terraform při změnách pravidlo vytvářel znovu. Další informace najdete v Řešení potíží v dokumentaci Terraform.
Pokud pro danou fázi již existuje vstupní sada pravidel (entry point ruleset) pro http_request_dynamic_redirect fázi použijte Aktualizace sady pravidel zóny operaci, jako v následujícím příkladu:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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 '{
"name": "Redirect rules ruleset",
"kind": "zone",
"phase": "http_request_dynamic_redirect",
"rules": [
{
"ref": "redirect_gb_fr_to_localized",
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\"",
"description": "Redirect GB and FR users in home page to localized site.",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"expression": "lower(concat(\"https://\", ip.src.country, \".example.com\"))"
},
"status_code": 307,
"preserve_query_string": true
}
}
},
{
"ref": "redirect_contacts_to_new_page",
"expression": "http.request.uri.path eq \"/contacts.html\"",
"description": "Redirect to new contacts page.",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"value": "https://example.com/contact-us/"
},
"status_code": 308
}
}
}
]
}'Odpověď
{
"result": {
"id": "528f4f03bf0da53a29907199625867be",
"name": "Redirect rules ruleset",
"description": "",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "redirect_gb_fr_to_localized",
"id": "235e557b92fd4e5e8753ee665a9ddd75",
"version": "1",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"expression": "lower(concat(\"https://\", ip.src.country, \".example.com\"))"
},
"status_code": 307,
"preserve_query_string": true
}
},
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\"",
"description": "Redirect GB and FR users in home page to localized site.",
"last_updated": "2022-10-03T15:38:51.658387Z",
"ref": "235e557b92fd4e5e8753ee665a9ddd75",
"enabled": true
},
{
"ref": "redirect_contacts_to_new_page",
"id": "cfad5efbfcd1440fb5b30cf30f95ece3",
"version": "1",
"action": "redirect",
"action_parameters": {
"from_value": {
"target_url": {
"value": "https://example.com/contact-us/"
},
"status_code": 308
}
},
"expression": "http.request.uri.path eq \"/contacts.html\"",
"description": "Redirect to new contacts page.",
"last_updated": "2022-10-03T15:38:51.658387Z",
"ref": "cfad5efbfcd1440fb5b30cf30f95ece3",
"enabled": true
}
],
"last_updated": "2022-10-03T15:38:51.658387Z",
"phase": "http_request_dynamic_redirect"
},
"success": true,
"errors": [],
"messages": []
}Požadovaná oprávnění API tokenu
API token použitý v API požadavcích pro správu redirect rules musí mít alespoň následující oprávnění:
- Zóna > Single Redirect > Úprava