SHTML adalah ekstensi file untuk halaman web yang memanfaatkan Server Side Includes (SSI), sebuah instruksi direktif sederhana yang dieksekusi oleh web server Apache sebelum halaman dikirimkan ke peramban pengguna. Cara kerja utamanya melibatkan pemindaian file ber-ekstensi .shtml oleh modul Apache, yang kemudian memproses perintah khusus di dalam komentar HTML (seperti menyertakan file navigasi atau footer) dan merusaknya menjadi dokumen HTML murni secara on-the-fly.
Apache menangani file SHTML melalui modul inti bernama mod_include. Ketika klien meminta file .shtml, Apache tidak langsung mengirimkannya mentah-mentah. Server membaca isi file tersebut baris demi baris, mencari pola sintaks SSI tertentu, mengeksekusi instruksi yang ditemukan (misalnya mengambil tanggal hari ini atau menyisipkan file header.html), lalu menyatukannya ke dalam respons HTTP akhir.
Prasyarat Konfigurasi Apache untuk SHTML
Agar Apache dapat memproses file SHTML dengan benar, modul mod_include harus aktif dan direktif konfigurasi pada virtual host atau file .htaccess harus mengizinkan eksekusi SSI melalui opsi Includes.
| Komponen Apache | Direktif / Sintaks | Fungsi Utama |
|---|---|---|
| Modul Server | LoadModule include_module modules/mod_include.so | Mengaktifkan modul pemrosesan SSI di tingkat server. |
| Handler Tipe File | AddType text/html .shtmlAddOutputFilter INCLUDES .shtml | Memetakan ekstensi .shtml agar dikenali dan difilter oleh modul include. |
| Opsi Direktori | Options +Includes | Mengizinkan server menjalankan perintah SSI di dalam direktori terkait. |
Contoh Implementasi Sintaks SSI dalam File SHTML
Perintah SSI ditulis di dalam komentar HTML standar dengan awalan <!--# dan diakhiri dengan -->. Berikut adalah contoh kode struktur file index.shtml yang menerapkan penyisipan file eksternal dan menampilkan tanggal modifikasi file.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Contoh SHTML Apache</title>
</head>
<body>
<!--#include virtual="/header.html" -->
<main>
<h1>Selamat Datang di Situs Kami</h1>
<p>Halaman ini diproses menggunakan Server Side Includes.</p>
<p>Terakhir diperbarui: <!--#flastmod file="index.shtml" --></p>
</main>
<!--#include virtual="/footer.html" -->
</body>
</html>Langkah-Langkah Mengaktifkan SHTML di Apache
- Buka file konfigurasi utama Apache (misalnya
httpd.confatau file konfigurasi VirtualHost Anda). - Pastikan baris
LoadModule include_moduletidak berada dalam kondisi dikomentari (tidak ada tanda#di depannya). - Tambahkan blok konfigurasi direktori untuk mengaktifkan filter SSI:
<Directory "/var/www/html">
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>- Simpan file konfigurasi, lalu lakukan uji sintaks dengan perintah
sudo apachectl configtest. - Muat ulang layanan Apache menggunakan perintah
sudo systemctl restart apache2(untuk Ubuntu/Debian) atausudo systemctl restart httpd(untuk CentOS/RHEL).
Troubleshooting Masalah Umum SHTML
Jika file SHTML Anda hanya menampilkan teks kosong atau perintah SSI muncul mentah-mentah di peramban tanpa dieksekusi, periksa beberapa hal berikut:
- Modul Belum Aktif: Pastikan
mod_includesudah dimuat oleh Apache. - Kurang Opsi 'Includes': Periksa konfigurasi direktori Anda, pastikan parameter
Options +Includesterpasang dengan benar (bukanOptions -Includes). - Konflik .htaccess: Jika Anda menggunakan file
.htaccess, pastikan konfigurasiAllowOverridedi tingkat server utama mengizinkan penggunaanOptionsdanFileInfo.