Host virtual para subdomínio substituindo o host virtual padrão

1

Eu tenho dois vhosts configurados no Apache. Um padrão para lidar com todas as solicitações e uma para um subdomínio específico. O diretório www é configurado da seguinte forma:

/var/www
/var/www/subdomain

As configurações do host virtual são as seguintes:

<VirtualHost *:80>
        DocumentRoot /var/www
        <Directory />
                Options None
                AllowOverride None
        </Directory>
        <Directory /var/www>
                Options None
                AllowOverride None
                Deny from all
        </Directory>
</VirtualHost>


<VirtualHost subdomain>
        ServerName subdomain.domain.com

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

Agora, quero que qualquer coisa para subdomain.domain.com seja atendida a partir de /var/www/subdomain e qualquer outra solicitação a ser negada. No entanto, quando visito o domínio.com, ele atende /var/www/subdomain .

Aprecie se alguém puder me dizer o que estou fazendo de errado. Obrigado!

EDITAR com informações adicionais ao executar apache2ctl -S

/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using XX.XXX.XXX.XX for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain (/etc/apache2/sites-enabled/default:1)
         port 80 namevhost domain (/etc/apache2/sites-enabled/default:1)
         port 80 namevhost sub.domain.com (/etc/apache2/sites-enabled/subdomain:1)
Syntax OK
    
por Choy 08.10.2012 / 02:22

1 resposta

5

Seu problema está aqui:

<VirtualHost subdomain>

Não faça isso, já que está dando prioridade ao vhost sobre o existente para qualquer IP que tenha sido resolvido. Deve ser <VirtualHost *:80> correspondente ao seu vhost existente. A diretiva ServerName é onde o 'nome' do vhost deve ir.

Você também precisa de um NameVirtualHost *:80 em algum lugar, se ainda não tiver isso.

    
por 08.10.2012 / 02:29