Internal Server Error (HTTP Error 500) pada file berformat .shtml (Server Side Includes) umumnya terjadi karena kegagalan server web Apache dalam mengeksekusi instruksi SSI di dalam dokumen tersebut, kesalahan konfigurasi sintaks, atau pembatasan hak akses file (file permissions) yang keliru. Masalah ini menghentikan proses rendering halaman sebelum dikirimkan ke peramban pengguna.
Secara teknis, file SHTML memanfaatkan perintah SSI seperti <!--#include virtual="header.html" --> untuk menggabungkan beberapa komponen halaman secara dinamis. Ketika server mendapati kesalahan pada direktif tersebut atau menemukan pelanggaran direktif di file .htaccess, server akan langsung menghentikan proses dan memunculkan kode galat 500.
Tabel Diagnostik Penyebab dan Solusi SHTML Error 500
| Penyebab Utama | Indikator Error di Log | Solusi Teknis |
|---|---|---|
Kesalahan Konfigurasi .htaccess |
Invalid command 'AddHandler', perhaps misspelled... |
Periksa dan koreksi direktif modul SSI di file .htaccess. |
| Izin File (Permissions) Tidak Sesuai | SoftException in Application.cpp: ... file is writable by group |
Ubah hak akses file menjadi 644 dan direktori menjadi 755. |
| Sintaks SSI Rusak atau Hilang | AH01071: Got error 'Primary script unknown' |
Validasi tag pembuka dan penutup SSI di dalam file SHTML. |
Modul mod_include Non-aktif |
Request exceeded the limit of internal redirects |
Aktifkan modul Apache include melalui terminal server. |
Langkah-Langkah Perbaikan Teknis di Lapangan
1. Memeriksa Log Kesalahan Server (Error Log)
Langkah paling akurat untuk mendeteksi akar masalah adalah membaca file log Apache di peladen Anda. Melalui SSH, jalankan perintah berikut untuk melihat catatan galat secara real-time:
tail -f /var/log/apache2/error.log
Atau pada lingkungan cPanel, akses menu Error Log melalui dasbor hosting untuk melihat baris spesifik yang menyebabkan kegagalan eksekusi SHTML.
2. Koreksi Konfigurasi File .htaccess
Seringkali kesalahan terjadi akibat penulisan modul handler yang tidak didukung oleh versi Apache yang berjalan. Pastikan baris kode SSI di file .htaccess Anda menggunakan format yang benar:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
Jika server menggunakan handler berbasis FastCGI atau PHP-FPM tertentu, penambahan baris Options +Includes terkadang memicu konflik jika tidak diizinkan oleh konfigurasi utama server (httpd.conf atau apache2.conf).
3. Pengaturan Hak Akses File (Permissions)
Keamanan peladen web modern menolak mengeksekusi file yang memiliki izin terlalu longgar (misalnya 777). Pastikan file SHTML dan direktori penyimpanannya diatur dengan standar keamanan Linux:
- Hak akses file
.shtml: 644 (Read dan Write untuk pemilik, Read untuk grup dan publik). - Hak akses folder/direktori: 755 (Read, Write, Execute untuk pemilik, Read dan Execute untuk grup dan publik).
4. Validasi Perintah SSI di Dalam Kode
Kesalahan kecil seperti salah mengetik nama file pada fungsi include akan memicu Internal Server Error. Periksa kembali struktur tag SSI Anda:
<!--#include virtual="/path/to/file.html" -->
Pastikan file yang dipanggil benar-benar ada di direktori tersebut dan tidak menghasilkan infinite loop (file memanggil dirinya sendiri secara berulang).