Roteamento de subdomínio por cartão curinga no Apache

2

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.

  1. mkdir /home/user/baz.example.com/
  2. ?????
  3. Lucro

Onde eu não precisaria fazer nada além de simplesmente criar o diretório.

    
por Marco Ceppi 05.08.2011 / 20:50

4 respostas

4

VirtualDocumentRoot deve fazer o truque.

<VirtualHost *:80>
    ServerName catchall.invalid
    ServerAlias *
    VirtualDocumentRoot /home/user/%0
</VirtualHost>
    
por 06.08.2011 / 06:04
2

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.

link

é uma postagem de blog que usamos para realizá-la.

link

mod vhost dbd wiki, boa informação sobre como armazenar suas configurações de vhost no banco de dados.

    
por 06.08.2011 / 01:21
0

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:

link

E um tutorial sobre o Windows:

link

    
por 13.10.2011 / 22:30
-1

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.

    
por 06.08.2011 / 00:48