Cloudflare Docs
Cloudflare Fundamentals
Visit Cloudflare Fundamentals on GitHub
Set theme to dark (⇧+D)

Manage subdomains

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.

​​ Create a subdomain

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

​​ Set up redirects

​​ Redirect a subdomain to the apex domain

Sometimes, you might want all traffic to a subdomain (www.example.com) to actually go to your apex domain (example.com).

  1. 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.

    TypeNameIPv4 addressProxy status
    Awww192.0.2.1Proxied
  2. 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

  • Type: Dynamic
  • Expression: concat("https://","example.com",http.request.uri.path)
  • Status code: 301

​​ Redirect the apex domain to a subdomain

Sometimes, you might want all traffic to your apex domain (example.com) to actually go to a subdomain (www.example.com).

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

  2. 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.

    TypeNameIPv4 addressProxy status
    A@192.0.2.1Proxied
  3. 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

  • Type: Dynamic
  • Expression: concat("https://","www.example.com",http.request.uri.path)
  • Status code: 301

​​ SSL/TLS for subdomains

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.

​​ Customize subdomain behavior

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.