En Apache/local, ¿cómo puedo admitir tanto el acceso al directorio como el acceso al host con nombre?

En Apache/local, ¿cómo puedo admitir tanto el acceso al directorio como el acceso al host con nombre?

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 Directoryy 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".ElDocumentRooty elAliasLas 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 DocumentRoots 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 Aliases, 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>

información relacionada