Simple HTTPS Domain Redirects with Netlify
This week, a website that I help maintain ran into some issues with their domain names. I stumbled upon a quick (and free!) solution which I thought was worth sharing, in case it helps anyone else out of a jam.
TL;DR: You can use a Netlify
_redirects file to redirect both HTTP and HTTPS traffic from one domain to another, without paying for server hosting or an SSL certificate.
Are We Game Yet? is a website which lists resources for game developers in the Rust community. It's hosted on Github Pages, and historically it's been available via
https://arewegameyet.com. We also had simple HTTP redirects set up on
.rs domain makes it a bit clearer that the website is Rust-related, we decided that it'd be good to make this the new primary URL. But that led us to a bit of a conundrum: pretty much all of the existing links to the site, including the ones on Google, point at
GitHub Pages doesn't support multiple domains, and our domain providers only support simple HTTP redirects unless we pay through the nose for a VPS and/or a SSL certificate. So for a while, it looked like we wouldn't be able fix these URLs without moving our hosting or increasing our expenditure, neither of which would be ideal.
Netlify is a web hosting service that's targeted at static sites. They have an extremely generous free tier, which I'm currently using to host both this blog and Tetra's documentation, and I'll basically tell anyone who'll listen about how they're the best thing since sliced bread.
One of the really cool features of Netlify is that they allow you to specify redirect rules as part of your static deployment. You provide a file called
_redirects, and their servers will handle mapping the URLs. It's similar to an Apache
.htaccess file, but without having to actually manage the server itself.
I've seen a lot of cool tricks done with
_redirects files before; for example, Kent C. Dodds has used them to create his own URL shortener. So I was curious whether they could be applied to this problem - and as it turned out, thanks to splat redirects, they can!
First, we created a dummy
index.html file, as Netlify didn't seem to want to deploy a site without one present. Then, alongside it, we created a
_redirects file with only two lines:
/* https://arewegameyet.rs/:splat 301! / https://arewegameyet.rs 301!
! at the end is important, as it prevents files in the deployment from shadowing the redirects.
We deployed these two files to Netlify, added our
.org domain names to the project, and activated HTTPS via Netlify's Let's Encrypt integration.
And that's it! Now both domains redirect all of their traffic on both HTTP and HTTPS to the corresponding page on
https://arewegameyet.rs, and we didn't have to pay a penny.
Hopefully this is useful to other people who find themselves in a similar situation!