Mengonfigurasi Apache VirtualHost agar dapat mengeksekusi file dengan ekstensi .shtml (Server Side Includes) memerlukan pengaktifan modul include_module serta penambahan direktif Includes pada blok konfigurasi direktori VirtualHost. Tanpa konfigurasi ini, file SHTML hanya akan dibaca sebagai file HTML biasa dan perintah SSI seperti #include tidak akan diproses oleh server.
Secara default, server web Apache menonaktifkan eksekusi Server Side Includes demi alasan keamanan dan performa. Oleh karena itu, administrator sistem harus secara eksplisit mengizinkan handler dan opsi eksekusi SSI di dalam file konfigurasi VirtualHost atau file .htaccess pada direktori web root.
Langkah Konfigurasi VirtualHost Apache untuk SHTML
Pastikan modul SSI telah aktif di lingkungan server Apache Anda. Pada sistem berbasis Ubuntu/Debian, aktifkan modul menggunakan perintah terminal:
sudo a2enmod include
sudo systemctl restart apache2
Berikut adalah contoh blok konfigurasi VirtualHost standar pada file konfigurasi Apache (biasanya terletak di /etc/apache2/sites-available/000-default.conf atau direktori konfigurasi virtual host Anda):
<VirtualHost *:80>
ServerName contoh.local
DocumentRoot /var/www/html/contoh
<Directory /var/www/html/contoh>
Options Indexes FollowSymLinks Includes
AllowOverride All
Require all granted
</Directory>
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</VirtualHost>
Tabel Parameter Konfigurasi SHTML pada Apache
| Direktif / Modul | Fungsi Utama | Keterangan Teknis |
|---|---|---|
mod_include |
Modul inti Apache untuk SSI | Harus dimuat (loaded) agar server mengenali sintaks SSI. |
Options +Includes |
Mengizinkan eksekusi SSI | Diletakkan di dalam blok <Directory>. |
AddType text/html .shtml |
Definisi tipe MIME | Memberitahu browser bahwa file .shtml adalah dokumen HTML. |
AddOutputFilter INCLUDES .shtml |
Filter output server | Memaksa Apache memindai file .shtml untuk mencari tag SSI sebelum dikirim ke klien. |
Pengujian File SHTML
Untuk memastikan konfigurasi VirtualHost Anda berjalan dengan baik, buatlah sebuah file bernama index.shtml di dalam direktori DocumentRoot dengan isi sintaks SSI sederhana berikut:
<!--#config timefmt="A %d %B %Y" -->
<p>Hari dan tanggal server saat ini: <!--#echo var="DATE_LOCAL" --></p>
<p>Memuat file eksternal:</p>
<!--#include virtual="footer.html" -->
Troubleshooting Masalah SHTML di Apache
Jika file SHTML Anda menampilkan teks mentah tag SSI atau menghasilkan error 500 Internal Server Error, periksa beberapa hal berikut:
- Error 500: Biasanya disebabkan oleh kesalahan penulisan sintaks di dalam file konfigurasi Apache atau penggunaan direktif
Optionsyang tidak diizinkan oleh konteks server (periksa file log error di/var/log/apache2/error.log). - Tag SSI Diabaikan: Pastikan direktif
AddOutputFilter INCLUDES .shtmltelah disertakan. Tanpa filter ini, Apache tidak akan memproses isi file meskipun modul sudah aktif. - Izin File (Permissions): Pastikan user yang menjalankan proses Apache (seperti
www-data) memiliki hak baca terhadap file yang di-include melalui tag#include virtualatau#include file.