Apache default VirtualHost Apache default VirtualHost apache apache

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.