Cara Kerja SHTML di Apache & Panduan Implementasi SSI

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 ApacheDirektif / SintaksFungsi Utama
Modul ServerLoadModule include_module modules/mod_include.soMengaktifkan modul pemrosesan SSI di tingkat server.
Handler Tipe FileAddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Memetakan ekstensi .shtml agar dikenali dan difilter oleh modul include.
Opsi DirektoriOptions +IncludesMengizinkan 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

  1. Buka file konfigurasi utama Apache (misalnya httpd.conf atau file konfigurasi VirtualHost Anda).
  2. Pastikan baris LoadModule include_module tidak berada dalam kondisi dikomentari (tidak ada tanda # di depannya).
  3. Tambahkan blok konfigurasi direktori untuk mengaktifkan filter SSI:
<Directory "/var/www/html">
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
  1. Simpan file konfigurasi, lalu lakukan uji sintaks dengan perintah sudo apachectl configtest.
  2. Muat ulang layanan Apache menggunakan perintah sudo systemctl restart apache2 (untuk Ubuntu/Debian) atau sudo 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_include sudah dimuat oleh Apache.
  • Kurang Opsi 'Includes': Periksa konfigurasi direktori Anda, pastikan parameter Options +Includes terpasang dengan benar (bukan Options -Includes).
  • Konflik .htaccess: Jika Anda menggunakan file .htaccess, pastikan konfigurasi AllowOverride di tingkat server utama mengizinkan penggunaan Options dan FileInfo.