Change your domain and preserve SEO with AWS Route 53, AWS S3, and AWS Cloudfront
ADVERTISEMENT
Table of Contents
- Introduction
- The Importance of 301 Redirects
- Configure AWS Route 53 Nameservers
- Set up AWS S3 static site redirect
- Set Up AWS Cloudfront Distribution with HTTPS and Point to S3 Bucket
- Create DNS Entry in AWS Route 53 to Cloudfront distribution
- Move Site in Google Search Console
- Contact Your Best Linking Domains to Repoint Links to New Domain
- No Change Required in Google Analytics or Google Tag Manager
- Create and Verify New Site in Google AdSense (Optional)
- Conclusion
Introduction
Oftentimes, a company or website decides to rebrand or transition to a new domain name.
When I first created this website, I purchased the domain initialcommit.io
since it was available while the .com
TLD (top-level domain) was taken. A few years later, I noticed that the initialcommit.com
domain came on the market for a fair price, so I snapped it up.
I was slightly nervous because I had spent countless hours building up the SEO for initialcommit.io
. Luckily with the right steps, it is possible to make the change to a new domain as seamless as possible for your users, while preserving SEO in the process.
In this article, we'll discuss changing a website's domain while preserving SEO using several Amazon Web Services including AWS Route 53, AWS S3, and AWS Cloudfront.
The Importance of 301 Redirects
The most important step in preserving SEO through a domain change is to properly redirect your old links that are spread across the Internet. If done incorrectly, you could end up with a bunch of broken links that negatively impact your rankings and traffic.
The goal is that each of your existing links out there on the web should seamlessly redirect to the same page on your new domain. This can be achieved using 301 redirects. This type of redirect has an HTTP Status Code of 301 Moved Permanently. It is intended to be used when a resource has permanently moved to a new location.
We will see how to use AWS S3 (Simple Storage Service) to set up 301 redirects from the old domain to the new domain.
Configure AWS Route 53 Nameservers
But first, we'll discuss another AWS service called Route 53. Route 53 is a DNS service hosted by AWS. Using Route 53's nameservers for our domain will allow us to take advantage of other AWS services like S3, Cloudfront, and Certificate Manager to accomplish a variety of tasks.
By default, you probably use the nameservers provided by the company you bought your domain from, such as Namecheap.com or GoDaddy.com. Switching to Route 53's nameservers allows definition of DNS entries directly in the AWS console instead.
Follow these steps to create a new Hosted zone for your old site in AWS Route 53:
- Log into AWS and browse to the Route 53 service.
- Click on the link for Hosted zones and click the Create hosted zone button.
- Type your old domain name into the Domain name field.
- Leave the default Public hosted zone radio button enabled and click the Create hosted zone button.
- Now that your hosted zone is created, you should see a list of 4 Name servers in the Hosted zone details.
- Now is the time to update your current DNS service (such as Namecheap.com or GoDaddy.com) to use these Route 53 name server URLs instead of the default or existing ones. This varies depending on the company you are using. Usually after you log into your DNS hosting account there is a Manage DNS option which will show you the active name servers and allow you to change them. If not you can call them to ask how to do this.
- You will probably want to recreate any DNS records existing in your old DNS provider in AWS Route 53.
- It may take 30 minutes to a few hours for your DNS changes to propagate and take effect.
Now that you are using AWS Route 53 to host the DNS for your old domain, you probably want to follow steps (1) - (8) again to add a hosted zone for your new domain as well.
Set up AWS S3 static site redirect
AWS S3 (Simply Storage Service) primarily allows you to create buckets for storing files in the cloud. But it has a few lesser-known functionalities such as the ability to host static websites and even to receive incoming web requests to a domain or service and redirect them somewhere else. We can pass requests to our old domain into the S3 bucket which will redirect them to the same path, with the same cookies and query string parameters, to our new domain.
Now you're ready to create an S3 bucket to perform your redirects:
- Log into AWS and browse to the S3 service.
- Click the
+ Create bucket
button. - Enter your bucket name and click
Create
in the bottom left. Note that it's fine to leave "Block all public access" enabled by default. - Back in the S3 list, click the new bucket's name and then click the
Properties
tab. - Click the
Static website hosting
block to expand its options. - Enable the second radio button
Redirect requests
. - Type your new domain into the "Target bucket or domain" field and
https
into the "protocol" field. - Before saving, make sure to copy our the Endpoint URL at the top of the block. It should look like
http://your-bucket-name.s3-website-us-west-2.amazonaws.com
- Click save.
Your S3 bucket configuration is complete! Let's move on the AWS Cloudfront setup, which is required for forwarding HTTPS requests from the old domain to the new one.
Set Up AWS Cloudfront Distribution with HTTPS and Point to S3 Bucket
AWS Cloudfront is a content delivery network (CDN) that can be used to efficiently distribute content around the world. We can use it to implement HTTPS as a part of our redirect process, since S3 doesn't support configuration of HTTPS certificates. For that reason we can set up a Cloudfront distribution and configure it with HTTPS, which will then forward our requests to the S3 bucket created in the previous section.
If you need to redirect over HTTPS, follow these steps to set up an AWS Cloudfront distribution to point to the S3 bucket created in the last step:
- Log into AWS and browse to the Cloudfront service.
- Click the
Create Distribution
button. - Click
Get Started
under the "Web" delivery method section. - In the Origin Domain Name field, paste the endpoint URL from step (8) in the previous section.
- Leave the Origin Path blank and enter your domain in the Origin ID field.
- Scroll down and for Viewer Protocol Policy choose
Redirect HTTP to HTTPS
. - For Allowed HTTP Methods choose
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
. - For Cache and origin request settings choose
Use legacy cache settings
. - For Forward Cookies select
All
. - For Query String Forwarding and Caching choose
Forward all, cache based on all
. - For Alternate Domain Names (CNAMEs) enter your domain name with and without the
www.
subdomain. - For SSL Certificate choose
Custom SSL Certificate (example.com)
. - Click on the empty field to select the SSL certificate for your old domain, or click
Request or Import a Certificate with ACM
to import your old domain cert into AWS. - Scroll down to the bottom and click the
Create Distribution
button in the bottom right. - Cloudfront should now show you the Domain name for your new distribution - it will look like
xxxxx.cloudfront.net
. If not you can find it on the "Cloudfront Distributions" screen. Copy and paste this to keep it handy.
Now we need to create a new DNS entry in AWS Route 53 which will reroute requests to the old domain to the new Cloudfront distribution.
Create DNS Entry in AWS Route 53 to Cloudfront distribution
The final task is creating two new DNS records to reroute requests from your old domain into the new Cloudfront distribution. This is required so that users who attempt to access your old domain will be forwarded to the Cloudfront distribution, which will enforce the HTTPS security and then forward the request to our S3 bucket, which will then redirect to our new domain! It sounds a bit complex, but it works great in my experience!
- Log into AWS and browse to the Route 53 service.
- Click on the Hosted Zone for your old domain.
- Click the Create Record button, choose
Simple routing
, and click the Next button. - Click Define Simple Record, and leave the Record name field empty.
- In the Value/Route traffic to field, choose
Alias to CloudFront distribution
. - Choose the region of your distribution and select your distribution from the list. If it doesn't show up, you should be able to copy/paste the Domain name from step (15) in the previous section.
- For the Record type, choose
A - Routes traffic to an IPv4 address and some AWS resources
. - Click the Define simple record button to save your entry.
- We will define one more DNS record, so repeat step (3).
- Click Define Simple Record, and for the Record name field type
www
. - Repeat steps (5) and (6).
- For the Record type, choose
CNAME - Routes traffic to another domain name and some AWS resources
. - Click the Define simple record button to save your entry.
Note: Sometimes the new interface for Route 53 can be a bit buggy and frustrating, by greying-out certain fields and not letting you choose the values you need. It may be easier to select the option to use the old Route 53 interface instead.
That's it! All of our routing and redirecting should be done! It may take around 30 minutes for your DNS changes to propagate and take effect. After that you should be able to browse to any of your old domain URL's and automatically be redirected to the same page on your new domain!
Move Site in Google Search Console
Alright - it's time for the moment of truth - telling Google about our domain change. Before doing this, it's wise to test several redirects from your old domain to your new one:
- Test redirects by typing links to your old domain directly in a browser URL bar.
- Test this for as many pages as you can, with and without the
www.
subdomain. - Re-test all scenarios while explicitly typing
http://
andhttps://
to make sure all forms work and properly redirect to securedhttps://
pages. - Test opening some of your links from the Google SERP results and make sure the redirects work properly.
- Test opening some of your links from your existing linking domains and make sure the redirects work properly.
Once you are confident that all your redirects and HTTPS are working smoothly...
- Log into Google Search Console.
- Scroll down and click Settings in the left sidebar.
- Click Change of Address.
- Follow the simple steps to enter your new domain and confirm the move.
- You may need to verify the new domain with Google by adding a TXT DNS record into Route 53.
Congratulations! Google will now go through the slow and steady process of moving your domain. Note that this process can take weeks or months to complete. Just be patient. Slowly over time you'll notice your Google search results will start showing the new domain. Google will preserve your hard-earned SEO in the process.
Contact Your Best Linking Domains to Repoint Links to New Domain
It is a good idea to contact your highest quality linking domains and ask them to update your do-follow links to use your new domain. In my experience, this is a quick and easy task that other site admins are happy to help out with, so don't be shy!
No Change Required in Google Analytics or Google Tag Manager
Luckily, none of the Google Analytics or Google Tag Manager embedded scripts directly reference your domain. As long as you leave those snippets alone, they should work just fine after you set up your redirects.
Create and Verify New Site in Google AdSense (Optional)
However, we do need to tell Google AdSense about the new domain:
- Log into Google AdSense and click on Sites in the left sidebar.
- Click the Add site button in the top right.
- Enter the URL of your new site.
- Ensure any code snippets and the
/ads.txt
file are already included in your site (it should just re-use the same snippets), or add them to your site if not present.
It may take a few days for Google AdSense to verify your new domain and start serving/monetizing ads.
Conclusion
In this article, we explained how to change a website's domain while preserving SEO. We accomplished this using AWS Route 53, AWS S3, and AWS Cloudfront.
If you're interested in learning more about Amazon Web Services, check out The Most Complete Guide to Amazon Web Services from Beginner to Advanced Level.
Final Notes
Recommended product: Coding Essentials Guidebook for Developers