O acima usa mod_vhost_alias , eu uso mod_rewrite , algo assim no primeiro VirtualHost definido (padrão):
RewriteEngine on
RewriteMap lc int:tolower
RewriteCond /var/www/${lc:%{SERVER_NAME}} -f
RewriteRule ^/(.*) /var/www/${lc:%{SERVER_NAME}}/htdocs/$1
Isso permite adicionar um pouco mais de lógica, caso seja útil.
Eu tinha pensado que outra vantagem da abordagem mod_rewrite é que ele iria lidar com qualquer domínio, não necessariamente sub-domínios - mas no teste (httpd-2.2.x) parece que ServerAlias
aceitará qualquer razoável * e? curingas, incluindo * .com ou até *. Então, não vença se você não precisar da complexidade.
Em ambos os casos, pode ser útil usar as diretivas LogFormat / CustomLog para colocar o nome do host virtual solicitado ( %v
) nos logs:
LogFormat "%v %h %l %u %t \"%r\" %>s %b" log-with-vhost
Veja também o link para muitas das dicas de hospedagem virtual em massa.