Hướng dẫn Redirect SSL trong Codeigniter

Với các website sử dụng SSL (https) thì việc Redirect từ http sang https rất quan trọng. Nó sẽ giúp tránh được những lỗi vỡ giao diện khi người dùng truy cập vào website http.
Nhiều bạn làm chỉ cần đổi base_url
thành dạng https là xong. Nếu làm như vậy thì đang thiếu 1 bước nữa rất quan trọng. Nếu người dùng vào http thì website không tự động chuyển qua https
Hôm nay tôi sẽ hướng dẫn các bạn cách Redirect sang https trong Codeigniter Framework.
Cách phổ biến nhất để Redirect là dùng .htaccess. Nhưng hôm nay tôi sẽ hướng dẫn các bạn sử dụng HOOK của Codeigniter.
Các bước thực hiện
Bước 01: Đổi base_url
thành dạng https
Mở file application/config/config.php
và thay thế tham số: $config['base_url']
thành dạng domain có https
Ví dụ:
$config['base_url'] = 'https://hoangan.unicode.vn';
Bước 02: Kích hoạt sử dụng HOOK
Mở file application/config/config.php
và chuyển $config['enable_hooks']
thành TRUE
Cụ thể như sau:
$config['enable_hooks'] = TRUE;
Bước 03: Khai báo HOOK
Mở file application/config/hooks.php
và thêm vào đoạn code sau:
$hook['post_controller_constructor'][] = array( 'function' => 'redirect_ssl', 'filename' => 'ssl.php', 'filepath' => 'hooks' );
Bước 04: Viết hàm thực thi HOOK
Vào thư mục: application/hooks
tạo file ssl.php
và thêm vào đoạn code sau:
<?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()); } } ?>
Cuối cùng bạn chỉ cần lưu các file lại và tận hưởng thành công!