Multiple Domains on GitHub Pages

3 minute read

Something I found out after moving from WordPress to GitHub Pages is that out of the box you can only host a single domain for a repository with GitHub Pages. This is a problem for me because I have a number of domains I was hosting at WordPress that I wanted to point at my GitHub Pages.

Official Docs and the limitation

So officially, GitHub pages doesn’t support multiple domains. The docs here state:

Make sure your site does not Use more than one apex domain. For example, both ** and **. Use more than one www subdomain. For example, both ** and **. Use both an apex domain and custom subdomain. For example, both ** and **.

This means for example, I can setup and for my repository and nothing else. If I want another domain to point to it, like, I would probably need to fork the repository and setup the new repository for the additional domain.

So how do we solve this? There has to be another way. There is! We can use Cloudflare to redirect the additional domains to the GitHub Pages domain. It seems this has been an issue for everyone since 2018. I found a few articles that helped me figure this out:


Cloudflare is a DNS provider that has a free tier. It also has a feature called Page Rules that allows you to setup custom rules for your domain. This is what we will use to redirect the additional domains to the GitHub Pages domain.


First, we need to setup Cloudflare. This is a pretty simple process. You just need to create an account and add your domain. You can do this by following the steps here:

  1. Create an account (if you don’t already have one)
  2. Add your domain
  3. I chose the free plan for each of my domains
  4. I reviewed all the entries and made sure they were correct (I removed most of them)
  5. I updated the DNS nameservers for my domain to the ones provided by Cloudflare

I decided that my primary domain would be As part of the normal GitHub Pages DNS setup, you add the domain name to GitHub Pages then add A records to your DNS domain. The directions are here. I’ve added the needed A records to my domain on CloudFlare.

A Record Entries on Cloudflare
A Record Entries on Cloudflare

Next I need to setup my other domains. For each domain, I added it to Cloudflare. I then setup 3 CNAME entries. Let’s look at my configuration for as an example. I setup the following CNAME entries:

CNAME Entries on Cloudflare
CNAME Entries on Cloudflare

With this configuration, I’m saying that pretty much everything should point to

Type Name Content

Now I need to setup the Page Rules. These are main thing that makes it all work.

Cloudflare Page Rules

This is where it gets a little more complicated. Continuing with my example before, adding, I setup the following Page Rules:

Page Rules on Cloudflare
Page Rules on Cloudflare
Page Rules on Cloudflare
Page Rules on Cloudflare

The main thing is to note the special characters (*) and variables in the rules.

Field Value
URL (required) **
Forwarding URL 301 - Permanent Redirect
Destination URL$2

After a little bit, everything should redirect to the GitHub Pages domain and work. I was fiddling a lot for the first domain or two, and they took a little while to start working. I’m not sure if it was just a propagation issue or what. But after a few hours, everything started working.

The other domains I did (I have around 10) were pretty quick. I think it was just the first ones that took a while because I was trying to figure out the process.


I’m pretty happy with the results. I was able to get all my domains to point to my GitHub Pages site. I’m not sure if this is the best way to do it, but it works. I’m sure there are other ways to do it, but this is the way I figured out. I hope this helps someone else out there.