O LazyOne está exatamente certo. Contanto que você tenha as diretivas NameVirtualHost
classificadas, então o primeiro VirtualHost
definido para o endereço ip solicitado será usado, se não houver outras combinações ServerName
ou ServerAlias
.
Portanto, se você deseja veicular um 404 para cada endereço IP que não atingir uma correspondência de cabeçalho de host, crie uma VirtualHost
(por ip) sem uma diretiva ServerName
ou ServerAlias
e posicione-a em a configuração para que seja carregada primeiro. Algo como:
<VirtualHost 10.0.0.1:80>
Redirect 404 /
</VirtualHost>
<VirtualHost 10.0.0.2:80>
Redirect 404 /
</VirtualHost>
<VirtualHost 10.0.0.2:80>
ServerName website.com
Redirect / http://www.website.com
</VirtualHost>
<VirtualHost 10.0.0.1:80>
ServerName www.website.com
#note how there is no alias here
DocumentRoot /var/www/www.website.com
...
</VirtualHost>
Atualização : a maioria dos itens a seguir é extraída dos documentos do apache2, aqui e aqui .
O arquivo de configuração principal, geralmente chamado httpd.conf, é carregado primeiro. Mas se você estiver usando um pacote binário em um sistema baseado no Debian, há uma boa chance de ele ser chamado apache2.conf. Outros arquivos de configuração são adicionados usando a diretiva Include
na configuração principal. Vários usos da diretiva Include
são permitidos. As diretivas Include
podem usar curingas no estilo fnmatch para carregar vários arquivos de configuração de uma vez, em ordem alfabética .
Para esclarecer mais (esperançosamente), sua configuração principal é carregada primeiro. Como Include
diretivas são encontradas, elas são carregadas na ordem em que aparecem na configuração principal. Se um indivíduo Include
usar um caractere curinga, cada arquivo de configuração correspondente será carregado em ordem alfabética.
Em um servidor debian, o apache2.conf pode ser parecido com isto:
# Include module configuration:
# ...
Include mods-enabled/*.conf
# Include all the user configurations:
Include httpd.conf
# Include ports listing
Include ports.conf
# ...
# Include generic snippets of statements
Include conf.d/
# Include the virtual host configurations:
Include sites-enabled/
Em outras palavras, qualquer arquivo terminado em .conf
em mods-enabled / é carregado antes do httpd.conf, que é carregado antes do ports.conf, que é carregado antes de qualquer arquivo em conf.d /, etc.