Error 500 Internal Server Error saat memuat file berformat .shtml (Server Side Includes) umumnya disebabkan oleh kesalahan konfigurasi pada berkas .htaccess, modul Apache mod_include yang tidak aktif, atau batas eksekusi skrip (timeout) yang terlampaui. Karena file SHTML mengeksekusi perintah server sebelum dikirim ke peramban, kesalahan sintaks sekecil apa pun pada tag SSI akan langsung memicu kegagalan server total.
Untuk mengatasi masalah ini secara permanen, Anda perlu melakukan pemeriksaan berjenjang mulai dari log kesalahan server (error log), konfigurasi modul Apache, hingga sintaks tag SSI di dalam file SHTML itu sendiri.
Tabel Diagnostik Penyebab & Solusi Error 500 SHTML
| Penyebab Utama | Indikator / Log Error | Solusi Perbaikan |
|---|---|---|
| Modul Apache Non-Aktif | Invalid command 'AddHandler', perhaps misspelled... |
Aktifkan modul mod_include dan mod_cgid di server. |
| Konfigurasi .htaccess Salah | 500 Internal Server Error saat akses URL .shtml |
Koreksi sintaks Handler atau Options di berkas .htaccess. |
| Kesalahan Tag SSI | [an error occurred while processing this directive] atau blank |
Periksa path file pada tag . |
| Limit PHP / Suexec | SuexecCronolog atau SoftException |
Sesuaikan izin (permission) file SHTML ke 644 dan folder ke 755. |
Langkah Teknis Mengatasi Error 500 SHTML
1. Periksa Berkas .htaccess
Kesalahan penulisan direktif di dalam .htaccess adalah pemicu nomor satu. Pastikan Anda mendeklarasikan handler SSI dengan benar tanpa memuat perintah yang tidak didukung oleh server web Anda.
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
Jika server Anda menggunakan suEXEC atau pembatasan keamanan ketat, perintah Options +Includes terkadang ditolak oleh server dan memicu Error 500. Jika hal ini terjadi, hapus baris Options +Includes atau konsultasikan dengan penyedia layanan hosting Anda.
2. Verifikasi Sintaks Tag Server Side Includes (SSI)
Pastikan tag SSI yang Anda gunakan di dalam file .shtml sudah benar. Perhatikan penggunaan spasi dan tanda kutip ganda:
<!--#include virtual="/header.html" -->
<!--#echo var="DATE_LOCAL" -->
Jangan menggunakan path relatif yang keluar dari direktori root tanpa izin (misalnya menggunakan ../../ yang mengarah ke luar public_html), karena server akan memblokirnya demi keamanan dan mencatatnya sebagai kegagalan internal.
3. Cek Hak Akses (File Permission)
Hak akses file yang terlalu longgar (misalnya 777) sering kali ditolak oleh keamanan server modern berbasis Apache/Nginx (mod_security atau suEXEC). Pastikan:
- Hak akses folder/direktori adalah 755.
- Hak akses file
.shtmladalah 644.
4. Periksa Error Log Apache / cPanel
Jika langkah di atas belum berhasil, akses panel kontrol hosting Anda (cPanel/DirectAdmin) lalu buka menu Error Log. Cari baris terakhir saat error 500 terjadi untuk mengetahui secara pasti baris kode atau modul apa yang mengalami kegagalan.