VirtualDocumentRoot
deve fazer o truque.
<VirtualHost *:80>
ServerName catchall.invalid
ServerAlias *
VirtualDocumentRoot /home/user/%0
</VirtualHost>
Tenho notado que alguns provedores de hospedagem têm a configuração do Apache para que, se eu criar um diretório (foo.example.com), o Apache saiba automaticamente que a entrada DNS de foo.example.com direciona para a raiz do documento.
O que devo fazer é configurar algo assim:
<VirtualHost *:80>
ServerName *.example.com
DocumentRoot /home/user/*.example.com
</VirtualHost>
Onde o DocumentRoot corresponderia com base no padrão do curinga do ServerName.
Ao fazer isso, tudo que eu preciso fazer é criar /home/user/foo.example.com
após a configuração estar em vigor e não precisar modificar nada no Apache. Isso permitiria que eu adicionasse subdomínios rapidamente sem precisar reiniciar ou recarregar ou até mesmo editar qualquer coisa no Apache.
Um caso de uso seria algo assim.
mkdir /home/user/baz.example.com/
Onde eu não precisaria fazer nada além de simplesmente criar o diretório.
A última empresa do site com a qual trabalhei fez algo semelhante, em vez de codificá-lo na configuração do apache, queríamos armazenar a configuração no banco de dados, permitindo que a atualizássemos sempre que quiséssemos e ajustássemos sempre que precisássemos.
é uma postagem de blog que usamos para realizá-la.
mod vhost dbd wiki, boa informação sobre como armazenar suas configurações de vhost no banco de dados.
Eu acho que não tenho karma suficiente para adicionar um comentário, então vou adicionar uma resposta. A resposta de Steve Madden está correta.
Se você deseja criar um domínio de desenvolvimento em sua máquina local (por exemplo, mycomputer.dev), é possível usar o truque VirtualDocumentRoot
juntamente com a execução de um servidor DNS local para fazer isso. Então, quando você quiser iniciar um novo site, basta criar o diretório. Nenhuma edição do Apache, nenhuma edição de arquivos de hosts, nenhum reinício do Apache.
Esta postagem de blog é um tutorial para * nix:
E um tutorial sobre o Windows:
Se você "apenas" quiser fazer o que você expressou na última seção da sua pergunta, faça o seguinte:
<VirtualHost *:80>
ServerName *.example.com
DocumentRoot /home/user/foo.example.com
</VirtualHost>
E você está definido.