Cara Mengatasi SSI Error pada Apache Web Server

Server Side Includes (SSI) error pada web server Apache biasanya terjadi akibat kesalahan sintaks perintah SSI, modul include_module yang belum aktif, atau konfigurasi direktori yang melarang eksekusi perintah SSI. Pesan galat yang sering muncul di browser adalah '[an error occurred while processing this directive]' atau galat HTTP 500 pada file berekstensi .shtml.

Untuk mengatasi masalah ini secara permanen, Anda perlu memastikan modul Apache aktif, direktori server mengizinkan pemrosesan SSI melalui direktif Options +Includes, serta memeriksa sintaks perintah SSI di dalam kode sumber HTML Anda.

Langkah 1: Mengaktifkan Modul SSI Apache

Secara default, modul yang menangani SSI di Apache mungkin belum dimuat. Anda harus mengaktifkan modul include melalui terminal server Anda.

sudo a2enmod include
sudo systemctl restart apache2

Jika Anda menggunakan lingkungan berbasis Red Hat (RHEL, CentOS, AlmaLinux), pastikan file konfigurasi utama memuat modul tersebut:

LoadModule include_module modules/mod_include.so

Langkah 2: Konfigurasi Akses Direktori (Virtual Host)

Apache memerlukan izin eksplisit untuk mengeksekusi perintah SSI pada direktori tempat file Anda berada. Buka file konfigurasi Virtual Host Anda (biasanya di /etc/apache2/sites-available/000-default.conf atau httpd.conf) lalu tambahkan direktif Options +Includes dan AddOutputFilter.

<Directory /var/www/html>
    Options Indexes FollowSymLinks Includes
    AllowOverride All
    Require all granted
</Directory>

# Mengaktifkan ekstensi .shtml untuk memproses SSI
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Langkah 3: Perbaikan Sintaks SSI dan Troubleshooting

Sebagian besar error SSI bukan disebabkan oleh server, melainkan kesalahan penulisan tag (typo) pada file HTML/SHTML itu sendiri. Perhatikan tabel perbandingan format penulisan yang benar dan yang salah di bawah ini.

Jenis Perintah Sintaks yang Benar Sintaks yang Sering Salah (Error)
Include File <!--#include virtual="header.html" --> <-- #include file="header.html" --> (Spasi setelah tanda seru atau salah atribut)
Echo Variabel <!--#echo var="DATE_LOCAL" --> <!--#echo "DATE_LOCAL"--> (Kurang parameter var)
Fichier / Path <!--#include virtual="/images/banner.jpg" --> <!--#include virtual="images/banner.jpg" --> (Kurang garis miring awal untuk jalur absolut virtual)

Langkah 4: Pemeriksaan Log Error Apache

Jika langkah di atas sudah dilakukan namun error masih terjadi, periksa log error Apache untuk mengetahui baris spesifik yang mengalami kegagalan. Jalankan perintah berikut di terminal:

sudo tail -f /var/log/apache2/error.log

Cari baris yang mengandung kata AH01274 atau keterangan spesifik mengenai kegagalan fungsi modul include.

Tips Lapangan & Keamanan

Hindari penggunaan Options +IncludesNOEXEC jika Anda tidak memerlukan eksekusi perintah shell eksternal melalui SSI (seperti perintah <!--#exec-->). Menonaktifkan eksekusi perintah sistem akan melindungi server Anda dari celah keamanan injeksi kode berbahaya.