Entiendo cómo utilizar las directivas Directory y (creo) VirtualHost. Además, entiendo que no puedo mezclarlos (aunque puedo anidarlos). Cuando los mezclo, aparece 404 no encontrado para las URL de tipo Directorio que solían funcionar.
Entonces, ¿cómo puedo admitir la navegación por ambas URL, como "localhost/mi/sitio web" y también "minombredominio.com" en mi archivo de configuración?
Mi razón fundamental: quiero que mydomainname.com use https mientras que mis otros sitios web usan http. Ya tengo mydomainname.com traducido a 127.0.0.1 en mi archivo HOSTS (mi DNS local), así que creo que debo estar cerca de una solución.
He estado trabajando en esto durante horas y realmente no he llegado a ninguna parte. La documentación de Apache no me ayuda.
Lo ideal sería que alguien pudiera esbozarme cómo lograr lo que quiero.
Respuesta1
Según la pregunta, creo que no entiendes la diferencia entre Directory
y VirtualHost
.
<Directory>
y</Directory>
se utilizan para encerrar un grupo de directivas que se aplicarán sólo al directorio nombrado, a los subdirectorios de ese directorio y a los archivos dentro de los directorios respectivos.
<VirtualHost>
y</VirtualHost>
se utilizan para encerrar un grupo de directivas que se aplicarán sólo a un host virtual en particular. Se puede utilizar cualquier directiva que esté permitida en un contexto de host virtual. Cuando el servidor recibe una solicitud de un documento en un host virtual en particular, utiliza las directivas de configuración incluidas en la<VirtualHost>
sección.
La <Directory>
directiva no controla las "URL de tipo directorio".ElDocumentRoot
y elAlias
Las directivas controlan en qué parte del sistema de archivos se encuentra el contenido. Esas directivas se pueden usar directamente en la configuración del servidor o dentro de un archivo <VirtualHost>
.
Para lo que está tratando de lograr, simplemente necesita dos <VirtualHost>
s con DocumentRoot
s diferentes, por ejemplo
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/examplecom"
ServerName example.com
</VirtualHost>
Ahora tienes ambos http://localhost/examplecom/
y http://example.com/
para el mismo sitio web. Si no todos los sitios están en el mismo directorio del sistema de archivos, necesitará usar Alias
es, por ejemplo
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/user/sites/example.com"
ServerName example.com
</VirtualHost>