A sintaxe da VirtualHost diretiva é
<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
Em que addr é o endereço do host virtual, não seu caminho físico.
Portanto, é mais seguro usar um IP (ou o curinga * ). Ele até diz na documentação que, você pode usar um domínio totalmente qualificado , mas não é recomendado:
Da documentação:
A fully qualified domain name for the IP address of the virtual host (not recommended)
Para alcançar o que você está pedindo, você precisa de uma combinação das diretivas DocumentRoot e ServerName . Que, de fato, já estão lá.
Exemplo:
<VirtualHost *:80>
DocumentRoot /var/www/domain.com/
ServerName www.domain.com
# Some other configs
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/domain.com/test/
ServerName test.domain.com
# Some other configs
</VirtualHost>
Além disso, há outro problema em sua configuração de host virtual, como no apache2.4 (que é fornecido por padrão em 14.04), a diretiva allow é substituída pela diretiva Require .
Também precisa estar dentro de uma diretiva especial, por exemplo, a diretiva Directory :
<Directory "/var/www/domain.com/">
Require all granted
Options +Indexes
</Directory>
Esta é uma configuração completa do Host Virtual:
<VirtualHost *:80>
ServerName www.domain.com
ServerAdmin [email protected]
DocumentRoot /var/www/domain.com/
ErrorLog ${APACHE_LOG_DIR}/domain.error.log
CustomLog ${APACHE_LOG_DIR}/domain.access.log combined
UseCanonicalName on
<Directory "/var/www/domain.com/">
Require all granted
Options +Indexes
</Directory>
</VirtualHost>