Se o subdomínio não existir

3

Existe uma maneira no apache2 de adicionar um host virtual para subdomínios que não existe?

Agora eu tento isso:

<VirtualHost *:80>
        ServerAdmin [email protected]

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log


</VirtualHost>

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName *.devhouse.nl
        DocumentRoot /var/www/errors
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/errors/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

</VirtualHost>

Include sites-available/devhouse.nl.vhost

(o segundo virtualhost)

Mas isso não funciona. Eu vejo o arquivo em / var / www não em / var / www / errors

Como posso consertar isso?

    
por Timo 31.01.2010 / 17:14

2 respostas

1

Você pode criar um VirtualHost padrão, que é acionado sempre que não houver NamedVirtualHost correspondente configurado. Isso basicamente se parece com o primeiro exemplo que você deu. Em seguida, adicione NamedVirtualHosts para todos os domínios que você deseja manipular (por exemplo, adicionar ServerName www.example.com etc).

Sempre que um host virtual for solicitado e não estiver configurado, o padrão estará atendendo a essa solicitação. Nessa, talvez você queira exibir conteúdo específico e / ou acionar um redirecionamento para um servidor existente (ou diferente).

Pode ser necessário declarar NameVirtualHost *:80 antes dos blocos do VirtualHost.

    
por 31.01.2010 / 17:52
1

Se NameVirtualHost *:80 ou algo semelhante já não estiver nos seus arquivos de configuração, terá que ser. Isso é necessário quando seus VirtualHosts estão usando o mesmo endereço IP e porta (que são seus). Isso diz ao Apache que ele deve usar o cabeçalho Host: na solicitação HTTP para escolher qual VirtualHost deve manipular essa solicitação.

Você também deve ter uma diretiva ServerName em cada VirtualHost se estiver usando NameVirtualHost. Isso é o que o Apache corresponde ao cabeçalho Host: para. A diretiva ServerName não pode conter o caractere *. O ServerName deve corresponder exatamente ao seu domínio. Se você quiser combinar www.devhouse.nl e devhouse.nl, precisará de uma diretiva ServerAlias. Você pode ter quantas diretivas ServerAlias desejar, mas somente um ServerName.

ServerName devhouse.nl
ServerAlias www.devhouse.nl
ServerAlias mail.devhouse.nl

Um VirtualHost com o acima mencionado corresponderia a uma solicitação HTTP que foi enviada para um desses três domínios. Qualquer outro pedido irá para o VirtualHost padrão.

O primeiro VirtualHost listado nos arquivos de configuração se tornará o VirtualHost padrão. Este é o único que irá lidar com um pedido se não corresponder a nenhum outro VirtualHost. Se você quiser que o segundo listado seja o padrão, você terá que trocá-los no arquivo.

A documentação do Apache sobre isso é muito boa: link

Você pode ter o Apache listando seus VirtualHosts e em que ordem eles entram com o comando apachectl -S (Isso é um maiúsculo S)

O Include no final parece bastante estranho. A primeira parte da listagem é o conteúdo desse arquivo incluído?

Caso tudo isso seja muito para ser recebido de uma só vez, o que você precisa fazer aqui é:

  1. Troque os dois VirtualHosts por aí.
  2. Coloque NameVirtualHost *:80 antes dos dois.
  3. Livre-se de *. da diretiva ServerName ou substitua-a por www. Não importa exatamente o que acontece no VirtualHost padrão, desde que seja um domínio que você deseja corresponder.
  4. Adicione uma diretiva ServerName e, opcionalmente, algumas diretivas ServerAlias ao segundo VirtualHost.
por 31.01.2010 / 23:03