mod_include adalah modul Apache HTTP Server yang menyediakan fitur Server-Side Includes (SSI), sebuah mekanisme direktif berbasis teks yang dieksekusi di sisi server sebelum halaman web dikirimkan ke peramban klien. Konfigurasi modul ini melibatkan pengaktifan modul, penentuan ekstensi berkas handler (seperti .shtml), serta pengaturan izin eksekusi perintah sistem agar situs tetap aman dari celah injeksi.
Untuk mengimplementasikan mod_include secara optimal pada peladen web Apache, administrator sistem wajib memahami direktif inti seperti AddType, AddHandler, dan opsi Includes pada blok direktori konfigurasi utama (httpd.conf atau berkas virtual host).
Langkah Pengaktifan dan Konfigurasi Dasar
Sebelum menggunakan direktif SSI di dalam dokumen HTML, pastikan modul mod_include telah dimuat oleh Apache. Pada sistem berbasis Debian/Ubuntu, pengaktifan dilakukan melalui utilitas manajemen modul:
sudo a2enmod include
sudo systemctl restart apache2
Setelah modul aktif, konfigurasi direktori pada berkas httpd.conf atau berkas konfigurasi VirtualHost perlu disesuaikan untuk mengizinkan pemrosesan SSI dan mendefinisikan penanganan ekstensi berkas:
<Directory "/var/www/html">
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
Tabel Direktif Konfigurasi Utama mod_include
| Direktif / Opsi | Fungsi Utama | Contoh Penggunaan |
|---|---|---|
+Includes |
Mengizinkan pemrosesan Server-Side Includes pada direktori terkait. | Options +Includes |
+IncludesNOEXEC |
Mengaktifkan SSI tetapi melarang direktif #exec (aman untuk lingkungan bersama). |
Options +IncludesNOEXEC |
AddType |
Menetapkan tipe MIME untuk ekstensi berkas tertentu agar diproses Apache. | AddType text/html .shtml |
AddOutputFilter |
Memasang filter output untuk memindai tag SSI pada ekstensi berkas tertentu. | AddOutputFilter INCLUDES .html |
Sintaks Dasar SSI dalam Dokumen HTML
Setelah konfigurasi peladen selesai, dokumen yang menggunakan ekstensi .shtml dapat memuat direktif SSI dengan format komentar khusus Apache. Direktif ini diproses sebelum dokumen dirender oleh peramban.
<!--#include virtual="/header.html" -->
<p>Konten utama halaman web berjalan di sini.</p>
<!--#include virtual="/footer.html" -->
Selain menyertakan berkas statis, mod_include mendukung penampilan variabel lingkungan dan tanggal modifikasi berkas:
<p>Tanggal modifikasi dokumen ini: <!--#flastmod file="index.shtml" --></p>
<p>Alamat IP pengunjung: <!--#echo var="REMOTE_ADDR" --></p>
Troubleshooting dan Pengamanan Konfigurasi
Kesalahan umum yang sering terjadi saat mengonfigurasi mod_include adalah dokumen tetap menampilkan teks mentah <!--#include...--> tanpa memprosesnya. Hal ini disebabkan oleh beberapa faktor teknis:
- Ekstensi Berkas Belum Terdaftar: Pastikan peladen dikonfigurasi untuk memindai ekstensi berkas yang digunakan (misalnya
.htmlatau.shtml). Jika menggunakan.html, tambahkanAddOutputFilter INCLUDES .html. - Override Dinonaktifkan: Periksa direktif
AllowOverridepada direktori utama. Jika bernilaiNone, berkas.htaccesslokal tidak akan dapat mengaktifkan opsi+Includes. - Risiko Keamanan Eksekusi Perintah: Hindari penggunaan opsi
+Includestanpa pembatasan pada peladen publik bersama, karena direktif<!--#exec cmd="..." -->dapat dimanfaatkan pihak tak bertanggung jawab untuk menjalankan perintah sistem operasi secara langsung. Gunakan+IncludesNOEXECsebagai standar mitigasi.