Cara Mengatasi Error Shtml dan Server Side Includes Tuntas

Error pada file ber-ekstensi .shtml paling sering ditandai dengan kemunculan pesan teknis "[an error occurred while processing this directive]" atau status kode HTTP 500 Internal Server Error. Masalah ini muncul ketika server web (seperti Apache, LiteSpeed, atau Nginx) gagal memproses skrip Server Side Includes (SSI) yang disisipkan di dalam halaman web. Penyebab utamanya meliputi fitur SSI yang belum aktif pada server, kesalahan penulisan sintaks instruksi, jalur (*path*) file *include* yang terputus, atau konfigurasi direktori `.htaccess` yang kurang tepat.

Langkah cepat untuk menyelesaikan error `.shtml` adalah dengan menambahkan instruksi penanganan SSI pada file `.htaccess`, memverifikasi bahwa modul `mod_include` sudah diaktifkan di server, serta memperbaiki format pemanggilan file pada skrip HTML. Proses perbaikan ini umumnya memerlukan waktu 10 hingga 30 menit tanpa biaya perangkat lunak tambahan, selama Anda memiliki akses ke File Manager cPanel, FTP, atau akses terminal SSH server.

Tabel Persiapan dan Estimasi Troubleshooting Error Shtml

Sebelum melakukan perbaikan langsung pada file konfigurasi sistem, identifikasi kebutuhan peralatan, estimasi waktu, dan tingkat kerumitan perbaikan pada tabel berikut:

Komponen PemeriksaanPeralatan / Akses yang DibutuhkanEstimasi WaktuTingkat Kesulitan
Konfigurasi .htaccesscPanel File Manager / FTP Client5 MenitRendah
Koreksi Sintaks SSIText Editor (VS Code / Notepad++)10 MenitRendah - Sedang
Izin Akses File (Chmod)File Manager / Terminal SSH3 MenitRendah
Modul Web ServerWHM / Akses Root Server (Sudo)15 MenitTinggi

1. Mengaktifkan Handler SSI Melalui File .htaccess

Langkah pertama dan paling efektif dalam mengatasi error `.shtml` pada server berbasis Apache atau LiteSpeed adalah memberi tahu server web agar mengeksekusi instruksi SSI pada direktori domain Anda. File `.htaccess` berfungsi sebagai pengatur perilaku direktori web secara langsung tanpa harus me-restart seluruh layanan server.

Buka direktori akar web Anda (biasanya terletak di folder `public_html`), lalu cari file `.htaccess`. Jika file tersebut tersembunyi, aktifkan opsi *"Show Hidden Files (dotfiles)"* di pengaturan File Manager cPanel. Tambahkan baris kode konfigurasi berikut di bagian paling atas file `.htaccess` Anda:

Options +Includes
AddType text/x-server-parsed-html .shtml .html .htm
AddOutputFilter INCLUDES .shtml .html .htm

Penambahan opsi `+Includes` mengizinkan server membaca perintah SSI, sementara `AddOutputFilter INCLUDES` memastikan modul server langsung memproses ekstensi `.shtml` sebelum mengirimkan output HTML bersih ke browser pengguna. Setelah menyimpan perubahan ini, muat ulang halaman web Anda untuk memeriksa apakah pesan error sudah hilang.

2. Memperbaiki Format Sintaks Pemanggilan File (Include Directive)

Penyebab umum kedua dari pesan *"an error occurred while processing this directive"* adalah kesalahan penulisan perintah pemanggilan file di dalam kode `.shtml`. SSI memiliki dua metode utama untuk menyisipkan konten, yaitu menggunakan parameter `file` dan parameter `virtual`.

Kesalahan sering terjadi ketika pengembang menggunakan parameter `file` untuk merujuk ke lokasi luar direktori kerja saat ini, atau menggunakan *absolute path* yang salah. Perhatikan aturan perbedaan penggunaan kedua parameter ini:

  • Gunakan 'file': Jika file yang ingin disisipkan berada di dalam direktori yang sama atau sub-direktori di bawahnya. Contoh yang benar: <!--#include file="header.shtml" --> atau <!--#include file="includes/nav.shtml" -->. Dilarang menggunakan struktur `../` pada parameter `file`.
  • Gunakan 'virtual': Jika Anda ingin memanggil file yang berada di luar direktori kerja saat ini, atau menggunakan jalur dari akar domain (*root-relative path*). Contoh yang benar: <!--#include virtual="/includes/footer.shtml" -->.

