Apache Virtual Hosts Non-www not working
I'm setting up a Virtual Hosts file on my CentOS 7 box and I'm having trouble getting my domain to resolve correctly.
Here's what my current /etc/httpd/conf.d/vhost.conf
file looks like
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@domain.com
ServerName www.domain.com
ServerAlias domain.com
DocumentRoot /var/www/html/domain.com/public_html/
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.com [OR]
RewriteCond %{SERVER_NAME} =domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
It seems the the correct redirects are happening. For exmaple:
domain.com redirects to https://www.domain.com
and www works fine
BUT
https://domain.com doesn't work
http ://domain.com doesn't work
In fact, if I remove the redirects I have set, domain.com ins't working at all, so it looks like the ServerAlias is broken?
I'm wondering if I need another redirect or is there some other step I'm missing?
4 Replies
It's hard to tell since you haven't said what your domain is, but it sounds like you might not have a DNS record for domain.com
.
If you're using the Linode DNS Manager, make sure:
- You have a zone for
domain.com
(notwww.domain.com
) - You have an A record with a blank hostname (under "A/AAAA Records" on the page for that zone in the DNS Manager)
Some browsers try to be smart about the URL you've entered and will automatically add www to the front of your domain, which can be nice sometimes but may also hide DNS issues while you're configuring your site. Since you said browsing to domain.com
works but http://domain.com
doesn't, I suspect that may be what's happening here.
Hmm. It looks like all my DNS settings are configured correctly. My zone is for domain.com
and I have A records with both a blank hostname and a hostname of www.domain.com
The only other thing that I can think of right now is that I changed my hostname to grump
when initially configuring my server. Would that play any effect?
The system's hostname shouldn't matter as far as I know - Apache will use the hostname if you don't have a ServerName
, but you do have one in the snippet you posted.
What do you get if you try requesting both http://domain.com
and http://www.domain.com
from an external machine? If you have a machine with curl installed, try this:
curl -IL http://domain.com
curl -IL http://www.domain.com
That'll show you exactly where each one is redirecting, if applicable.
Also, do you have a similar virtualhost config for SSL on port 443?