66 label : Create rule via API
77---
88
9- import { Details , Render } from " ~/components" ;
9+ import { Details , Render , APIRequest } from " ~/components" ;
1010
1111Use the [ Rulesets API] ( /ruleset-engine/rulesets-api/ ) to create a redirect rule via API.
1212
@@ -28,32 +28,33 @@ A redirect rule must have:
2828
2929The following request of the [ Create a zone ruleset] ( /api/resources/rulesets/methods/create/ ) operation creates a phase entry point ruleset for the ` http_request_dynamic_redirect ` phase at the zone level, and defines a single redirect rule with a dynamic URL redirect. Use this operation if you have not created a phase entry point ruleset for the ` http_request_dynamic_redirect ` phase yet.
3030
31- ``` bash title="Request"
32- curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets \
33- --header " Authorization: Bearer <API_TOKEN>" \
34- --header " Content-Type: application/json" \
35- --data ' {
36- "name": "Redirect rules ruleset",
37- "kind": "zone",
38- "phase": "http_request_dynamic_redirect",
39- "rules": [
40- {
41- "expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\"",
42- "description": "Redirect GB and FR users in home page to localized site.",
43- "action": "redirect",
44- "action_parameters": {
45- "from_value": {
46- "target_url": {
47- "expression": "lower(concat(\"https://\", ip.src.country, \".example.com\"))"
48- },
49- "status_code": 307,
50- "preserve_query_string": true
51- }
52- }
53- }
54- ]
55- }'
56- ```
31+ <APIRequest
32+ path = " /zones/{zone_id}/rulesets"
33+ method = " POST"
34+ json = { {
35+ name: " Redirect rules ruleset" ,
36+ kind: " zone" ,
37+ phase: " http_request_dynamic_redirect" ,
38+ rules: [
39+ {
40+ expression:
41+ ' (ip.src.country eq "GB" or ip.src.country eq "FR") and http.request.uri.path eq "/"' ,
42+ description: " Redirect GB and FR users in home page to localized site." ,
43+ action: " redirect" ,
44+ action_parameters: {
45+ from_value: {
46+ target_url: {
47+ expression:
48+ ' lower(concat("https://", ip.src.country, ".example.com"))' ,
49+ },
50+ status_code: 307 ,
51+ preserve_query_string: true ,
52+ },
53+ },
54+ },
55+ ],
56+ }}
57+ />
5758
5859<Details header = " Response" >
5960
@@ -96,46 +97,46 @@ curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets \
9697
9798If there is already a phase entry point ruleset for the ` http_request_dynamic_redirect ` phase, use the [ Update a zone ruleset] ( /api/resources/rulesets/methods/update/ ) operation instead, like in the following example:
9899
99- ``` bash title="Request"
100- curl --request PUT \
101- https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
102- --header " Authorization: Bearer <API_TOKEN> " \
103- --header " Content-Type: application/json " \
104- --data ' {
105- "name" : "Redirect rules ruleset ",
106- "kind": "zone",
107- "phase": "http_request_dynamic_redirect",
108- "rules": [
109- {
110- "expression" : "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and http.request.uri.path eq \"/\" ",
111- "description" : "Redirect GB and FR users in home page to localized site. ",
112- "action": "redirect",
113- "action_parameters" : {
114- "from_value" : {
115- "target_url": {
116- "expression": " lower(concat(\ "https://\ ", ip.src.country, \ ".example.com\ "))"
117- },
118- " status_code" : 307,
119- " preserve_query_string" : true
120- }
121- }
122- },
123- {
124- " expression": " http.request.uri.path eq \ "/contacts.html\"" ,
125- " description" : "Redirect to new contacts page.",
126- " action" : "redirect",
127- " action_parameters" : {
128- " from_value" : {
129- " target_url" : {
130- " value" : "https://example.com/contact-us/"
131- },
132- " status_code" : 308
133- }
134- }
135- }
136- ]
137- } '
138- ```
100+ < APIRequest
101+ path = " /zones/{zone_id}/rulesets/{ruleset_id} "
102+ method = " PUT "
103+ json = { {
104+ name: " Redirect rules ruleset " ,
105+ kind: " zone " ,
106+ phase : " http_request_dynamic_redirect " ,
107+ rules: [
108+ {
109+ expression:
110+ ' (ip.src.country eq "GB" or ip.src.country eq "FR") and http.request.uri.path eq "/" ' ,
111+ description : " Redirect GB and FR users in home page to localized site. " ,
112+ action : " redirect " ,
113+ action_parameters: {
114+ from_value : {
115+ target_url : {
116+ expression:
117+ ' lower(concat("https://", ip.src.country, ".example.com"))' ,
118+ },
119+ status_code: 307 ,
120+ preserve_query_string: true ,
121+ },
122+ },
123+ },
124+ {
125+ expression: ' http.request.uri.path eq "/contacts.html" ' ,
126+ description: " Redirect to new contacts page." ,
127+ action: " redirect" ,
128+ action_parameters: {
129+ from_value: {
130+ target_url: {
131+ value: " https://example.com/contact-us/" ,
132+ },
133+ status_code: 308 ,
134+ },
135+ },
136+ },
137+ ],
138+ } }
139+ />
139140
140141<Details header = " Response" >
141142
0 commit comments