Cara Force HTTP ke HTTPS di CodeIgniter – Dalam pengembangan dan penggunaan suatu website yang diletakan ke dalam hosting sudah hal wajar jika melakukan instalasi SSL secara manual atau bahkan sudah include oleh penyedia jasa hosting yang diberikan secara gratis. SSL (Secure Sockets Layer) adalah suatu jenis keamaan digital dimana komunikasi antara website dengan web browser dienkripsi untuk melindungi pengunjung website dari serangan cyber atau pihak yang tidak bertanggung jawab. Sebagai tanda jika suatu website sudah terpasang atau memiliki sertifikat SSL adalah berubahnya HTTP menjadi HTTPS pada suatu URL website. Sebagai ilustrasi dapat dilihat pada gambar dibawah ini.

URL website sudah menjadi HTTPS. Sumber gambar: hostiner.co.id

Pada gambar diatas URL website adalah https://www.example.org, maksudnya adalah website tersebut sudah memiliki sertifikat SSL dan URL sudah berubah dari HTTP menjadi HTTPS yang menandakan website tersebut sudah aman atau secure. Untuk lebih mudahnya dapat dilihat pada address bar web browser akan menampilkan ikon gembok warna hijau tepat disamping URL website.

URL website belum menjadi HTTPS. Sumber gambar: hostinger.co.id

Pada gambar diatas URL website adalah www.example.org dan terdapat tulisan “Not Secure” disamping URL website. Artinya adalah website tersebut belum ter-redirect ke HTTPS atau bisa saja belum memiliki sertifikat SSL.

Jika hosting yang digunakan otomatis memasang SSL pada suatu website namun belum ter-redirect ke HTTPS maka diperlukan konfigurasi tambahan dalam website tersebut. Dalam artikel ini akan membahas bagaimana cara force atau redirect dari HTTP menjadi HTTPS di CodeIgniter. Pembahasan ini memiliki dua cara untuk redirect ke HTTPS yaitu dengan cara konfigurasi .htaccess dan fitur hooks yang disediakan oleh CodeIgniter.

Konfigurasi menggunakan .htaccess

.htaccess adalah suatu file extensions tanpa nama yang disimpan dalam root directory yang akan berdampak pada folder dan subfolder yang berfungsi untuk konfigurasi akses website seperti URL redirection, URL shortening, access control pada halaman website dan file, dll. Sebagai contoh penggunaan .htaccess dalam CodeIgniter adalah untuk menghilangkan index.php pada URL. Untuk tutorialnya dapat dilihat pada artikel Cara Menghilangkan index.php di CodeIgniter. Untuk membuat URL otomatis menjadi HTTPS cukup ditambahkan dua baris dibawah ini pada file .htaccess.

RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Konfigurasi menggunakan hooks

Hooks merupakan salah satu fitur yang terdapat dalam CodeIgniter dimana fungsinya adalah menyediakan sarana untuk memanfaatkan dan memodifikasi cara kerja suatu project yang telah dibuat tanpa harus mengubah script file inti (hacking the core files). Dalam konfigurasi redirect ke HTTPS menggunakan hooks harus menambahkan beberapa files dan menambahkan konfigurasi tambahan, antara lain:

1. Buat file ssl.php yang disimpan dalam folder application\hooks\ dimana code untuk file tersebut ada dibawah ini

<?php

  function redirect_ssl() {
    $CI =& get_instance();
    $class = $CI->router->fetch_class();
    $exclude =  array(' '); // memasukkan nama controller yang tidak diset SSL
    if(!in_array($class,$exclude)) {
      // redirect ke SSL (HTTP ke HTTPS)
      $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 {
      // redirect tanpa SSL (HTTPS ke HTTP)
      $CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
      if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
    }
  }
  
?>

2. Langkah selanjutnya adalah merubah konfigurasi hooks.php yang terdapat dalam folder application\config\. Tambahkan code dibawah ini pada file hooks.php

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

3. Langkah terakhir adalah mengaktifkan fungsi hooks yang terdapat dalam file config.php yang disimpan dalam folder application\config\. Untuk mengaktifkannya cari $config[‘enable_hooks’] = FALSE lalu value FALSE diubah menjadi TRUE karena secara default fitur ini tidak diaktifkan oleh CodeIgniter.

$config['enable_hooks'] = TRUE;

Itu tadi dua cara untuk redirect dari HTTP ke HTTPS di Codeigniter menggunakan konfigurasi .htaccess dan konfigurasi hooks. Sebagai contoh hasilnya nanti jika menuliskan URL http://www.example.org akan berubah secara otomatis menjadi https://www.example.org

Happy Coding ^-^