configurar apache virtualhost

configurar - Apache VirtualHost por defecto



virtual host apache windows (5)

¿Cómo puedo configurar un VirtualHost predeterminado en apache? Preferiblemente, quiero que el host predeterminado no sea el mismo que el host de la dirección IP. Ahora tengo algo como esto:

NameVirtualHost * <VirtualHost *> ServerAdmin [email protected] DocumentRoot /someOtherDir/ ServerAlias ip.of.the.server </VirtualHost> <VirtualHost *> ServerAdmin [email protected] DocumentRoot /someroot/ ServerAlias domain.com *.domain.com </VirtualHost *>

Si un dominio se reenvía a mi servidor, pero no está en este archivo vhost.conf, los archivos de / someOtherDir / se cargan, como se esperaba. Pero quiero poder utilizar una raíz diferente para la dirección IP y dominios que no se agregan al archivo vhost.conf (todavía). es posible?

editar: corrigió mi código un poco, por lo que se parece más al archivo vhost.conf real


Encontré la respuesta: recordé que Apache usa el primer bloque si no se encuentra ningún otro bloque que coincida, así que he agregado un bloque sin serveralias en la parte superior de los bloques:

NameVirtualHost * <VirtualHost *> DocumentRoot /defaultdir/ </VirtualHost> <VirtualHost *> ServerAdmin [email protected] DocumentRoot /someOtherDir/ ServerAlias ip.of.the.server </VirtualHost> <VirtualHost *> ServerAdmin [email protected] DocumentRoot /someroot/ ServerAlias domain.com *.domain.com </VirtualHost>


Las otras respuestas aquí no funcionaron para mí, pero encontré una solución bastante simple que funcionó.

Hice que el predeterminado sea el último en la lista, y le di ServerAlias * .

Por ejemplo:

NameVirtualHost *:80 <VirtualHost *:80> ServerName www.secondwebsite.com ServerAlias secondwebsite.com *.secondwebsite.com DocumentRoot /home/secondwebsite/web </VirtualHost> <VirtualHost *:80> ServerName www.defaultwebsite.com ServerAlias * DocumentRoot /home/defaultwebsite/web </VirtualHost>

Si el visitante no eligió explícitamente ir a algo que termina en secondwebsite.com , obtiene el sitio web predeterminado.


Si está utilizando la configuración de host virtual estilo Debian (sites-available / sites-enabled), una forma de establecer un VirtualHost predeterminado es incluir primero el archivo de configuración específico en httpd.conf o apache.conf (o cual sea su configuración principal) archivo).

# To set default VirtualHost, include it before anything else. IncludeOptional sites-enabled/my.site.com.conf # Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/*.conf # Load virtual host config files from "/etc/httpd/sites-enabled/". IncludeOptional sites-enabled/*.conf


Una configuración alternativa es tener el host virtual predeterminado al final del archivo de configuración en lugar del comienzo. De esta forma, se verificarán todos los hosts virtuales alternativos antes de que coincidan con el host virtual predeterminado.

Ejemplo:

NameVirtualHost *:80 Listen 80 ... <VirtualHost *:80> ServerName host1 DocumentRoot /someDir </VirtualHost> <VirtualHost *:80> ServerName host2 DocumentRoot /someOtherDir </VirtualHost> <VirtualHost *:80> DocumentRoot /defaultDir </VirtualHost>