Pastikan juga tidak ada spasi yang hilang di antara tanda penutup `--` dan tanda `>`. Penulisan sintaks SSI sangat sensitif terhadap karakter spasi dan tanda petik double quotes.

3. Memeriksa Izin Akses File dan Folder (Permissions Chmod)

Server web yang menerapkan keamanan ketat (seperti suPHP atau suEXEC) akan menolak mengeksekusi file `.shtml` jika izin akses (*file permission*) disetel terlalu longgar atau terlalu terbatas. Hak akses yang tidak kompatibel akan langsung memicu kode error HTTP 500.

Buka File Manager atau gunakan klien FTP seperti FileZilla, lalu periksa nilai atribut numerik untuk file `.shtml` serta folder tempat file tersebut berada. Standar keamanan server yang aman dan beroperasi normal adalah:

  • File .shtml dan file include: Wajib memiliki izin 644 (`rw-r--r--`). Jangan sesekali memberi izin 777 pada file skrip.
  • Folder / Direktori: Wajib memiliki izin 755 (`rwxr-xr-x`). Folder tidak boleh memiliki izin tulis untuk grup publik (*world-writable*).

Jika file `.shtml` berada di dalam direktori dengan izin 777, mekanisme keamanan server otomatis akan memblokir eksekusi file tersebut demi mencegah potensi eksploitasi peretasan.

4. Mengaktifkan Modul SSI pada Konfigurasi Server Nginx dan Apache

Bagi Anda yang mengelola VPS atau *Dedicated Server* mandiri, error `.shtml` bisa terjadi karena modul pengolah SSI belum diaktifkan di tingkat sistem server web. Penanganan pada server Apache dan Nginx memiliki pendekatan teknis yang berbeda.

Pada server Apache, pastikan modul `mod_include` sudah diikutsertakan. Jalankan perintah `sudo a2enmod include` di terminal SSH Ubuntu/Debian, lalu muat ulang server menggunakan perintah `sudo systemctl restart apache2`. Pada CentOS/RHEL/AlmaLinux, pastikan baris `LoadModule include_module modules/mod_include.so` tidak di-komentari pada file `httpd.conf`.

Pada server Nginx, SSI tidak secara otomatis aktif untuk file HTML biasa. Anda harus menambahkan direktif SSI langsung ke dalam blok konfigurasinya (biasanya berada pada `/etc/nginx/sites-available/default` atau file konfigurasi vhost domain):

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

    ssi on;
    ssi_silent_errors off;
    ssi_types text/shtml text/html;
}

Pengaturan `ssi_silent_errors off;` sangat berguna saat proses penataan awal karena Nginx akan menampilkan rincian letak baris kode SSI yang mengalami kegagalan proses di layar browser Anda.

Tips Troubleshooting Lapangan saat Error Masih Membandel

Jika semua langkah konfigurasi di atas sudah diterapkan namun error `.shtml` masih tetap muncul, lakukan tindakan pemeriksaan mendalam berikut:

  1. Cek Error Log Server: Masuk ke cPanel lalu buka menu Error Logs, atau baca langsung file log sistem melalui SSH di `/var/log/apache2/error.log` (Apache) atau `/var/log/nginx/error.log` (Nginx). Pesan log akan memberitahukan secara persis baris kode SSI mana yang gagal dieksekusi.
  2. Uji File Shtml Sederhana: Buat file baru bernama `test.shtml` dengan isi kode sederhana seperti <!--#echo var="DATE_LOCAL" -->. Jika file uji coba ini menampilkan tanggal server dengan benar, maka masalah murni terletak pada *path* pemanggilan file pada skrip utama Anda, bukan pada sistem server.
  3. Periksa Encoding File: Pastikan file `.shtml` dan file include disimpan dalam format karakter UTF-8 without BOM. Kehadiran karakter penanda BOM (*Byte Order Mark*) di awal file sering kali merusak pembacaan variabel header oleh parser SSI.