68

I have performed a web search for the question but totally disappointed with the results. The case is to redirect all requests to domain.com to subdomain www.domain.com.

So what I have:

  1. www.domain.com - main website domain, all client requests should be redirected here
  2. domain.com - another website entry point for people not using www prefix, all requests should be redirected to www.domain.com
  3. mydomain.com - alternative website alias, all requests should be redirected to www.domain.com
  4. www.mydomain.com - for people using www prefix, all requests should be redirected to www.domain.com

I understand this is possible using .htaccess and PHP. But I want to figure out how this can be done using DNS only. I also understand that the result of the DNS query doesn't change what happens in the HTTP layer so the originally entered domain name will always be the one that's sent to the web server in the Host. So to rewrite domain.com to www.domain.com I will still need Apache mod_rewrite. But I want to do main part of work with DNS (CNAME and A records).

So the main question is what CNAME and A records each domain above should have?

Maksim
  • 857
  • 2
  • 7
  • 6
  • 26
    In response to those who closed the question: wouldn't it be more productive to link this question to a relevant one on the "appropriate" site (presumably serverfault)? And that DNS is completely "off topic" for a web developer is somewhat weak an argument. I really think there's too much eagerness to shut questions down. This was, by the way, was the top google link. It reflects poorly on the community to have this overzealous "off topic" policing of top search results. – Emmel May 04 '17 at 23:56
  • 10
    Here I am, a web developer, wondering how I redirect calls without the `www` subdomain, to that. – Justin Adkins Nov 13 '17 at 22:40

1 Answers1

69

You could make www.domain.com the A record and all the other domainnames CNAMEs of www.domain.com. But this only "solves" that if the IP address of www.domain.com changes you don't have to alter the other DNS enties as they are aliases.

So on the DNS level there is no way to enforce a redirect. And for a good reason because DNS is used for more then only HTTP. For example if all request for domain.com would redirect to www.domain.com your email addresses will change to user@www.domain.com.

So for HTTP redirection you will have to use an HTTP solution. This can be at the webserver level (mod_rewrite, in code, javascript (ugh), etc..) but you could also have a proxy in front of your webserver to handle this.

Michaël Hompus
  • 2,804
  • 21
  • 32