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 en LINUX

Quitar contraseña al certificado SSL en LINUX

Comando IT