How to configure Google Domains + Heroku w a Naked Domain

8.6k views Asked by At

I have a domain loading in a web browser using Heroku and Google Domains. Right now the domain loads with a www: http://www. XXX .com.

If I enter the URL w/o the WWW like http:// XXX .com I get the following error in Chrome: "XXX.com’s server DNS address could not be found"

What do I need to do so that the following happens:

  1. This loads - http:// mydomain.com
  2. http://www. mydomain.com redirects to http:// mydomain.com

Thank you

4

There are 4 answers

8
Jeremie On BEST ANSWER

IMHO, you should:

1/ Set your heroku domain to be http://example.com. All the info are in the Heroku documentation.

Heroku should serve your site using http://example.com.

2/ You need to redirect in Google Domains your http://www.example.com to http://example.com. To do this, you need to set web forwarding in the Google Domain console under the website tab. The documentation is straight forward.

Any http://www.example.com request should be forwarded to http://example.com.

UPDATE

Due to your needs, I am wondering if the best is not to disable the naked to www redirection, have both domain points to your heroku instance and get a SSL certificate for them (using let's encrypt makes things easy).

Here is a tutorial.

I hope this helps!

0
Pavel Darii On

After some research, to set up a redirect from a naked domain (e.g., example.com) to a www subdomain (e.g., www.example.com) using Heroku and Google Domains, you can use a third-party domain host provider like Cloudflare. Cloudflare has a free tier and is easy to use for configuring an HTTP to HTTPS redirect. It is also secure and fast.

Found this link useful on how to do that: https://www.derricksherrill.com/tutorial/web-dev/google-domains-cloudflare/

2
KhalilRavanna On

Another solution is to use some 3rd party DNS provider like Cloudflare to do this. I just went through this same process. App hosted on Heroku with a domain purchased from Google. Signed up for a free account with Cloudflare and was up and running in about an hour following this guide: https://support.cloudflare.com/hc/en-us/articles/205893698

Things I did:

  • Delete DNS rules I had tried adding earlier to Google under "Custom resource records"
  • Have just one domain added in Heroku for the root: "myapp.com" (not "www.myapp.com", not "*.myapp.com") which gave me a DNS address like "blah-blah-12345-herokudns.com"
  • In Cloudflare add two CNAME records on the DNS page:

    1. CNAME "myapp.com" blah-blah-12345-herokudns.com
    2. CNAME "www" blah-blah-12345-herokudns.com
  • Copy over custom DNS nameservers into Google from Cloudflare

After that now I can go to myapp.com and it just works. Super stoked because I really didn't want www.myapp.com.

One cool thing is I had already set up an GSuite account for the domain and when I signed up for Cloudflare it imported all the DNS rules from Google, including the MX records for email so it worked seamlessly.

3
gwcodes On

It's advisable to make the www subdomain the default here, such that the root/naked domain redirects to www. This is in line with Heroku recommendations, which states:

For maximum scalability and resiliency applications should avoid using DNS A-records and instead use a DNS provider that supports CNAME functionality at the apex, or use sub-domains exclusively

You can achieve this with Google Domains Synthetic Records:

  • Go to the Synthetic Records section
  • Select Subdomain forward
  • Enter @ for subdomain, and www.xyz.com for destination