Server Side Includes (SSI) adalah bahasa skrip sisi server sederhana yang digunakan untuk menyisipkan isi suatu file ke dalam file HTML lain sebelum disajikan ke peramban pengguna. File yang menggunakan mekanisme ini umumnya memiliki ekstensi .shtml atau .shtm. Ketika permintaan masuk, web server seperti Apache atau NGINX memindai direktif khusus di dalam file tersebut, menggabungkan konten yang dimaksud (seperti header, footer, atau tanggal), lalu mengirimkan hasilnya yang sudah utuh ke klien.
Mekanisme ini sangat efisien untuk situs web statis berukuran menengah yang memerlukan modularitas tanpa harus mengimplementasikan bahasa pemrograman sisi server yang kompleks seperti PHP, Python, atau Node.js. Dengan SSI, pengembang cukup mengubah satu file penampung (misalnya footer.html), dan perubahan tersebut akan otomatis memengaruhi seluruh halaman .shtml yang memuatnya.
Sintaks Dasar Direktif SSI
SSI bekerja dengan membaca instruksi khusus yang ditulis di dalam komentar HTML standar. Format dasar direktif SSI adalah:
<!--#command parameter="value" -->
Spasi setelah tanda seru dan sebelum tanda penutup sangat krusial agar web server mengenali kode tersebut sebagai perintah SSI, bukan sekadar komentar HTML biasa.
Tabel Perintah Utama Server Side Includes (SSI)
| Perintah SSI | Fungsi Utama | Contoh Penggunaan |
|---|---|---|
#include |
Menyisipkan isi file lain (seperti navigasi atau footer). | <!--#include virtual="/includes/header.html" --> |
#echo |
Menampilkan variabel lingkungan server atau dokumen. | <!--#echo var="DATE_LOCAL" --> |
#flastmod |
Menampilkan tanggal modifikasi terakhir dari suatu file. | <!--#flastmod virtual="index.shtml" --> |
#fsize |
Menampilkan ukuran file tertentu. | <!--#fsize virtual="download.zip" --> |
#set |
Menetapkan nilai ke variabel yang ditentukan pengguna. | <!--#set var="title" value="Profil Perusahaan" --> |
Langkah-Langkah Implementasi SSI di Web Server
Agar file .shtml dapat diproses dengan benar oleh server, beberapa konfigurasi dasar harus dipastikan aktif pada lingkungan server web Anda.
1. Mengaktifkan Modul SSI di Apache
Pada peladen web Apache, modul include harus dimuat. Anda dapat mengaktifkannya melalui terminal Linux dengan perintah:
sudo a2enmod include
sudo systemctl restart apache2
2. Konfigurasi Handler untuk Ekstensi .SHTML
Tambahkan baris konfigurasi berikut ke dalam berkas httpd.conf atau berkas .htaccess di direktori akar web Anda agar peladen mengenali dan memproses direktif SSI pada file dengan ekstensi .shtml:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
3. Menulis File SHTML Pertama
Buat sebuah file bernama index.shtml dan masukkan kode berikut untuk menguji penyisipan komponen luar:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Contoh Halaman SHTML<ΡΠΊΡΡ/title>
</head>
<body>
<!--#include virtual="header.html" -->
<main>
<h1>Selamat Datang di Situs Kami</h1>
<p>Halaman ini diperbarui terakhir pada: <!--#flastmod virtual="index.shtml" --></p>
</main>
<!--#include virtual="footer.html" -->
</body>
</html>
Kelebihan dan Kekurangan Penggunaan SSI
Meskipun kalah populer dibandingkan kerangka kerja modern atau sistem manajemen konten (CMS), SSI tetap memiliki tempat khusus karena karakteristik kinerjanya yang unik.
- Kecepatan Eksekusi: Karena tidak melibatkan penguraian basis data (database query) atau bahasa pemrosesan yang berat, beban CPU server sangat rendah.
- Kesederhanaan: Tidak membutuhkan instalasi dependensi atau pustaka tambahan yang rumit.
- Keterbatasan Fungsionalitas: Tidak mendukung logika percabangan yang rumit, manajemen sesi pengguna, atau pengelolaan basis data relasional.
- Keamanan: Penggunaan perintah
#execuntuk menjalankan skrip sistem eksternal dapat menimbulkan celah keamanan jika tidak dibatasi dengan ketat oleh administrator server.
Penyelesaian Masalah (Troubleshooting) Umum
Jika file .shtml Anda menampilkan teks direktif secara mentah (artinya kode <!--#include ... --> muncul di peramban tanpa diproses), periksa dua hal utama berikut: pastikan direktif Options +Includes sudah diaktifkan di konfigurasi peladen, dan pastikan peladen web Anda memang membaca ekstensi file tersebut melalui handler yang tepat.