Redirigir de HTTP a HTTPS (Apache)

Hay dos métodos para redigir una conexión HTTP a HTTPS en un servidor Apache:

1.- Por virtual host

2.- Por expresiones regulares en .htaccess

Redirección por Virtual Host

Si es por virtual host sólo hay que añadir un virtualhost en el puerto 80 que redirija al puerto 443 y el virtual host que se debe administrar es el del puerto 443.

Suponiendo que tenemos el servidor en la dirección 127.0.0.1 y su alias (el nombre del host) es foo.com.local, habría que añadir el siguiente nodo en el archivo de configuración de los virtual hosts (más información de los virtual hosts).

<VirtualHost 127.0.0.1:443>
    ...
</VirtualHost>

<VirtualHost 127.0.0.1:80> 
  ServerName foo.com.local 
  Redirect / https://foo.com.local/ 
</VirtualHost>
Redirección por .htaccess

Se usan expresiones regulares para que reescriba la misma dirección pero usando el protocolo HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Deja una respuesta