Repository: cloudflare/cloudflare-docs
Pull request #21627: [Rules] Add two Origin Rules tutorials
Author: login: pedrosousa
Labels: name: product:rules
description: Related to rules
name: size/l
Created: 2025-04-11T14:54:59Z | Merged: 2025-04-14T15:36:52Z

### Summary

Addresses PCX-13585.
Creates a tutorials section in Origin Rules with two new tutorials.

Additional changes:

* Creates two new examples based on rule templates available in the Cloudflare dashboard.
* Converts one existing example into a tutorial (it involves two different products).


Diff:
diff --git a/public/__redirects b/public/__redirects
index 6be3ec4021ed58f..88b4145e13bf6eb 100644
--- a/public/__redirects
+++ b/public/__redirects
@@ -998,6 +998,7 @@
 /rules/transform/manage/ /rules/transform/ 301
 /rules/page-rules/how-to/rewrite-host-headers/ /rules/origin-rules/examples/change-uri-path-and-host-header/ 301
 /rules/page-rules/how-to/override-url-or-ip-address/ /rules/origin-rules/features/ 301
+/rules/origin-rules/examples/change-uri-path-and-host-header/ /rules/origin-rules/tutorials/change-uri-path-and-host-header/ 301
 
 # ruleset engine
 /ruleset-engine/rules-language/fields/standard-fields/ /ruleset-engine/rules-language/fields/reference/ 301
