apache - servidor - redireccionar subdominio a ip cpanel
Apache múltiples subdominios con una dirección IP (1)
Probablemente se ha preguntado esto, pero no puedo encontrar una respuesta directa, o las que encontré no funcionan.
Tengo un dominio mydomain.com , resolviendo una IP; llamémoslo 8.8.8.8. La configuración de DNS también señala dos subdominios a esa dirección IP con un registro A. Estos son dev.mydomain.com y staging.mydomain.com . Ambos tienen un récord que apunta a 8.8.8.8.
En el servidor (8.8.8.8) tengo dos archivos de hosts virtuales. Estos son los siguientes:
staging.mydomain.com.conf
<VirtualHost *:80>
ServerName staging.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
Y...
dev.mydomain.com.conf
<VirtualHost *:80>
ServerName dev.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
El problema es:
Independientemente de si visito http://staging.mydomain.com o http://dev.mydomain.com , siempre aterrizo en staging.mydomain.com (Apache sirve estos archivos).
He reiniciado Apache e incluso el servidor. Si cambio el orden de los archivos .conf para que dev sea el primero, siempre lo veo. Cualquier sugerencia sería muy apreciada. ¡Gracias!
actualizar
Me encuentro de nuevo en este problema de nuevo! Si sabe que su sintaxis es correcta, es posible que tenga un enlace simbólico defectuoso. Bórrelo y vuelva a crearlo, reiniciando Apache en el medio. Solo hice esto y resolví horas de rascarme la cabeza. En CentOS
puede verificar sus vhosts disponibles con httpd -S
actualización 2
También encontré que este problema existe cuando los archivos de registro de apache para el host virtual no existen, o no se pueden escribir.
Parece que necesita agregar la directiva NameVirtualHost
a su configuración.
NameVirtualHost *:80
En algunas circunstancias, es posible que Apache no pueda manejar *:80
VirtualHosts correctamente. En esos casos, debe asignar VirtualHosts directamente en direcciones IP específicas.
NameVirtualHost 8.8.8.8:80
<VirtualHost 8.8.8.8:80>
ServerName staging.mydomain.com
ServerAlias stage.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
<VirtualHost 8.8.8.8:80>
ServerName dev.mydomain.com
ServerAlias development.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
También puede ejecutar apachectl -t -D DUMP_VHOSTS
para ver cómo Apache analiza la configuración de VirtualHost.
Actualización: Como se mencionó en los comentarios, por lo general, solo puede usar NameVirtualHost *:80
. Así que la mayoría de las veces puede configurar los hosts virtuales de la siguiente manera.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName staging.mydomain.com
ServerAlias stage.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
<VirtualHost *:80>
ServerName dev.mydomain.com
ServerAlias development.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>