← Cloudflare Rules / rules / transform / url-rewrite
Vytvořte pravidlo přepisu URL přes API
Použijte Rulesets API k vytváření pravidel URL Rewrite Rules přes API. Přečtěte si Galerie příkladů pravidel pro běžné případy použití.
Pokud používáte Terraform, přečtěte si Konfigurace Transform Rules pomocí Terraformu.
Základní nastavení pravidla
Při vytváření pravidla pro přepis URL přes API se ujistěte, že:
- Nastavte akci pravidla na
rewrite. - Definujte Parametry přepsání URL v
action_parameterspole podle typu přepsání URL (statické nebo dynamické). - Nasaďte pravidlo do
http_request_transformfázi na úrovni zóny.
Postup
Pravidlo pro přepis URL vytvoříte pro danou zónu přes API podle tohoto postupu:
-
Použijte Seznam sad pravidel zóny operaci pro kontrolu, zda již existuje ruleset pro
http_request_transformfázi na úrovni zóny. -
Pokud fázový ruleset neexistuje, vytvořte jej pomocí Vytvoření rulesetu zóny operace. Ve vlastnostech nového rulesetu nastavte následující hodnoty:
- typ:
zone - fáze:
http_request_transform
- typ:
-
Použijte Aktualizace sady pravidel zóny operaci pro přidání pravidla přepisu URL adresy do seznamu pravidel rulesetu. Případně můžete pravidlo zahrnout do Vytvoření rulesetu zóny požadavek uvedený v předchozím kroku.
Ujistěte se, že váš API token má oprávnění požadovaná oprávnění k provádění operací API.
Příklady požadavků
Příklad: Přidání pravidla, které provede statický přepis URL
Následující příklad nastavuje pravidla existující sady pravidel fáze ($RULESET_ID) do jediného pravidla přepisu adresy URL, které provádí statický přepis cesty URI pomocí Aktualizace sady pravidel zóny operace. Odpověď bude obsahovat úplnou definici aktualizovaného rulesetu.
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 '{
"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": []
}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.
Příklad: Přidání pravidla, které provede dynamický přepis URL
Následující příklad nastavuje pravidla existující sady pravidel fáze ($RULESET_ID) do jediného pravidla přepisu adresy URL, které provádí dynamický přepis cesty URI pomocí Aktualizace sady pravidel zóny operace. Odpověď bude obsahovat úplnou definici aktualizovaného rulesetu.
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 '{
"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": []
}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.
Požadovaná oprávnění API tokenu
API token použitý v API požadavcích pro správu URL Rewrite Rules musí mít alespoň následující oprávnění:
- Účet > Transform Rules > Úprava
- Účet > Account Rulesets > Čtení