msi - Apache Multiple VirtualDocumentRoot
apache windows (5)
Normalmente, Apache seleccionará el primer host virtual cuyo ServerName
o ServerAlias
coincidan con el nombre de host proporcionado en el encabezado HTTP del Host
. En su caso, dado que no tiene directivas ServerName
, Apache supuestamente usa una búsqueda DNS inversa en la dirección IP para falsificar el nombre de un servidor, y suponiendo que el DNS inverso conduzca a domain.com, que no coincide, Apache se configura de manera predeterminada el primer host virtual. Suena complicado, lo sé ... la conclusión es que debes usar ServerName
y ServerAlias
para hacer que la configuración sea explícita. Pruebe algo más como esto:
NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
ServerName domain.com
ServerAlias www.domain.com
VirtualDocumentRoot /var/www/%0
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerName sub.domain.com
ServerAlias *.domain.com
VirtualDocumentRoot /var/www/%2.%3_%1
</VirtualHost>
Eso debería usar /var/www/domain.com
para http://domain.com y /var/www/www.domain.com
para http://www.domain.com , ambos servidos por el primer vhost y /var/www/sub.domain.com
para http://sub.domain.com , /var/www/blah.domain.com
para http://blah.domain.com , y así sucesivamente.
Usando Apache2 en un sistema Linux, ¿hay alguna forma de tener múltiples VirtualDocumentRoot usando mod_vhost_alias ?
Esta es la convención de nombres que actualmente uso y me gustaría seguir usando:
host directory
127.0.0.1 domain domain.com
127.0.0.1 sub.domain domain.com_sub
Luego en mi sección de fantasmas del httpd.conf tengo:
NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
VirtualDocumentRoot /var/www/%0.0.com
</VirtualHost>
<VirtualHost 127.0.0.1>
VirtualDocumentRoot /var/www/%2.0.com_%1
</VirtualHost>
El problema con esto es cuando visito sub.domain el registro de errores de Apache muestra que está buscando /var/www/sub.domain.com en lugar de /var/www/domain.com_test, lo que me lleva a creer que solo lee el primera regla y luego falla, pero lo que me gustaría hacer es usar cualquier raíz de documento que satisfaga cualquiera de las dos reglas de VirtualDocumentRoot.
En cuanto a OP y el problema con "/ var / www / html" se establece:
El problema que tuve con esto fue usar% 1 en vez de% 2. Aquí está mi ejemplo de trabajo:
ServerAlias www.*.org.au
UseCanonicalName Off
VirtualDocumentRoot /path/to/sites/%2/pub
Espero que ayude a alguien!
Leí los documentos sobre "Interpolación del nombre del directorio" en documentos mod_vhost_alias .
Lo que estoy notando con esta configuración es que $ _SERVER [''DOCUMENT_ROOT''] apunta a / var / www / html y no a la raíz del documento del vhost. extraño.
Actualización (2010-07-24):
Acabo de escribir una publicación en el blog sobre cómo configurar su http proof server http://www.devcha.com/2010/07/how-to-setup-your-http-proof-server.html
Debes calificar las referencias cuando quieras poner un ''.'' en la ruta del archivo Entonces debes tenerlo así:
VirtualDocumentRoot /var/www/%2.0.%3_%1
Finalmente encontré una configuración que permite la creación flexible de subdominios.
Ver los documentos de apache en mod_vhost_alias
Si su dominio de desarrollo raíz tiene 3 partes como dev.example.com, puede usar %-4+
como marcador de posición para todo antes del dominio raíz. Si tiene 4 partes, use %-5+
.
<VirtualHost *:80>
VirtualDocumentRoot "/var/www/%-4+/webroot"
ServerName www.dev.example.com
ServerAlias *.dev.example.com
php_admin_value auto_prepend_file /var/www/setdocroot.php
</VirtualHost>
De esta forma, puede crear un directorio llamado /var/www/sub.domain/webroot
y acceder a él con la url sub.domain.dev.example.com
.
La línea php_admin_value auto_prepend_file /var/www/setdocroot.php
corrige el docroot en algunos sistemas como OSX 10.9+
Aquí está el contenido de setdocroot.php
:
<?php
$_SERVER[''DOCUMENT_ROOT''] = str_replace($_SERVER[''SCRIPT_NAME''], '''', $_SERVER[''SCRIPT_FILENAME'']);
?>