Apache 2.2 ignorando VirtualDocumentRoot VirtualHosts?
-
16-09-2019 - |
Pregunta
Tengo varios dominios que me gustaría tener subdominios comodín habilitadas a tal efecto en mod_vhost_alias
Incluido en mi httpd.conf Tengo las siguientes reglas generales:
<VirtualHost [ip here]:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain1.com
VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName *.domain2.com
VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>
El problema es que Apache está ignorando por completo las VirtualHosts con los ServerNames comodín. Cualquier solicitud de test.domain1.com o test.domain2.com simplemente mostrará el contenido de / home / user1 / public_html (la regla por defecto de acuerdo con Apache).
Algunos otros datos:
/home/user1/subdomains/test
y /home/user2/subdomains/test
tanto existir y tener los archivos en ellas
Todos mis dominios tienen un subdominio comodín que se indican en la configuración de vinculación y que están apuntando a la misma dirección IP especificada en las normas VHOST. VHOST reglas estándar para los subdominios de trabajo, pero no comodín.
Una versión de la salida de httpd -S
cortó
# httpd -S VirtualHost configuration: [ip here]:80 is a NameVirtualHost default server domain1.com (/etc/httpd/sites/user1:1) port 80 namevhost domain1.com (/etc/httpd/sites/user1:1) port 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14) port 80 namevhost domain2.com (/etc/httpd/sites/user2:1) port 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14) Syntax OK
# httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) rewrite_module (shared) auth_basic_module (shared) authz_host_module (shared) include_module (shared) log_config_module (shared) logio_module (shared) mime_magic_module (shared) mime_module (shared) vhost_alias_module (shared) dir_module (shared) suexec_module (shared) php5_module (shared) suphp_module (shared) ssl_module (shared) Syntax OK
Cualquier sugerencia en cuanto a lo que el problema se sería muy apreciada.
Solución
¡Soy un novato, que era una simple solución real.
ServerName
no permite comodines, pero ServerAlias
hace, por lo que sólo duplica el nombre del servidor de nuevo.
Aquí está la configuración definitiva minimizada para los dominios de cualquier persona que pasa a encontrar esta respuesta (odio cuando usted busca en Google y encontrar las preguntas, pero no hay respuestas):
<VirtualHost [ip here]:80>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
ServerName domain1.com #<-- The fix. Wildcards not supported in ServerName
ServerAlias *.domain1.com
VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>
Otros consejos
David, esta solución que detiene el ciclo mod_rewrite cuando el éxito será útil para su problema).
reescritura tapón round-robin:
RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9] RewriteRule .* - [L]