Cara Mengatasi SHTML Tidak Terbaca di Server & Browser

File dengan ekstensi .shtml (Server Side Includes) sering kali tidak terbaca oleh browser, baik muncul sebagai halaman kosong, kode mentah, atau memicu Internal Server Error 500, karena web server belum dikonfigurasi untuk memproses direktif SSI secara benar.

Untuk mengatasi masalah ini secara tuntas, Anda perlu memastikan modul SSI pada server web (Apache atau Nginx) aktif, konfigurasi handler ekstensi file sudah benar, dan izin direktori server mengizinkan eksekusi server-side includes.

Penyebab Utama File SHTML Tidak Terbaca

Sebelum melakukan perbaikan, kenali beberapa akar permasalahan teknis yang paling sering terjadi di sisi server hosting maupun server lokal:

Penyebab Gejala pada Browser Solusi Singkat
Modul SSI Apache Non-Aktif Muncul teks kode SHTML mentah atau error 500 Aktifkan modul mod_include
Konfigurasi Handler Salah File diunduh otomatis alih-alih dirender Tambahkan AddHandler atau AddType di .htaccess
Directive Options Includes Kurang Error 500 saat file dipanggil Tambahkan Options +Includes pada konfigurasi vhost
Nginx Belum Dikonfigurasi SSI Direktif <!--#include--> diabaikan Aktifkan ssi on; pada blok server Nginx

Langkah 1: Mengatasi SHTML di Web Server Apache

Jika Anda menggunakan server Apache atau cPanel hosting yang berbasis Apache, pastikan modul mod_include sudah aktif dan file .htaccess dikonfigurasi dengan benar.

1. Aktifkan Modul Include

Melalui terminal SSH server (Ubuntu/Debian), jalankan perintah berikut:

sudo a2enmod include
sudo systemctl restart apache2

2. Tambahkan Baris Kode ke File .htaccess

Buka atau buat file .htaccess di direktori root website Anda, lalu tambahkan konfigurasi handler dan opsi eksekusi berikut:

AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes

Langkah 2: Mengatasi SHTML di Web Server Nginx

Secara default, Nginx tidak mengaktifkan Server Side Includes. Anda harus mengaktifkannya secara manual di dalam blok konfigurasi server Nginx Anda (biasanya berada di /etc/nginx/sites-available/default atau file konfigurasi domain Anda).

1. Edit Konfigurasi Nginx

Tambahkan baris ssi on; di dalam blok location atau server:

server {
    listen 80;
    server_name contoh.com;
    root /var/www/html;

    index index.shtml index.html index.php;

    location / {
        try_files $uri $uri/ =404;
        ssi on;
    }
}

2. Restart Layanan Nginx

Setelah menyimpan perubahan konfigurasi, lakukan uji sintaks dan restart Nginx dengan perintah:

sudo nginx -t
sudo systemctl restart nginx

Troubleshooting Lanjutan

Jika file SHTML masih menampilkan error setelah konfigurasi di atas dilakukan, periksa hal berikut:

  • Sintaks SSI: Pastikan penulisan tag benar, misalnya <!--#include virtual="header.html" --> tanpa ada kesalahan spasi atau penulisan tanda kutip.
  • Izin File (Permission): Pastikan file SHTML memiliki hak akses yang terbaca oleh web server (biasanya 644 untuk file dan 755 untuk direktori).
  • Log Error: Periksa file error log Apache (/var/log/apache2/error.log) atau Nginx (/var/log/nginx/error.log) untuk mengetahui detail penyebab kegagalan pembacaan file.