**When incoming requests match**

Using the Expression Editor:

`(http.request.full_uri contains "www.example.com")`


**Then**

**Type:***Dynamic***Expression:**`concat("https://","example.com",http.request.uri.path)`

**Status code:***301*

Once you have added your domain to Cloudflare and updated your nameservers, you also might want to set up a subdomain.

Most subdomains serve a specific purpose within the overall context of your website. For example, `blog.example.com`

might be your blog, `support.example.com`

could be your customer help portal, and `store.example.com`

would be your e-commerce site.

If you have already added a subdomain at your host, create a corresponding DNS A or CNAME record for that subdomain (`blog`

, `store`

).

Sometimes, you might want all traffic to a subdomain (`www.example.com`

) to actually go to your apex domain (`example.com`

).

Create a proxied DNS A record for your subdomain. This record can point to any IP address since all traffic will be redirected prior to reaching the address.

Type | Name | IPv4 address | Proxy status |
---|---|---|---|

A | `www` | `192.0.2.1` | Proxied |


Create a Single Redirect to forward traffic from your subdomain to your apex domain.


**When incoming requests match**

Using the Expression Editor:

`(http.request.full_uri contains "www.example.com")`


**Then**

`concat("https://","example.com",http.request.uri.path)`

Sometimes, you might want all traffic to your apex domain (`example.com`

) to actually go to a subdomain (`www.example.com`

).

If you have already added that subdomain at your host, create a corresponding DNS A or CNAME record for that subdomain.

Create a proxied DNS A record for your apex domain. This record can point to any IP address since all traffic will be redirected prior to reaching the address.

Type | Name | IPv4 address | Proxy status |
---|---|---|---|

A | `@` | `192.0.2.1` | Proxied |


Create a Single Redirect to forward traffic from your apex domain to your subdomain.


**When incoming requests match**

Using the Expression Editor:

`(lower(http.host) eq "example.com")`


**Then**

`concat("https://","www.example.com",http.request.uri.path)`

If your main domain is using Cloudflare's Universal SSL certificate, that certificate also covers all first-level subdomains (`blog.example.com`

).

For deeper subdomains (`dev.blog.example.com`

), use a different type of certificate.

If you want to customize Cloudflare settings for individual subdomains, your approach will vary depending on your plan.

Enterprise customers can set up custom settings and access for a specific subdomain within Cloudflare with Subdomain support.

All other customers can set up subdomain-specific Configuration Rules or Page Rules to alter Cloudflare settings.

If you want a subdomain's DNS settings managed totally outside of Cloudflare — meaning this subdomain can be managed by individuals without access to your Cloudflare account — refer to Delegating subdomains outside of Cloudflare.