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
Muchas gracias por compartir tus conocimientos, ha funcionado a la primera.
eres un crack.
Saludos he hecho los cambios pero ahora me da el error que no tengo acceso a este sitio, alguna idea de que puedo hacer ?
Hola Renny,
este artículo es de 2015. Te recomiendo que vuelvas a recuperar los ficheros originales de los que has modificados, y que obligues al acceso https con el fichero .htacces
debes buscar cómo redireccionar tu web a https con el fichero .htaccess
Aquí tienes un avance:
https://blog.trescomatres.com/2016/03/htaccess-redireccion-de-http-a-https/
Excelente bro, Muchas gracias, me funciono en la ultima versión de Codeingiter 3.1.6
Genial. Muchas gracias