Apache SSI Module, yang secara resmi dikenal sebagai mod_include, adalah modul filter pada peladen web Apache yang menyisipkan teks atau hasil eksekusi program ke dalam berkas web sebelum dikirimkan ke peramban. Modul ini memungkinkan pengembang web untuk menyertakan konten modular—seperti templat header, footer, tanggal waktu, atau variabel lingkungan server—tanpa harus memuat ulang seluruh kode HTML dari awal.
Secara teknis, modul ini memindai berkas yang memiliki ekstensi khusus (biasanya .shtml, .shtm, atau .stm) untuk mencari sintaks khusus bernama SSI elements berformat SGML. Ketika ditemukan, peladen mengevaluasi instruksi tersebut secara langsung (on-the-fly) sebelum merender hasilnya ke pengguna akhir.
Direktif Utama dan Sintaks SSI
Sintaks dasar SSI menggunakan format komentar HTML khusus agar tidak merusak tampilan visual jika dibaca mentah. Format umumnya adalah <!--#element attribute="value" -->. Berikut adalah tabel direktif esensial yang paling sering digunakan dalam pengembangan web berbasis Apache SSI:
| Elemen SSI | Atribut Utama | Fungsi dan Kegunaan |
|---|---|---|
#include |
file, virtual |
Menyisipkan isi berkas eksternal (seperti navigasi atau footer) ke dalam dokumen saat ini. |
#echo |
var |
Menampilkan nilai dari variabel lingkungan server (misalnya tanggal, alamat IP klien). |
#flastmod |
file, virtual |
Menampilkan tanggal dan waktu modifikasi terakhir dari suatu berkas tertentu. |
#fsize |
file, virtual |
Menampilkan ukuran berkas dalam bita, kilobita, atau megabita. |
#set |
var, value |
Mendefinisikan variabel kustom baru yang dapat digunakan kembali dalam dokumen yang sama. |
#if / #elif / #else / #endif |
expr |
Membuat percabangan bersyarat untuk menampilkan konten dinamis berdasarkan ekspresi tertentu. |
Cara Mengaktifkan mod_include di Apache
Secara default, modul mod_include mungkin belum aktif sepenuhnya atau belum diizinkan untuk memproses berkas HTML di direktori penayangan Anda. Ikuti langkah-langkah teknis berikut untuk mengaktifkan dan mengonfigurasinya pada peladen berbasis Linux (Ubuntu/Debian):
- Aktifkan Modul: Jalankan perintah terminal untuk mengaktifkan modul
includepada Apache:sudo a2enmod include - Ubah Konfigurasi Virtual Host: Buka berkas konfigurasi situs Anda (misalnya
/etc/apache2/sites-available/000-default.confatau berkas.confdomain Anda), lalu tambahkan opsiIncludespada direktifOptionsdirektori web utama:<Directory /var/www/html> Options Indexes FollowSymLinks Includes AllowOverride All Require all granted </Directory> - Atur Handler Ekstensi Berkas: Pastikan Apache mengenali ekstensi berkas SSI dengan menambahkan baris berikut di dalam blok konfigurasi atau melalui berkas
.htaccess:AddType text/html .shtml AddOutputFilter INCLUDES .shtml - Muat Ulang Peladen Apache: Terapkan perubahan konfigurasi dengan memulai ulang layanan Apache:
sudo systemctl restart apache2
Contoh Penerapan Nyata
Berikut adalah contoh kode implementasi sederhana menggunakan #include untuk menyertakan komponen header terpisah serta menampilkan tanggal modifikasi terakhir berkas:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Contoh Halaman SSI</title>
</head>
<body>
<!-- Menyisipkan berkas header eksternal -->
<!--#include virtual="/includes/header.html" -->
<main>
<h1>Selamat Datang di Situs Web Kami</h1>
<p>Halaman ini menggunakan modul Apache SSI untuk pengelolaan konten modular.</p>
<p>Dokumen ini terakhir diperbarui pada: <!--#flastmod file="index.shtml" --></p>
</main>
<!-- Menyisipkan berkas footer eksternal -->
<!--#include virtual="/includes/footer.html" -->
</body>
</html>
Troubleshooting dan Keamanan
Penggunaan SSI yang tidak dibatasi dapat menimbulkan celah keamanan, terutama jika pengguna dapat mengunggah berkas dengan ekstensi .shtml yang berisi perintah sistem berbahaya (seperti penggunaan #exec). Oleh karena itu, ikuti panduan keamanan berikut:
- Nonaktifkan Perintah Exec: Secara default pada banyak distribusi modern, modul
IncludesNoExecdigunakan agar direktif<!--#exec -->dinonaktifkan demi mencegah eksekusi perintah cangkang (shell command) dari jarak jauh. - Periksa Log Kesalahan: Jika halaman SSI menampilkan pesan kesalahan server atau teks kosong, periksa log error Apache (biasanya terletak di
/var/log/apache2/error.log) untuk mendeteksi masalah izin akses berkas atau kesalahan sintaks direktif.