Cara Mengatasi Error Shtml Not Found Pada Web Server

Error Shtml Not Found (biasanya berupa HTTP 404 Not Found pada file beresolusi .shtml) terjadi ketika web server tidak dapat menemukan file Server Side Includes yang diminta oleh browser, atau server belum dikonfigurasi untuk memproses ekstensi file tersebut. Masalah ini paling sering ditemui pada migrasi situs web lama, kesalahan penulisan direktori, atau modul SSI yang belum diaktifkan pada Apache atau Nginx.

Penyebab utama kegagalan ini berkisar dari path direktori yang salah, kurangnya izin akses file (file permissions), hingga tidak aktifnya handler untuk file HTML terinklusi. Berikut adalah tabel matriks penyebab dan solusi cepat untuk mendiagnosis masalah tersebut di lingkungan produksi:

Penyebab Utama Gejala / Pesan Error Solusi Teknis
Modul SSI Belum Aktif Halaman 404 atau teks kode SSI mentah Aktifkan modul include pada Apache
Typo Path / Nama File Error 404 Not Found secara spesifik pada file .shtml Periksa huruf besar/kecil dan struktur direktori
Konfigurasi .htaccess Keliru File .shtml tidak terbaca sebagai handler SSI Tambahkan AddHandler server-parsed .shtml
Izin File Terlalu Ketat Error 403 Forbidden berlanjut ke 404 Ubah permission file menjadi 644 dan folder 755

Langkah 1: Mengaktifkan Server Side Includes (SSI) di Apache

Jika server menggunakan Apache dan file .shtml sebenarnya ada di direktori namun tetap memunculkan error, besar kemungkinan server belum diinstruksikan untuk memproses file tersebut menggunakan SSI. Anda perlu mengaktifkan modul dan mendefinisikan handler pada file konfigurasi virtual host atau melalui file .htaccess.

Tambahkan baris kode berikut ke dalam file .htaccess di direktori root web Anda:

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

Pastikan juga modul include_module sudah aktif di server Apache Anda. Pada sistem berbasis Ubuntu/Debian, jalankan perintah terminal berikut:

sudo a2enmod include
sudo systemctl restart apache2

Langkah 2: Konfigurasi Nginx untuk File SHTML

Nginx tidak memiliki dukungan SSI bawaan otomatis pada semua blok lokasi tanpa konfigurasi eksplisit. Jika Anda menggunakan Nginx dan mendapati error Shtml Not Found atau file tidak merender fungsi #include, tambahkan direktif ssi on; ke dalam blok server atau location.

Buka file konfigurasi Nginx Anda (misalnya di /etc/nginx/sites-available/default) dan sesuaikan blok konfigurasi seperti berikut:

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

location ~ \.shtml$ {
    ssi on;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php-fpm.sock; # Sesuaikan dengan backend Anda
}

Setelah melakukan perubahan, uji sintaks konfigurasi dan muat ulang Nginx:

sudo nginx -t
sudo systemctl reload nginx

Langkah 3: Memeriksa Path dan Relativitas File Include

Kesalahan umum yang sering luput dari perhatian adalah penulisan path di dalam direktif SSI itu sendiri. Jika file utama memanggil file lain menggunakan virtual path atau relative path yang salah, server akan mengembalikan error 404.

Perhatikan contoh penulisan sintaks SSI yang benar:

<!--#include virtual="/includes/header.shtml" -->
<!--#include file="footer.shtml" -->

Pastikan parameter virtual merujuk pada path absolut dari root web (diawali garis miring /), sedangkan parameter file merujuk pada path relatif terhadap direktori file yang sedang dieksekusi.

Troubleshooting Lanjutan

Jika semua konfigurasi di atas telah diterapkan namun error berlanjut, periksa log error server untuk menemukan akar masalah yang spesifik. Log Apache biasanya terletak di /var/log/apache2/error.log, sedangkan log Nginx berada di /var/log/nginx/error.log. Cari baris yang menunjukkan kegagalan pembukaan file atau penolakan akses direktori untuk mengambil tindakan perbaikan yang tepat.