Apache HTTP server adalah salah satu server web paling populer di dunia. Ini adalah server HTTP open-source dan lintas-platform yang mendukung sebagian besar situs web Internet. Apache menyediakan banyak fitur canggih yang dapat diperluas melalui modul tambahan.

Jika Anda adalah pemilik situs web atau administrator sistem, kemungkinan Anda berurusan dengan Apache secara teratur. Salah satu tugas paling umum yang kemungkinan akan Anda lakukan adalah mengarahkan lalu lintas HTTP ke versi situs web (HTTPS) yang aman.

Keuntungan Menggunakan HTTPS.

Tidak seperti HTTP, di mana permintaan dan respons dikirim dan dikembalikan dalam plaintext, HTTPS menggunakan TLS / SSL untuk mengenkripsi komunikasi antara klien dan server.

Ada banyak keuntungan menggunakan HTTPS daripada HTTP, seperti:

  • Semua data dienkripsi di kedua arah. Hasilnya, informasi sensitif tidak dapat dibaca jika disadap.
  • Google Chrome dan semua browser populer lainnya akan menandai situs web Anda sebagai aman.
  • HTTPS memungkinkan Anda untuk menggunakan protokol HTTP/2, yang secara signifikan meningkatkan kinerja situs.
  • Google menyukai situs web HTTPS. Situs Anda akan peringkat lebih baik jika dilayani melalui HTTPS.

Panduan ini mencakup cara redirect lalu lintas HTTP ke HTTPS di Apache.

Cara Redirect HTTP ke HTTPS di Apache.

Ada beberapa cara untuk redirect ke HTTPS di Apache. Jika Anda memiliki akses root ke server Linux tempat Apache berjalan, cara yang lebih mudah adalah mengatur redirect dalam file konfigurasi virtual host domain. Jika tidak, Anda dapat mengatur redirect dalam file .htaccess domain.

Beberapa control panel, seperti cPanel memungkinkan Anda untuk memaksa pengalihan HTTPS dengan hanya beberapa klik mouse saja.

Redirect HTTP ke HTTPS menggunakan Virtual Host

Apache Virtual Host mendefinisikan pengaturan untuk satu atau lebih domain yang dihosting di server. Dalam arahan virtual host, Anda dapat menentukan root dokumen situs (direktori yang berisi file situs web), membuat kebijakan keamanan terpisah untuk setiap situs, menggunakan sertifikat SSL yang berbeda, mengkonfigurasi redirection, dan banyak lagi.

Biasanya ketika sertifikat SSL diinstal pada domain, Anda akan memiliki dua directives virtual host untuk domain tersebut. Pertama untuk versi HTTP situs pada port 80, dan yang lainnya untuk versi HTTPS pada port 443.

Dalam distro berbasis Red-Hat seperti CentOS dan Fedora, file host virtual disimpan di /etc/httpd/conf.d. Sementara di Debian dan turunannya seperti Ubuntu, file disimpan di direktori /etc/apache2/sites-available.

Untuk redirect situs web ke HTTPS, gunakan arahan Redirect seperti yang ditunjukkan pada contoh di bawah ini:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http:/1.1

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

Mari kami jelaskan kodenya. Kita menggunakan memiliki dua arahan virtual host, satu untuk HTTP dan satu untuk versi HTTPS.

  • VirtualHost *:80 – Server Apache listens koneksi masuk pada port 80 (HTTP) untuk domain yang ditentukan.
  • VirtualHost *:443 – Server Apache listens koneksi masuk pada port 443 (HTTPS) untuk domain yang ditentukan.

Arahan ServerName dan ServerAlias ​​menentukan nama domain host virtual. Pastikan Anda menggantinya dengan nama domain Anda.

Baris yang disorot, Redirect permanen / https://example.com/ di dalam virtual host HTTP, mengalihkan lalu lintas situs ke versi HTTPS.

Biasanya Anda juga ingin mengarahkan versi situs HTTPS www ke non-www atau sebaliknya. Berikut ini contoh konfigurasi:

<VirtualHost *:80> 
  ServerName example.com
  ServerAlias www.example.com

  Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com

  Protocols h2 http:/1.1

  <If "%{HTTP_HOST} == 'www.example.com'">
    Redirect permanent / https://example.com/
  </If>

  # SSL Configuration

  # Other Apache Configuration

</VirtualHost>

Kode di dalam HTTPS virtual host (garis yang disorot) akan memeriksa apakah resquest header berisi domain www dan mengalihkan ke versi non-www.

Setiap kali Anda membuat perubahan pada file konfigurasi Anda perlu me-restart atau restart layanan Apache agar perubahan diterapkan:

  • Debian dan Ubuntu:
    sudo systemctl reload apache2
  • CentOS dan Fedora:
    sudo systemctl reload httpd

Redirect HTTP ke HTTPS menggunakan .htaccess

.htaccess adalah file konfigurasi berdasarkan per direktori untuk web server Apache. File ini dapat digunakan untuk menentukan bagaimana Apache menyajikan file dari direktori tempat file tersebut ditempatkan dan untuk mengaktifkan / menonaktifkan fitur tambahan.

Biasanya, file .htaccess ditempatkan di direktori root domain, tetapi Anda dapat memiliki file .htaccess lainnya di subdirektori.

Metode ini membutuhkan modul mod_rewrite untuk dimuat di server Apache. Modul ini dimuat secara default di sebagian besar server. Jika memungkinkan, lebih baik membuat pengalihan di virtual host karena lebih sederhana dan lebih aman.

Untuk mengalihkan semua lalu lintas HTTP ke HTTPS, buka file root .htaccess, dan tambahkan kode berikut ke dalamnya:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Mari kita uraikan satu persatu tentang kode di atas:

  • RewriteEngine On – mengaktifkan kemampuan Rewrite.
  • RewriteCond %{HTTPS} off – memeriksa koneksi HTTP, dan jika kondisinya terpenuhi, baris berikutnya dijalankan.
  • RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] – redirect HTTP ke HTTPS dengan status kode 301 (Dipindahkan Secara Permanen). Pastikan Anda mengubah nama domain.

Contoh di bawah ini memiliki kondisi tambahan yang memeriksa apakah permintaan dimulai dengan www. Gunakan itu untuk memaksa semua pengunjung untuk menggunakan HTTPS versi non-www dari situs:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Saat mengedit file .htaccess, Anda tidak perlu me-restart server, karena Apache membaca file pada setiap kali ada request.

Kesimpulan

Di Apache, cara yang lebih disukai untuk redirect HTTP ke HTTPS adalah mengonfigurasi 301 redirect di virtual host domain.