Codeigniter redireccionar toda la web a SSL

Os indico como redireccionar en una web creada con Codeigniter 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:

1
$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.

1
$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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 correctament.

Fuente información

Artículos relacionados

Frameworks para php Cuando hay que crear proyectos serios hay que recurrir a un Framework que lo apoye. La palabra seriedad la aplico a proyectos medianos-grandes que nec...
CodeIgniter – Generar imagen con librería GD... Estamos delante de un caso muy común: debemos crear una imagen, formato jpg o png, dinámica y que contenga datos dinámicos. Imaginemos que debemos mos...
CodeIgniter – Llamar un modelo o librería de... Hay ocasiones que para ahorrar código, necesitaremos llamar a nuestros modelos directamente desde una vista sin pasar por los controladores. Supong...
CodeIgniter – No mostrar errores en producci... Vayamos por partes y rápido, que ni tu tienes ganas de leer, ni yo de escribir un libro. Esto complementaría otros post al respecto: Errores PHP ...

5 comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*