Apache Module mod_include: Fungsi & Cara Kerja SSI

mod_include adalah modul pada peladen web Apache yang menyediakan fitur Server Side Includes (SSI). Modul ini bertugas memproses direktif khusus yang disisipkan ke dalam dokumen HTML sebelum dikirimkan ke peramban pengguna. SSI umumnya digunakan untuk menyertakan konten dari berkas lain ke dalam satu halaman web, menampilkan variabel lingkungan peladen, atau menjalankan skrip sederhana secara dinamis tanpa memerlukan bahasa pemograman yang kompleks seperti PHP atau Python.

Secara mekanisme, peladen Apache akan memindai berkas HTML untuk mencari pola penanda khusus (seperti <!--#include-->) saat permintaan dari klien diterima. Pemrosesan ini terjadi di tingkat peladen (server-side) sehingga peramban hanya menerima hasil akhir berupa kode HTML standar.

Direktif Utama mod_include

Modul ini menyediakan sejumlah direktif untuk mengatur perilaku pemrosesan SSI pada peladen Apache. Direktif-direktif ini biasanya diletakkan di dalam berkas konfigurasi utama Apache (seperti httpd.conf), berkas virtual host, atau di dalam berkas .htaccess menggunakan blok <Directory> atau <Files>.

Tabel Direktif Utama mod_include
Nama Direktif Deskripsi Fungsi Contoh Penggunaan
AddOutputFilter Mengaktifkan filter output SSI untuk tipe berkas tertentu. AddOutputFilter INCLUDES .shtml
XBithack Mengizinkan peladen memproses SSI pada berkas biasa yang memiliki izin eksekusi (bit x). XBithack on
SSIEndTag Mengubah string penutup untuk penanda SSI (bawaan: -->). SSIEndTag "-->"
SSIStartTag Mengubah string pembuka untuk penanda SSI (bawaan: <!--#). SSIStartTag "<!--#"
SSITimeFmt Mengatur format tampilan tanggal pada perintah SSI waktu. SSITimeFmt "%Y-%m-%d"

Sintaks dan Contoh Penggunaan SSI

Penanda SSI dituliskan di dalam komentar HTML agar tidak tampak pada peramban jika modul tidak aktif atau jika berkas diakses secara langsung. Berikut adalah contoh sintaks elemen SSI yang sering digunakan dalam pengembangan web:

<!--#include virtual="/footer.html" -->
<!--#echo var="DATE_LOCAL" -->
<!--#flastmod file="index.html" -->

Penjelasan elemen di atas:

  • include virtual: Menyertakan konten dari berkas lain berdasarkan jalur virtual pada peladen web.
  • echo var: Menampilkan nilai dari variabel lingkungan tertentu, seperti tanggal lokal atau alamat IP pengunjung.
  • flastmod file: Menampilkan tanggal dan waktu terakhir kali berkas yang ditentukan mengalami modifikasi.

Langkah Konfigurasi mod_include di Apache

Agar modul ini dapat berjalan dengan baik pada peladen Apache, ikuti langkah-langkah teknis berikut:

  1. Pastikan modul include_module telah aktif pada konfigurasi Apache. Anda dapat mengaktifkannya melalui baris perintah pada sistem berbasis Debian/Ubuntu dengan perintah sudo a2enmod include.
  2. Sesuaikan konfigurasi direktori atau berkas virtual host Anda untuk mengizinkan eksekusi SSI dan mengaktifkan filter output. Tambahkan opsi Includes pada direktif Options.
  3. Contoh blok konfigurasi pada berkas virtual host:
<Directory "/var/www/html">
    Options +Includes
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</Directory>
  1. Simpan berkas konfigurasi dan lakukan pengujian sintaks dengan perintah sudo apachectl configtest.
  2. Muat ulang peladen Apache menggunakan perintah sudo systemctl restart apache2 (atau httpd pada sistem berbasis RedHat).
  3. Buat berkas dengan ekstensi .shtml di direktori web Anda, lalu masukkan sintaks SSI untuk menguji hasilnya di peramban.

Keamanan dan Troubleshooting

Penggunaan SSI memerlukan perhatian khusus pada aspek keamanan. Jika direktif dijalankan pada direktori yang dapat diunggah oleh pengguna umum (misalnya direktori unggahan berkas), penyerang berpotensi menyisipkan perintah berbahaya menggunakan elemen <!--#exec-->. Untuk mencegah hal ini, pastikan opsi IncludesNOEXEC digunakan pada direktif Options agar perintah eksekusi sistem dinonaktifkan.

Jika elemen SSI tidak diproses oleh peladen dan hanya muncul sebagai komentar biasa di dalam kode sumber peramban, periksa kembali apakah ekstensi berkas sudah sesuai dengan aturan AddOutputFilter, atau pastikan opsi +Includes telah aktif pada konfigurasi direktori peladen.