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>.
| 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:
- Pastikan modul
include_moduletelah aktif pada konfigurasi Apache. Anda dapat mengaktifkannya melalui baris perintah pada sistem berbasis Debian/Ubuntu dengan perintahsudo a2enmod include. - Sesuaikan konfigurasi direktori atau berkas virtual host Anda untuk mengizinkan eksekusi SSI dan mengaktifkan filter output. Tambahkan opsi
Includespada direktifOptions. - Contoh blok konfigurasi pada berkas virtual host:
<Directory "/var/www/html">
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
- Simpan berkas konfigurasi dan lakukan pengujian sintaks dengan perintah
sudo apachectl configtest. - Muat ulang peladen Apache menggunakan perintah
sudo systemctl restart apache2(atauhttpdpada sistem berbasis RedHat). - Buat berkas dengan ekstensi
.shtmldi 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.