How to redirect http to https in codeigniter How to redirect http to https in codeigniter codeigniter codeigniter

How to redirect http to https in codeigniter


Please Check this may help

Config changes :- Go to “application/config/config.php” and enable or set hooks to true.

$config['enable_hooks'] = TRUE;

create a new file named hooks.php in “application/config/hooks.php” and add below code in hooks.php:-

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

Now create a new directory with named “hooks” under application directory and then create new file named “ssl.php” in “application/hooks/ssl.php”and add below code to “ssl.php” :-

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());    }}


I tried above all ones but they did not work properly in my case. I found below solution, it works in my case. I hope it will be helpful for you as well.

RewriteEngine onRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]RewriteCond $1 !^(index\.php|resources|robots\.txt|public)RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?/$1 [QSA,L]


Now I got a solution,I updated my htaccess file.--

RewriteEngine OnRewriteCond %{HTTPS} off [OR]RewriteCond %{HTTP_HOST} !^www\. [OR]RewriteCond %{HTTP_HOST} ^myhost\.com$ [NC]RewriteRule ^ https://www.myhost.com%{REQUEST_URI} [R=301,L,NE]RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ RewriteRule ^index\.php(/(.*))?$ myhost.com/$2 [R=301,L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L]

Now, It worked for me smoothly.. :)