Cara Mengaktifkan Server Side Includes (SSI) via .htaccess

Fungsi Options +Includes dalam .htaccess

Direktif Options +Includes dalam file .htaccess digunakan untuk mengaktifkan fitur Server Side Includes (SSI) pada server web Apache. SSI memungkinkan Anda menyisipkan konten dinamis (seperti tanggal, file lain, atau output skrip) ke dalam file HTML statis sebelum dikirim ke browser pengunjung. Tanpa mengaktifkan opsi ini, server akan mengabaikan perintah SSI dan menampilkannya sebagai teks biasa.

Sintaks Implementasi

Untuk mengaktifkan SSI, tambahkan baris berikut ke dalam file .htaccess di direktori root atau folder spesifik Anda:

Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Penjelasan teknis: AddType dan AddOutputFilter diperlukan agar server mengenali file dengan ekstensi .shtml sebagai file yang harus diproses oleh mesin SSI.

Tabel Konfigurasi SSI

DirektifFungsi
Options +IncludesMengaktifkan pemrosesan SSI di direktori tersebut.
Options +IncludesNOEXECMengaktifkan SSI tetapi melarang perintah eksekusi skrip (lebih aman).
AddType text/html .shtmlMemberitahu server bahwa file .shtml adalah dokumen HTML.
AddOutputFilter INCLUDES .shtmlMemerintahkan server untuk memproses filter SSI pada file .shtml.

Langkah Implementasi dan Troubleshooting

  1. Pastikan modul mod_include telah aktif di server Apache Anda.
  2. Buat file dengan ekstensi .shtml (misalnya: index.shtml).
  3. Masukkan kode SSI, contoh: <!--#include virtual="header.html" -->.
  4. Jika muncul error 500, periksa apakah penyedia hosting Anda mengizinkan penggunaan Options di .htaccess melalui file httpd.conf atau apache2.conf.
  5. Gunakan Options +IncludesNOEXEC jika Anda hanya ingin menyisipkan file tanpa menjalankan perintah sistem (seperti exec) untuk alasan keamanan.

Keamanan SSI

Penggunaan Options +Includes secara sembarangan dapat membuka celah keamanan. Jika server dikonfigurasi untuk mengizinkan eksekusi perintah sistem (exec), penyerang dapat menjalankan perintah shell melalui file yang disisipkan. Selalu gunakan IncludesNOEXEC jika fitur eksekusi perintah tidak diperlukan.