Apache default VirtualHost
I found the answer: I remembered that Apache uses the first block if no other matching block is found, so I've added a block without a serveralias
at the top of the blocks:
NameVirtualHost *<VirtualHost *> DocumentRoot /defaultdir/</VirtualHost><VirtualHost *> ServerAdmin admin@domain.com DocumentRoot /someOtherDir/ ServerAlias ip.of.the.server</VirtualHost><VirtualHost *> ServerAdmin admin@domain.com DocumentRoot /someroot/ ServerAlias domain.com *.domain.com</VirtualHost>
If you are using Debian style virtual host configuration (sites-available/sites-enabled), one way to set a Default VirtualHost is to include the specific configuration file first in httpd.conf or apache.conf (or what ever is your main configuration file).
# To set default VirtualHost, include it before anything else.IncludeOptional sites-enabled/my.site.com.conf# Load config files in the "/etc/httpd/conf.d" directory, if any.IncludeOptional conf.d/*.conf# Load virtual host config files from "/etc/httpd/sites-enabled/".IncludeOptional sites-enabled/*.conf
The other answers here didn't work for me, but I found a pretty simple solution that did work.
I made the default one the last one listed, and I gave it ServerAlias *
.
For example:
NameVirtualHost *:80<VirtualHost *:80> ServerName www.secondwebsite.com ServerAlias secondwebsite.com *.secondwebsite.com DocumentRoot /home/secondwebsite/web</VirtualHost><VirtualHost *:80> ServerName www.defaultwebsite.com ServerAlias * DocumentRoot /home/defaultwebsite/web</VirtualHost>
If the visitor didn't explicitly choose to go to something ending in secondwebsite.com
, they get the default website.