Codeigniter redireccionar toda la web a SSL

Cómo redireccionar toda la web a SSL mediante Hooks en CodeIgniter 3.

Os indico como redireccionar en una web creada con Codeigniter 3 para que siempra, escriban lo que escriban en la barra de dirección accedan a nuestra web vía https://

Es obvio que interpreto que ya tenéis certificado instalado y funcionando. Lo que vamos a hacer es que aunque escriban http://www.miweb.com, accedan a https://www.miweb.com obligatoriamente.

Vamos a hacerlo mediante hooks. Para ello, hacemos estos tres pasos:

1. Activamos hooks en Codeigniter

Vamos al fichero «application/config/config.php» y cambiamos la linea para activar los hooks:

$config['enable_hooks'] = TRUE;

2. Creamos/modificamos el fichero hooks.php

Vamos al fichero «application/config/hooks.php» y añadimos el siguiente código. Si el fichero no existe, lo creáis.

$hook['post_controller_constructor'][] = array('function' => 'redirect_ssl','filename' => 'ssl.php','filepath' => 'hooks');

3. Creamos el fichero con la función que ejecutará el hook

Creamos el fichero «application/hooks/ssl.php» y añadimos el siguiente contenido:

function redirect_ssl() {
$CI =& get_instance();
$class = $CI->router->fetch_class();
$exclude = array('client'); // add more controller name to exclude ssl.
if(!in_array($class,$exclude)) {
// redirecting to ssl.
$CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
}
else {
// redirecting with no ssl.
$CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
}
}

De esta manera, obligamos a navegar siempre con https://

Lo he probado y funciona correctamente en mi servidor. Y recordad que es para la versión 3.X de CodeIgniter. La otra opción, y es la que utilizamos mucho, es redireccionar con el fichero .htacces que es mucho más sencillo y claro. Eso si, para servidores Apache.

Espero que os sea de utilidad este artículo de cómo redireccionar toda la web a SSL mediante Hooks en CodeIgniter 3


Más información