Forzar http a https en Apache

Cuando montas una página web en tu servidor, lo primero que te viene a la mente es que bien funciona y que perfección.

Pero …. oh wait.

De repente tu cabeza empieza a dar vueltas al ver que no tiene forzado el certificado de seguridad y se puede acceder por el puerto 80.

Como todo el mundo sabe o debería saber, dejar agujeros en tu pagina web no es nada recomendado y te puede salir caro a la larga..

Aquí os traigo la solución para arreglar este problema y que vuestras mentes estén tranquilas ;).

Hay varias maneras de redirigir el trafico de http a https:

Método Redirect

El método redirect, es fácil con añadir una linea en la configuración de la web.

en el archivo de configuración de la pagina web alojada en /etc/apache/sites-avalaible/paginaweb.conf

<VirtualHost *:80>

ServerName pruebita.es

Redirect permanent / https://pruebita.es/

</VirtualHost>

Método .htaccess utilizando redirect

Este método es simplemente añadir la siguiente linea en el archivo .htacess 

El archivo .htaccess esta en la raíz de vuestra carpeta web.

Redirect permanent / https://pruebita.es/

Método Rewrite 

El método rewrite requiere lo siguiente:

  • Tener habilitado el modulo de rewrite en Apache
    • Se habilita en Ubuntu: sudo a2enmod rewrite 
    • Se habilita en CentOS: nano vi /etc/httpd/conf/httpd.conf y quitamos # a la linea LoadModule rewrite_module modules/mod_rewrite.so

Una vez habilitado añadimos las siguientes lineas:

<VirtualHost *:80>

ServerName pruebita.es

RewriteEngine On

RewriteCond %{HTTPS} !on

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

Método .htaccess con modulo rewrite

El metodo .htacess con modulo rewrite, requiere el modulo activado.

El archivo .htaccess esta en la raíz de vuestra carpeta web.

RewriteEngine On

RewriteCond %{HTTPS} !on

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Método PHP

El método PHP  es una función que nos permite redirigir el trafico de http a https por encima de todos los scripts.

< ?php

function redirectTohttps() {

if($_SERVER[‘HTTPS’]!=”on”) {

$redirect= “https://”.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];

header(“Location:$redirect”); } }

?>

Antes de utilizar cualquiera de estos métodos, aseguraros que funciona correctamente los certificados.. 

Quizás te pueda interesar ya de paso..

Quitar contraseña al certificado SSL

Quitar contraseña al certificado SSL