Este breve artículo explica cómo redireccionar todo el tráfico HTTP a HTTPS para todos los VirtualHost de un servidor Apache. El objetivo es forzar HTTPS para todos los sitios alojados en nuestro servidor Apache.



El problema es que se debe redireccionar todo el tráfico HTTP entrante a su equivalente HTTPS. Para ello es necesario definir un VirtualHost por defecto que escuche en el puerto 80 sin especificar la variable ServerName. En este VirtualHost se crea una regla de reescritura que convierte la URL a https://.

Este VirtualHost por defecto debe ser el único que escuche pedidos en el puerto 80, el resto deben escuchar en el puerto 443 y deben ser configurados para utilizar HTTPS.

En CentOS editar el archivo /etc/httpd/conf/httpd.conf:

vi httpd.conf

Agregar las siguientes líneas:

   NameVirtualHost *:80
   <VirtualHost *:80>
       RewriteEngine On
       RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
   </VirtualHost>

El truco es que no se sabe de antemano para qué VirtualHost es el pedido, por lo tanto se debe armar la URL utilizando la variable HTTP_HOST. De esta forma funciona para cualquier VirtualHost.


Tal vez pueda interesarte


Compartí este artículo