por lo que visitar mi sitio web example.com
funciona según lo previsto. Configuré exitosamente una redirección para que abc.example.com
redirija a example.com/abc
.
El archivo de configuración se ve así abc.example.com.conf
:
<VirtualHost *:80>
ServerName abc.example.com
RedirectPermanent / https://example.com/abc
</VirtualHost>
Mi problema:
Cuando visito mi sitio web y escribo la dirección IP sin formato en el navegador, también seré redirigido a example.com/abc
un comportamiento que no es el deseado. La IP sin formato en el navegador debería dejarme enexample.com
Aquí está el example.com.conf
archivo:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
¿Qué necesito cambiar para que cuando escriba mi dirección IP example.com
se proporcione en lugar de abc.example.com
?
Respuesta1
Esto se debe a que uno de sus vhosts actúa como predeterminado. Cuando el ServerName
nivel del servidor (es decir, no en un VirtualHost
bloque) coincida con uno dentro de a VirtualHost
, ese será el valor predeterminado. Si no se establece ninguno, normalmente será el primer host virtual.
Suponiendo que está utilizando una configuración exclusivamente de vhost, la respuesta es configurar ServerName example.com
(y el correspondiente Listen
) fuera del bloque de vhost.
Referencia:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
El anfitrión principal se va
Cualquier solicitud que no coincida con una existente es manejada por la configuración global del servidor, independientemente del nombre de host o del nombre del servidor.
Cuando agrega un host virtual basado en nombre a un servidor existente y los argumentos del host virtual coinciden con combinaciones de puerto e IP preexistentes, las solicitudes ahora serán manejadas por un host virtual explícito. En este caso, suele ser aconsejable crear un host virtual predeterminado con un nombre de servidor que coincida con el del servidor base. Luego se pueden agregar nuevos dominios en la misma interfaz y puerto, pero que requieren configuraciones separadas, como hosts virtuales posteriores (no predeterminados).