diff --git a/src/content/docs/rules/origin-rules/create-api.mdx b/src/content/docs/rules/origin-rules/create-api.mdx
index d9dcbe80d5868d9..a3daf0ee6b9cd4c 100644
--- a/src/content/docs/rules/origin-rules/create-api.mdx
+++ b/src/content/docs/rules/origin-rules/create-api.mdx
@@ -33,55 +33,13 @@ Make sure your API token has the [required permissions](#required-api-token-perm
 
 <Details header="Example: Add a rule that overrides the HTTP `Host` header">
 
-The following example sets the rules of an existing phase ruleset (`$RULESET_ID`) to a single origin rule — overriding the HTTP `Host` header — using the [Update a zone ruleset](/api/resources/rulesets/methods/update/) operation. The response will contain the complete definition of the ruleset you updated.
+<Render file="origin-rules-api-change-host-header" />
 
-<APIRequest
-	path="/zones/{zone_id}/rulesets/{ruleset_id}"
-	method="PUT"
-	json={{
-		rules: [
-			{
-				expression: 'http.request.uri.query contains "/eu/"',
-				description: "My first origin rule",
-				action: "route",
-				action_parameters: {
-					host_header: "eu_server.example.net",
-				},
-			},
-		],
-	}}
-/>
+</Details>
 
-```json output
-{
-	"result": {
-		"id": "<RULESET_ID>",
-		"name": "Origin Rules ruleset",
-		"description": "Zone-level ruleset that will execute origin rules.",
-		"kind": "zone",
-		"version": "2",
-		"rules": [
-			{
-				"id": "<RULE_ID>",
-				"version": "1",
-				"action": "route",
-				"action_parameters": {
-					"host_header": "eu_server.example.net"
-				},
-				"expression": "http.request.uri.query contains \"/eu/\"",
-				"description": "My first origin rule",
-				"last_updated": "2022-06-02T14:42:04.219025Z",
-				"ref": "<RULE_REF>"
-			}
-		],
-		"last_updated": "2022-06-02T14:42:04.219025Z",
-		"phase": "http_request_origin"
-	},
-	"success": true,
-	"errors": [],
-	"messages": []
-}
-```
+<Details header="Example: Add a rule that overrides the port of incoming requests">
+
+<Render file="origin-rules-api-change-port" />
 
 </Details>
 
@@ -170,64 +128,6 @@ The following example sets the rules of an existing phase ruleset (`$RULESET_ID`
 
 </Details>
 
-<Details header="Example: Add a rule that overrides the port of incoming requests">
-
-The following example sets the rules of an existing phase ruleset (`$RULESET_ID`) to a single origin rule — overriding the port of incoming requests — using the [Update a zone ruleset](/api/resources/rulesets/methods/update/) operation. The response will contain the complete definition of the ruleset you updated.
-
-<APIRequest
-	path="/zones/{zone_id}/rulesets/{ruleset_id}"
-	method="PUT"
-	json={{
-		rules: [
-			{
-				expression: 'starts_with(http.request.uri.path, "/team/calendar/")',
-				description: "Origin rule for the team calendar application",
-				action: "route",
-				action_parameters: {
-					origin: {
-						port: 9000,
-					},
-				},
-			},
-		],
-	}}
-/>
-
-```json output
-{
-	"result": {
-		"id": "<RULESET_ID>",
-		"name": "Origin Rules ruleset",
-		"description": "Zone-level ruleset that will execute origin rules.",
-		"kind": "zone",
-		"version": "2",
-		"rules": [
-			{
-				"id": "<RULE_ID>",
-				"version": "1",
-				"action": "route",
-				"action_parameters": {
-					"origin": {
-						"port": 9000
-					}
-				},
-				"expression": "starts_with(http.request.uri.path, \"/team/calendar/\")",
-				"description": "Origin rule for the team calendar application",
-				"last_updated": "2022-06-03T14:42:04.219025Z",
-				"ref": "<RULE_REF>"
-			}
-		],
-		"last_updated": "2022-06-03T14:42:04.219025Z",
-		"phase": "http_request_origin"
-	},
-	"success": true,
-	"errors": [],
-	"messages": []
-}
-```
-
-</Details>
-
 ---
 
 ## Required API token permissions
diff --git a/src/content/docs/rules/origin-rules/examples/change-http-host-header.mdx b/src/content/docs/rules/origin-rules/examples/change-http-host-header.mdx
new file mode 100644
index 000000000000000..e554066b92677df
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/examples/change-http-host-header.mdx
@@ -0,0 +1,39 @@
+---
+pcx_content_type: example
+summary: Create an origin rule to change the HTTP `Host` header.
+products:
+  - Origin Rules
+title: Change the HTTP Host header
+description: Create an origin rule to change the HTTP `Host` header.
+---
+
+import { Render, Tabs, TabItem, Example } from "~/components";
+
+The following origin rule overrides the HTTP `Host` header to `eu_server.example.net` for all requests containing `/eu/` in their URI path.
+
+<Tabs syncKey="dashPlusAPI">
+<TabItem label="Dashboard" no-code="true">
+
+<Example>
+
+Text in Expression Editor:
+
+```txt
+http.request.uri.path contains "/eu/"
+```
+
+Value after **Host Header** > **Rewrite to**:
+
+```txt
+eu_server.example.net
+```
+
+</Example>
+
+</TabItem>
+<TabItem label="API" no-code="true">
+
+<Render file="origin-rules-api-change-host-header" />
+
+</TabItem>
+</Tabs>
diff --git a/src/content/docs/rules/origin-rules/examples/change-port.mdx b/src/content/docs/rules/origin-rules/examples/change-port.mdx
new file mode 100644
index 000000000000000..a17777cd65f9cd4
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/examples/change-port.mdx
@@ -0,0 +1,39 @@
+---
+pcx_content_type: example
+summary: Create an origin rule to change the destination port.
+products:
+  - Origin Rules
+title: Change the destination port
+description: Create an origin rule to change the destination port.
+---
+
+import { Render, Tabs, TabItem, Example } from "~/components";
+
+The following origin rule overrides the destination port to `8081` for all requests where the URI path starts with `/team/calendar/`.
+
+<Tabs syncKey="dashPlusAPI">
+<TabItem label="Dashboard" no-code="true">
+
+<Example>
+
+Text in Expression Editor:
+
+```txt
+starts_with(http.request.uri.path, "/team/calendar/")
+```
+
+Value after **Destination Port** > **Rewrite to**:
+
+```txt
+8081
+```
+
+</Example>
+
+</TabItem>
+<TabItem label="API" no-code="true">
+
+<Render file="origin-rules-api-change-port" />
+
+</TabItem>
+</Tabs>
diff --git a/src/content/docs/rules/origin-rules/examples/change-uri-path-and-host-header.mdx b/src/content/docs/rules/origin-rules/examples/change-uri-path-and-host-header.mdx
deleted file mode 100644
index cb06b83d183888a..000000000000000
--- a/src/content/docs/rules/origin-rules/examples/change-uri-path-and-host-header.mdx
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: Change URI Path and Host Header
-pcx_content_type: example
-summary: Modify both the URI path and `Host` header of incoming requests using Transform Rules and Origin Rules.
-description: Learn how to adjust the URI path and `Host` header for incoming requests. This example demonstrates using both Transform Rules and Origin Rules to achieve simultaneous modifications.
-products:
-  - Transform Rules
-  - Origin Rules
----
-
-import { Example } from "~/components";
-
-To change URI Path and Host Header on incoming requests simultaneously:
-
-1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/) and select your account and domain.
-2. Create a URL rewrite:
-   - Go to **Rules** > **Overview**.
-   - Select **Create rule** > **URL Rewrite Rule**.
-   - Configure the rule to modify the path. For instance, to remove `/uploads` from the path:
-
-<Example>
-
-Text in **Expression Editor**:
-
-```txt
-raw.http.request.uri.path matches "^/uploads/.*"
-```
-
-Text after **Path** > **Rewrite to** > _Dynamic_:
-
-```txt
-regex_replace(raw.http.request.uri.path, "^/uploads/", "/")
-```
-
-</Example>
-
-The `regex_replace()` [function](/ruleset-engine/rules-language/functions/#regex_replace) replaces the `/uploads/` part of the path with `/`, changing `/uploads/example.jpg` to `/example.jpg`.
-
-3. Create an **Origin Rule**:
-   - If routing traffic to an object storage bucket, use [Cloud Connector](/rules/cloud-connector/). Otherwise, go to **Rules** > **Overview**.
-   - Select **Create rule** > **Origin Rule**, and then select **Host Header** > **Rewrite to**.
-   - Configure the rule to modify the Host header to desired hostname:
-
-<Example>
-
-Text in **Expression Editor**:
-
-```txt
-raw.http.request.uri.path matches "^/uploads/.*"
-```
-
-Text after **Host Header** > **Rewrite to**:
-
-```txt
-example.com
-```
-
-This will set [the Host header](/rules/origin-rules/features/#host-header) to `example.com` for matching requests.
-
-**Optional:**
-To route requests to a different origin (DNS target), use [DNS override](/rules/origin-rules/features/#dns-record):
-
-Text after **DNS Record** > **Override to**:
-
-```txt
-example.com
-```
-
-This will route requests to the DNS target of `example.com` instead of your default [DNS record](/dns/manage-dns-records/how-to/create-dns-records/).
-
-</Example>
-
-This setup routes traffic from `https://<YOUR_SOURCE_HOSTNAME>/uploads/*` to `https://<YOUR_TARGET_HOSTNAME>/*`. Ensure the filters for [Transform Rules](/rules/transform/) and [Origin Rules](/rules/origin-rules/) (or [Cloud Connector](/rules/cloud-connector/)) are precise to avoid unintended rule executions.
-
-Remember that rules are evaluated [in sequence](/ruleset-engine/reference/phases-list/), so Transform Rules run before Origin Rules or Cloud Connector.
-
-Make sure to replace `example.com` with your actual hostname and adjust the example paths according to your setup. By following these steps, you can effectively manage both URI paths and Host headers to route traffic appropriately and optimize request handling.
diff --git a/src/content/docs/rules/origin-rules/examples/index.mdx b/src/content/docs/rules/origin-rules/examples/index.mdx
index da52f89e3aab3d6..8e0d6abfb026aa5 100644
--- a/src/content/docs/rules/origin-rules/examples/index.mdx
+++ b/src/content/docs/rules/origin-rules/examples/index.mdx
@@ -3,7 +3,7 @@ type: overview
 pcx_content_type: navigation
 title: Examples
 sidebar:
-  order: 10
+  order: 5
 ---
 
 import { ListExamples } from "~/components";
diff --git a/src/content/docs/rules/origin-rules/faq.mdx b/src/content/docs/rules/origin-rules/faq.mdx
index 4c678df7cf6343e..51ce17a54253a0d 100644
--- a/src/content/docs/rules/origin-rules/faq.mdx
+++ b/src/content/docs/rules/origin-rules/faq.mdx
@@ -3,14 +3,13 @@ title: FAQ
 pcx_content_type: faq
 structured_data: true
 sidebar:
-  order: 11
+  order: 10
 head:
   - tag: title
     content: FAQ — Origin Rules
-
 ---
 
-import { Details, Example } from "~/components"
+import { Details, Example } from "~/components";
 
 Below you will find answers to the most commonly asked questions regarding Origin Rules.
 
@@ -20,17 +19,14 @@ In this situation the origin rule parameters will override the [page rule](/rule
 
 Consider the following example scenarios:
 
-* A page rule defines a Host header override, but not a resolve override (or DNS record override). An origin rule defines a DNS record override, but not a Host header override. The resulting request will have the `Host` header defined by the page rule and the origin hostname defined by the origin rule.
-* A page rule defines a Host header override, and an origin rule also defines a Host header override. The resulting request will have the `Host` header defined by the origin rule.
-
-## ​​Will Cloudflare automatically migrate my Page Rules with Host header and DNS record overrides to origin rules?
+- A page rule defines a Host header override, but not a resolve override (or DNS record override). An origin rule defines a DNS record override, but not a Host header override. The resulting request will have the `Host` header defined by the page rule and the origin hostname defined by the origin rule.
+- A page rule defines a Host header override, and an origin rule also defines a Host header override. The resulting request will have the `Host` header defined by the origin rule.
 
+## Will Cloudflare automatically migrate my Page Rules with Host header and DNS record overrides to origin rules?
 
 Yes. Refer to the [Page Rules migration guide](/rules/reference/page-rules-migration/) for any updates on the migration process.
 
-
-## ​​What happens if more than one origin rule matches the current request?
-
+## What happens if more than one origin rule matches the current request?
 
 If two or more origin rules match a request, the configuration of those rules is merged. While merging two configurations, the settings of later rules will override the settings defined in previous rules, updating or adding configuration properties. The final configuration applied by Cloudflare will be this merged version.
 
@@ -58,41 +54,39 @@ For example, if you configure the following two [origin rules](/rules/origin-rul
 
 </Example>
 
-
 <Details header="JSON example for API users">
 
 When [using the API](/rules/origin-rules/create-api/), you configure origin rule parameters in an `action_parameters` object.
 
 ```json
 {
-  "rules": [
-    {
-      "expression": "http.request.uri.query contains \"/eu/\"",
-      "description": "Origin rule #1",
-      "action": "route",
-      "action_parameters": {
-        "host_header": "example.com",
-        "origin": {
-          "port": 8081
-        }
-      }
-    },
-    {
-      "expression": "http.request.uri.query contains \"/eu/\"",
-      "description": "Origin rule #2",
-      "action": "route",
-      "action_parameters": {
-        "host_header": "example.net",
-        "origin": {
-          "host": "example.net",
-        }
-      }
-    }
-  ]
+	"rules": [
+		{
+			"expression": "http.request.uri.query contains \"/eu/\"",
+			"description": "Origin rule #1",
+			"action": "route",
+			"action_parameters": {
+				"host_header": "example.com",
+				"origin": {
+					"port": 8081
+				}
+			}
+		},
+		{
+			"expression": "http.request.uri.query contains \"/eu/\"",
+			"description": "Origin rule #2",
+			"action": "route",
+			"action_parameters": {
+				"host_header": "example.net",
+				"origin": {
+					"host": "example.net"
+				}
+			}
+		}
+	]
 }
 ```
 
-
 </Details>
 
 The merged configuration to apply would be the following:
@@ -104,5 +98,3 @@ The merged configuration to apply would be the following:
 | Set DNS hostname     | `example.net` |
 
 If you also configured a destination port in rule #2, that value would override the `8081` destination port defined in rule #1.
-
-
diff --git a/src/content/docs/rules/origin-rules/features.mdx b/src/content/docs/rules/origin-rules/features.mdx
index f9388acea65ede8..5b9fe3380787358 100644
--- a/src/content/docs/rules/origin-rules/features.mdx
+++ b/src/content/docs/rules/origin-rules/features.mdx
@@ -2,14 +2,13 @@
 title: Available settings
 pcx_content_type: concept
 sidebar:
-  order: 5
+  order: 8
 head:
   - tag: title
     content: Available Origin Rules settings
-
 ---
 
-import { Example } from "~/components"
+import { Example } from "~/components";
 
 The following sections describe the available settings in Origin Rules.
 
@@ -21,11 +20,9 @@ A common use case for this functionality is when your content is hosted on a thi
 
 :::note[Notes]
 
+- An origin rule performing a Host header override will also update the Server Name Indication (SNI) value of the original request to the same value. To set an SNI value different from the Host header value, add an [SNI override](#server-name-indication-sni) in the same origin rule or create a separate origin rule for this purpose.
 
-* An origin rule performing a Host header override will also update the Server Name Indication (SNI) value of the original request to the same value. To set an SNI value different from the Host header value, add an [SNI override](#server-name-indication-sni) in the same origin rule or create a separate origin rule for this purpose.
-
-* If you have configured load balancing through Cloudflare and you wish to override the HTTP `Host` header per origin or for a given monitor, refer to [Override HTTP Host headers](/load-balancing/additional-options/override-http-host-headers/) in the Load Balancing documentation for more information.
-
+- If you have configured load balancing through Cloudflare and you wish to override the HTTP `Host` header per origin or for a given monitor, refer to [Override HTTP Host headers](/load-balancing/additional-options/override-http-host-headers/) in the Load Balancing documentation for more information.
 
 :::
 
@@ -37,10 +34,10 @@ The new SNI value must be a valid hostname on the same Cloudflare account (possi
 
 :::note[Notes]
 
+- Currently, you can only use a static value when overriding SNI.
+- An SNI override will take precedence over [SNI rewrites of custom origins](/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/custom-origin/#sni-rewrites) when using Cloudflare for SaaS.
 
-* Currently, you can only use a static value when overriding SNI.
-* An SNI override will take precedence over [SNI rewrites of custom origins](/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/custom-origin/#sni-rewrites) when using Cloudflare for SaaS.
-  :::
+:::
 
 [^1]: SNI allows a server to host multiple TLS Certificates for multiple websites using a single IP address. SNI adds the website hostname in the TLS handshake to inform the server which website to present when using shared IPs.
 
@@ -60,11 +57,11 @@ The following example DNS records configure a `resolve.example.com` hostname poi
 
 **Example `CNAME` record**
 
-* **Type:** *CNAME*
-* **Name:** `resolve.example.com`
-* **Target:** `domain.s3.amazonaws.com`
-* **TTL:** `Auto`
-* **Proxy status:** *Proxied* (orange cloud icon)
+- **Type:** _CNAME_
+- **Name:** `resolve.example.com`
+- **Target:** `domain.s3.amazonaws.com`
+- **TTL:** `Auto`
+- **Proxy status:** _Proxied_ (orange cloud icon)
 
 </Example>
 
@@ -72,11 +69,11 @@ The following example DNS records configure a `resolve.example.com` hostname poi
 
 **Example `A` record**
 
-* **Type:** *A*
-* **Name:** `resolve.example.com`
-* **IPv4 address:** `203.0.113.1`
-* **TTL:** `Auto`
-* **Proxy status:** *Proxied* (orange cloud icon)
+- **Type:** _A_
+- **Name:** `resolve.example.com`
+- **IPv4 address:** `203.0.113.1`
+- **TTL:** `Auto`
+- **Proxy status:** _Proxied_ (orange cloud icon)
 
 </Example>
 
diff --git a/src/content/docs/rules/origin-rules/parameters.mdx b/src/content/docs/rules/origin-rules/parameters.mdx
index 09a0713ec0706af..e2406b15bbb1982 100644
--- a/src/content/docs/rules/origin-rules/parameters.mdx
+++ b/src/content/docs/rules/origin-rules/parameters.mdx
@@ -2,11 +2,10 @@
 title: API parameter reference
 pcx_content_type: reference
 sidebar:
-  order: 6
+  order: 9
 head:
   - tag: title
     content: Origin Rules API parameter reference
-
 ---
 
 Create [different overrides](/rules/origin-rules/features/) by including different action parameters in the `action_parameters` field:
diff --git a/src/content/docs/rules/origin-rules/tutorials/change-uri-path-and-host-header.mdx b/src/content/docs/rules/origin-rules/tutorials/change-uri-path-and-host-header.mdx
new file mode 100644
index 000000000000000..07961cfe90e10b0
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/tutorials/change-uri-path-and-host-header.mdx
@@ -0,0 +1,120 @@
+---
+updated: 2025-02-26
+difficulty: Beginner
+pcx_content_type: tutorial
+title: Change URI path and Host header
+products:
+  - Transform Rules
+  - Origin Rules
+---
+
+import { Example } from "~/components";
+
+This guide will instruct you how to modify both the URI path and the `Host` header of incoming requests using [Transform Rules](/rules/transform/) and Origin Rules.
+
+Your website visitors will be routed from `https://<YOUR_SOURCE_HOSTNAME>/uploads/*` to `https://<YOUR_TARGET_HOSTNAME>/*`.
+
+In this tutorial you will do the following:
+
+1. Create a URL rewrite to remove `/uploads` from the path.
+2. Create an origin rule to modify the `Host` header to desired hostname.
+
+By following these steps, you can effectively manage both URI paths and `Host` headers to route traffic appropriately and optimize request handling.
+
+## 1. Create a URL rewrite
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain.
+2. Go to **Rules** > **Overview**.
+3. Select **Create rule** > **URL Rewrite Rule**.
+4. Enter a descriptive name for the rule in **Rule name**.
+5. Under **If incoming requests match**, select **Custom filter expression**, select **Edit expression**, and enter the following expression:
+
+   <Example>
+
+   Text in **Expression Editor**:
+
+   ```txt
+   raw.http.request.uri.path matches "^/uploads/.*"
+   ```
+
+   </Example>
+
+6. Under **Set Rewrite parameters**, select **Path** > **Rewrite to**, and select _Dynamic_.
+
+7. Define the action for your rewrite URL rule:
+
+   <Example>
+
+   Text after **Path** > **Rewrite to** > _Dynamic_:
+
+   ```txt
+   regex_replace(raw.http.request.uri.path, "^/uploads/", "/")
+   ```
+
+   </Example>
+
+   The [`regex_replace()`](/ruleset-engine/rules-language/functions/#regex_replace) function replaces the `/uploads/` part of the path with `/`, changing `/uploads/example.jpg` to `/example.jpg`.
+
+8. Select **Deploy**.
+
+## 2. Create an origin rule
+
+:::note
+If you are routing traffic to an object storage bucket, use [Cloud Connector](/rules/cloud-connector/) instead of an origin rule.
+:::
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account and domain.
+2. Go to **Rules** > **Overview**.
+3. Select **Create rule** > **Origin Rule**.
+4. Enter a descriptive name for the rule in **Rule name**.
+5. Under **When incoming requests match**, define the rule expression:
+
+   <Example>
+
+   Text in **Expression Editor**:
+
+   ```txt
+   raw.http.request.uri.path matches "^/uploads/.*"
+   ```
+
+   </Example>
+
+6. Under **Set origin parameters**, select **Host Header** > **Rewrite to**.
+
+7. Configure the rule to modify the `Host` header to desired hostname:
+
+   <Example>
+
+   Text after **Host Header** > **Rewrite to**:
+
+   ```txt
+   example.com
+   ```
+
+   </Example>
+
+   This will set the [`Host` header](/rules/origin-rules/features/#host-header) to `example.com` for matching requests. Make sure to replace `example.com` with your actual hostname.
+
+8. (Optional) To route requests to a different origin (DNS target), use [DNS override](/rules/origin-rules/features/#dns-record):
+
+   <Example>
+
+   Text after **DNS Record** > **Override to**:
+
+   ```txt
+   example.com
+   ```
+
+   </Example>
+
+   This will route requests to the DNS target of `example.com` instead of your default [DNS record](/dns/manage-dns-records/how-to/create-dns-records/).
+
+9. Select **Deploy**.
+
+## Final remarks
+
+After completing this setup, incoming traffic for `https://<YOUR_SOURCE_HOSTNAME>/uploads/*` will be routed to `https://<YOUR_TARGET_HOSTNAME>/*`.
+
+Ensure the filters for the [URL rewrite](/rules/transform/url-rewrite/) and the [origin rule](/rules/origin-rules/) (or [Cloud Connector](/rules/cloud-connector/) rule) are precise to avoid unintended rule executions.
+
+Remember that rules are evaluated [in sequence](/ruleset-engine/reference/phases-list/), so Transform Rules (including URL rewrites) run before Origin Rules or Cloud Connector.
diff --git a/src/content/docs/rules/origin-rules/tutorials/index.mdx b/src/content/docs/rules/origin-rules/tutorials/index.mdx
new file mode 100644
index 000000000000000..acb6e6b360a8477
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/tutorials/index.mdx
@@ -0,0 +1,11 @@
+---
+type: overview
+pcx_content_type: navigation
+title: Tutorials
+sidebar:
+  order: 6
+---
+
+import { ListTutorials } from "~/components";
+
+<ListTutorials directory="rules/origin-rules/tutorials/" />
diff --git a/src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx b/src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx
new file mode 100644
index 000000000000000..51bcb4248899dfa
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx
@@ -0,0 +1,97 @@
+---
+updated: 2025-04-12
+difficulty: Beginner
+pcx_content_type: tutorial
+title: Point to Pages with a custom domain
+products:
+  - Pages
+  - Origin Rules
+---
+
+import { Example } from "~/components";
+
+This example configures an origin rule and a DNS record to point to a Pages deployment with a custom domain.
+
+The procedure will use the following example values:
+
+|                                       |                                |
+| ------------------------------------: | ------------------------------ |
+| URL that website visitors will access | `mycustomerexample.com/blog/*` |
+|                           Zone domain | `mycustomerexample.com`        |
+|            Cloudflare Pages subdomain | `myblog.pages.dev`             |
+|        Cloudflare Pages custom domain | `blogmirror.example.com`       |
+
+When configuring your Pages custom domain, use a custom domain that you do not plan to use in production (`blogmirror.example.com` in this example).
+
+## 1. Configure custom domain in your Pages project
+
+To add the custom domain to your Pages deployment:
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account.
+2. Go to **Workers & Pages**. and select your Pages project.
+3. Go to **Custom domains**.
+4. Select **Set up a custom domain**.
+5. Enter `blogmirror.example.com` and select **Continue**.
+
+When you add the custom domain to your Pages deployment, Cloudflare automatically creates a `CNAME` DNS record for the custom domain.
+
+## 2. Create origin rule to rewrite host header and override DNS record
+
+In your `mycustomerexample.com` zone, create an origin rule with the following configuration:
+
+<Example>
+
+**If incoming requests match**
+
+| Field    | Operator | Value     |
+| -------- | -------- | --------- |
+| URI Path | wildcard | `/blog/*` |
+
+If using the Expression Editor, enter the following expression:
+
+```txt
+(http.request.uri.path wildcard "/blog/*")
+```
+
+**Set origin parameters**
+
+- Value after **Host header** > **Rewrite to**: `blogmirror.example.com`
+- Value after **DNS record** > **Override to**: `blogmirror.example.com`
+
+</Example>
+
+## 3. (Optional) Configure URL rewrite
+
+In this example, the URL that website visitors will access starts with `/blog`. However, the Pages deployment does not have this initial URL segment.
+
+Use a URL rewrite to remove the `/blog` segment from the URL path.
+
+1. Go to **Rules** > **Overview**.
+2. Select **Create rule** > **URL Rewrite Rule**.
+3. Enter a descriptive name for the rule in **Rule name**.
+4. In **If incoming requests match**, select **Wildcard pattern**.
+5. Enter the following value in **Request URL**:
+
+   ```txt
+   https://<YOUR_HOSTNAME>/blog/*
+   ```
+
+   In the current example, the value would be `https://mycustomerexample.com/blog/*`.
+
+6. In **Then rewrite the path and/or query**, enter the following values under **Path**:
+
+   | Target path | Rewrite to |
+   | ----------- | ---------- |
+   | `blog/*`    | `${1}`     |
+
+7. Select **Deploy**.
+
+:::note
+Cloudflare provides a rule template in the dashboard called **Rewrite Path for Object Storage Bucket** that you can use and adapt to configure the URL rewrite rule.
+:::
+
+## More resources
+
+- [Tutorial: Change URI Path and Host Header](/rules/origin-rules/tutorials/change-uri-path-and-host-header/)
+- [Cloudflare Pages: Custom domains](/pages/configuration/custom-domains/)
+- [DNS records](/dns/manage-dns-records/)
diff --git a/src/content/docs/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain.mdx b/src/content/docs/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain.mdx
new file mode 100644
index 000000000000000..876785db392a503
--- /dev/null
+++ b/src/content/docs/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain.mdx
@@ -0,0 +1,100 @@
+---
+updated: 2025-04-12
+difficulty: Beginner
+pcx_content_type: tutorial
+title: Point to R2 bucket with a custom domain
+products:
+  - R2
+  - Origin Rules
+---
+
+import { Example } from "~/components";
+
+This example configures an origin rule and a DNS record to point to an R2 bucket configured with a custom domain.
+
+The procedure will use the following example values:
+
+|                                       |                                  |
+| ------------------------------------: | -------------------------------- |
+| URL that website visitors will access | `mycustomerexample.com/images/*` |
+|               R2 bucket custom domain | `imagesbucket.example.com`       |
+
+When configuring your R2 bucket's custom domain, use a custom domain that you do not plan to use in production (`imagesbucket.example.com` in this example).
+
+## 1. Configure custom domain in your Pages project
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/) and select your account.
+2. Go to **R2 Object Storage** and select your bucket.
+3. On the bucket page, select **Settings**.
+4. Under **Public access** > **Custom Domains**, select **Connect Domain**.
+5. Enter the domain name you want to connect to — `imagesbucket.example.com` in this example — and select **Continue**.
+6. Review the new record that will be added to the DNS table and select **Connect Domain**.
+
+Your domain is now connected. The status takes a few minutes to change from **Initializing** to **Active**, and you may need to refresh to review the status update. If the status has not changed, select the **...** next to your bucket and select **Retry connection**.
+
+To view the added DNS record, select **...** next to the connected domain and select **Manage DNS**.
+
+:::note
+The domain used must belong to the same account as the R2 bucket.
+:::
+
+## 2. Create origin rule to rewrite host header and override DNS record
+
+In your `mycustomerexample.com` zone, create an origin rule with the following configuration:
+
+<Example>
+
+**If incoming requests match**
+
+| Field    | Operator | Value       |
+| -------- | -------- | ----------- |
+| URI Path | wildcard | `/images/*` |
+
+If using the Expression Editor, enter the following expression:
+
+```txt
+(http.request.uri.path wildcard "/images/*")
+```
+
+**Set origin parameters**
+
+- Value after **Host header** > **Rewrite to**: `imagesbucket.example.com`
+- Value after **DNS record** > **Override to**: `imagesbucket.example.com`
+
+</Example>
+
+## 3. (Optional) Configure URL rewrite
+
+In our example, the URL that website visitors will access starts with `/images`. However, images stored in the example R2 bucket do not have this initial URL segment.
+
+Use a URL rewrite to remove the `/images` segment from the URL path. Cloudflare provides a rule template in the dashboard called **Rewrite Path for Object Storage Bucket** that you can use to configure the required rewrite.
+
+1. Go to **Rules** > **Overview**.
+2. Select **Create rule** > **URL Rewrite Rule**.
+3. Enter a descriptive name for the rule in **Rule name**.
+4. In **If incoming requests match**, select **Wildcard pattern**.
+5. Enter the following value in **Request URL**:
+
+   ```txt
+   https://<YOUR_HOSTNAME>/images/*
+   ```
+
+   In the current example, the value would be `https://mycustomerexample.com/images/*`.
+
+6. In **Then rewrite the path and/or query**, enter the following values under **Path**:
+
+   | Target path | Rewrite to |
+   | ----------- | ---------- |
+   | `images/*`  | `${1}`     |
+
+7. Select **Deploy**.
+
+:::note
+Cloudflare provides a rule template in the dashboard called **Rewrite Path for Object Storage Bucket** that you can use and adapt to configure the URL rewrite rule.
+:::
+
+## More resources
+
+- [Tutorial: Change URI Path and Host Header](/rules/origin-rules/tutorials/change-uri-path-and-host-header/)
+- [Cloudflare R2: Public buckets](/r2/buckets/public-buckets/)
+- [DNS records](/dns/manage-dns-records/)
diff --git a/src/content/partials/rules/origin-rules-api-change-host-header.mdx b/src/content/partials/rules/origin-rules-api-change-host-header.mdx
new file mode 100644
index 000000000000000..35a64a7c2948fc0
--- /dev/null
+++ b/src/content/partials/rules/origin-rules-api-change-host-header.mdx
@@ -0,0 +1,55 @@
+---
+{}
+---
+
+import { APIRequest } from "~/components";
+
+The following example sets the rules of an existing phase ruleset (`$RULESET_ID`) to a single origin rule — overriding the HTTP `Host` header — using the [Update a zone ruleset](/api/resources/rulesets/methods/update/) operation. The response will contain the complete definition of the ruleset you updated.
+
+<APIRequest
+	path="/zones/{zone_id}/rulesets/{ruleset_id}"
+	method="PUT"
+	json={{
+		rules: [
+			{
+				expression: 'http.request.uri.path contains "/eu/"',
+				description: "My first origin rule",
+				action: "route",
+				action_parameters: {
+					host_header: "eu_server.example.net",
+				},
+			},
+		],
+	}}
+/>
+
+```json output
+{
+	"result": {
+		"id": "<RULESET_ID>",
+		"name": "Origin Rules ruleset",
+		"description": "Zone-level ruleset that will execute origin rules.",
+		"kind": "zone",
+		"version": "2",
+		"rules": [
+			{
+				"id": "<RULE_ID>",
+				"version": "1",
+				"action": "route",
+				"action_parameters": {
+					"host_header": "eu_server.example.net"
+				},
+				"expression": "http.request.uri.path contains \"/eu/\"",
+				"description": "My first origin rule",
+				"last_updated": "2022-06-02T14:42:04.219025Z",
+				"ref": "<RULE_REF>"
+			}
+		],
+		"last_updated": "2022-06-02T14:42:04.219025Z",
+		"phase": "http_request_origin"
+	},
+	"success": true,
+	"errors": [],
+	"messages": []
+}
+```
diff --git a/src/content/partials/rules/origin-rules-api-change-port.mdx b/src/content/partials/rules/origin-rules-api-change-port.mdx
new file mode 100644
index 000000000000000..1ac1b902d9854fa
--- /dev/null
+++ b/src/content/partials/rules/origin-rules-api-change-port.mdx
@@ -0,0 +1,59 @@
+---
+{}
+---
+
+import { APIRequest } from "~/components";
+
+The following example sets the rules of an existing phase ruleset (`$RULESET_ID`) to a single origin rule — overriding the port of incoming requests — using the [Update a zone ruleset](/api/resources/rulesets/methods/update/) operation. The response will contain the complete definition of the ruleset you updated.
+
+<APIRequest
+	path="/zones/{zone_id}/rulesets/{ruleset_id}"
+	method="PUT"
+	json={{
+		rules: [
+			{
+				expression: 'starts_with(http.request.uri.path, "/team/calendar/")',
+				description: "Origin rule for the team calendar application",
+				action: "route",
+				action_parameters: {
+					origin: {
+						port: 8081,
+					},
+				},
+			},
+		],
+	}}
+/>
+
+```json output
+{
+	"result": {
+		"id": "<RULESET_ID>",
+		"name": "Origin Rules ruleset",
+		"description": "Zone-level ruleset that will execute origin rules.",
+		"kind": "zone",
+		"version": "2",
+		"rules": [
+			{
+				"id": "<RULE_ID>",
+				"version": "1",
+				"action": "route",
+				"action_parameters": {
+					"origin": {
+						"port": 8081
+					}
+				},
+				"expression": "starts_with(http.request.uri.path, \"/team/calendar/\")",
+				"description": "Origin rule for the team calendar application",
+				"last_updated": "2022-06-03T14:42:04.219025Z",
+				"ref": "<RULE_REF>"
+			}
+		],
+		"last_updated": "2022-06-03T14:42:04.219025Z",
+		"phase": "http_request_origin"
+	},
+	"success": true,
+	"errors": [],
+	"messages": []
+}
+```


Reviews:
user: login: pedrosousa
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T11:30:20Z
user: login: nikitacano
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T12:27:43Z
user: login: Oxyjun
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:34:43Z
user: login: Oxyjun
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:36:51Z
user: login: pedrosousa
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T16:34:06Z

Review comments:
diff_hunk: @@ -0,0 +1,120 @@
+---
+updated: 2025-02-26
path: src/content/docs/rules/origin-rules/tutorials/change-uri-path-and-host-header.mdx
user: login: pedrosousa
body: Converted the example into a tutorial, so using the date from the last change to the example.
created_at: 2025-04-14T11:30:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,97 @@
+---
+updated: 2025-04-12
+difficulty: Beginner
+pcx_content_type: tutorial
+title: Point to Pages with a custom domain
+products:
+  - Pages
+  - Origin Rules
+---
+
+import { Example } from "~/components";
+
+This example configures an origin rule and a DNS record to point to a Pages deployment with a custom domain.
+
+The procedure will use the following example values:
+
+|                                       |                                |
+| ------------------------------------: | ------------------------------ |
+| URL that website visitors will access | `mycustomerexample.com/blog/*` |
+|                           Zone domain | `mycustomerexample.com`        |
+|            Cloudflare Pages subdomain | `myblog.pages.dev`             |
+|        Cloudflare Pages custom domain | `blogmirror.example.com`       |
+
+When configuring your Pages custom domain, use a custom domain that you do not plan to use in production (`blogmirror.example.com` in this example).
+
+## 1. Configure custom domain in your Pages project
+
+To add the custom domain to your Pages deployment:
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account.
+2. Go to **Workers & Pages**. and select your Pages project.
path: src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx
user: login: Oxyjun
body: ```suggestion
2. Go to **Workers & Pages** and select your Pages project.
```
created_at: 2025-04-14T15:34:42Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,97 @@
+---
+updated: 2025-04-12
+difficulty: Beginner
+pcx_content_type: tutorial
+title: Point to Pages with a custom domain
+products:
+  - Pages
+  - Origin Rules
+---
+
+import { Example } from "~/components";
+
+This example configures an origin rule and a DNS record to point to a Pages deployment with a custom domain.
+
+The procedure will use the following example values:
+
+|                                       |                                |
+| ------------------------------------: | ------------------------------ |
+| URL that website visitors will access | `mycustomerexample.com/blog/*` |
+|                           Zone domain | `mycustomerexample.com`        |
+|            Cloudflare Pages subdomain | `myblog.pages.dev`             |
+|        Cloudflare Pages custom domain | `blogmirror.example.com`       |
+
+When configuring your Pages custom domain, use a custom domain that you do not plan to use in production (`blogmirror.example.com` in this example).
+
+## 1. Configure custom domain in your Pages project
+
+To add the custom domain to your Pages deployment:
+
+1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com) and select your account.
+2. Go to **Workers & Pages**. and select your Pages project.
path: src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx
user: login: pedrosousa
body: This suggestion was addressed in #21675.

created_at: 2025-04-14T16:34:06Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-04-11T14:55:30Z
body: This PR changes current filenames or deletes current files. Make sure you have [redirects](https://developers.cloudflare.com/pages/configuration/redirects/) set up to cover the following paths:
  - [ ] `/rules/origin-rules/examples/change-uri-path-and-host-header/`
author_association: CONTRIBUTOR
user: login: hyperlint-ai-deprecated[bot]
created_at: 2025-04-11T14:56:01Z
body: Howdy and thanks for contributing to our repo. The Cloudflare team reviews new, external PRs within **two (2) weeks**. If it's been two weeks or longer without any movement, please tag the PR **Assignees** in a comment.

We review internal PRs within **1 week**. If it's something urgent or has been sitting without a comment, start a thread in the *Developer Docs* space internally.

---

## PR Change Summary

Updated origin rules documentation to enhance clarity and usability, including new examples and tutorials.
- Modified existing documentation to include examples for changing HTTP Host header and destination port.
- Added new tutorials for changing URI paths and Host headers, and for pointing to custom domains.
- Updated FAQ and features sections to reflect recent changes and improvements.


**Modified Files**

- `src/content/docs/rules/origin-rules/create-api.mdx`
- `src/content/docs/rules/origin-rules/examples/index.mdx`
- `src/content/docs/rules/origin-rules/faq.mdx`
- `src/content/docs/rules/origin-rules/features.mdx`
- `src/content/docs/rules/origin-rules/parameters.mdx`



**Added Files**

- `src/content/docs/rules/origin-rules/examples/change-http-host-header.mdx`
- `src/content/docs/rules/origin-rules/examples/change-port.mdx`
- `src/content/docs/rules/origin-rules/tutorials/change-uri-path-and-host-header.mdx`
- `src/content/docs/rules/origin-rules/tutorials/index.mdx`
- `src/content/docs/rules/origin-rules/tutorials/point-to-pages-with-custom-domain.mdx`
- `src/content/docs/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain.mdx`
- `src/content/partials/rules/origin-rules-api-change-host-header.mdx`
- `src/content/partials/rules/origin-rules-api-change-port.mdx`
 







---

<details>

<summary>How can I customize these reviews?</summary>

Check out the [Hyperlint AI Reviewer docs](https://docs.hyperlint.com/guides/ai-reviewer/) for more information on how to customize the review.

If you just want to ignore it on this PR, you can add the `hyperlint-ignore` label to the PR. Future changes won't trigger a Hyperlint review.

Note specifically for link checks, we only check the first 30 links in a file and we cache the results for several hours (for instance, if you just added a page, you might experience this). Our recommendation is to add `hyperlint-ignore` to the PR to ignore the link check for this PR.
</details>
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-11T15:02:08Z
body: **Preview URL:** https://8632a9ac.preview.developers.cloudflare.com
**Preview Branch URL:** https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com

**Files with changes (up to 15)**

| Original Link | Updated Link |
| --- | --- |
| [https://developers.cloudflare.com/rules/origin-rules/tutorials/change-uri-path-and-host-header/](https://developers.cloudflare.com/rules/origin-rules/tutorials/change-uri-path-and-host-header/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/change-uri-path-and-host-header/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/change-uri-path-and-host-header/) |
| [https://developers.cloudflare.com/rules/origin-rules/create-api/](https://developers.cloudflare.com/rules/origin-rules/create-api/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/create-api/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/create-api/) |
| [https://developers.cloudflare.com/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain/](https://developers.cloudflare.com/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/point-to-r2-bucket-with-custom-domain/) |
| [https://developers.cloudflare.com/rules/origin-rules/tutorials/point-to-pages-with-custom-domain/](https://developers.cloudflare.com/rules/origin-rules/tutorials/point-to-pages-with-custom-domain/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/point-to-pages-with-custom-domain/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/point-to-pages-with-custom-domain/) |
| [https://developers.cloudflare.com/rules/origin-rules/examples/change-uri-path-and-host-header/](https://developers.cloudflare.com/rules/origin-rules/examples/change-uri-path-and-host-header/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-uri-path-and-host-header/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-uri-path-and-host-header/) |
| [https://developers.cloudflare.com/rules/origin-rules/faq/](https://developers.cloudflare.com/rules/origin-rules/faq/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/faq/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/faq/) |
| [https://developers.cloudflare.com/rules/origin-rules/examples/change-http-host-header/](https://developers.cloudflare.com/rules/origin-rules/examples/change-http-host-header/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-http-host-header/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-http-host-header/) |
| [https://developers.cloudflare.com/rules/origin-rules/examples/change-port/](https://developers.cloudflare.com/rules/origin-rules/examples/change-port/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-port/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/change-port/) |
| [https://developers.cloudflare.com/rules/origin-rules/features/](https://developers.cloudflare.com/rules/origin-rules/features/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/features/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/features/) |
| [https://developers.cloudflare.com/rules/origin-rules/tutorials/](https://developers.cloudflare.com/rules/origin-rules/tutorials/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/tutorials/) |
| [https://developers.cloudflare.com/rules/origin-rules/parameters/](https://developers.cloudflare.com/rules/origin-rules/parameters/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/parameters/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/parameters/) |
| [https://developers.cloudflare.com/rules/origin-rules/examples/](https://developers.cloudflare.com/rules/origin-rules/examples/) | [https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/](https://pedro-pcx-13585-rules-origin-rules-tutorials.preview.developers.cloudflare.com/rules/origin-rules/examples/) |
author_association: CONTRIBUTOR