Error 404 pada file berformat .shtml terjadi ketika server web gagal menemukan file Server Side Includes yang direferensikan, atau konfigurasi server Apache/Nginx belum memetakan ekstensi .shtml ke modul parser SSI yang tepat. Masalah ini juga kerap muncul akibat kesalahan penulisan URL (broken link) atau perubahan struktur direktori tanpa pengaturan redirect yang benar.
Penyelesaian utama melibatkan pemeriksaan konfigurasi file .htaccess, memastikan modul include_module aktif di server web, dan memvalidasi jalur direktori file. Berikut adalah matriks penyebab utama beserta solusi teknis penanganannya di lapangan:
| Penyebab Error 404 SHTML | Lokasi Pemeriksaan | Solusi Teknis Utama |
|---|---|---|
| Modul SSI Apache Non-Aktif | Konfigurasi Server (httpd.conf) | Aktifkan mod_include dan pastikan handler disetel. |
| Direktif .htaccess Belum Diset | File .htaccess di root folder | Tambahkan baris aktivasi SSI dan AddHandler. |
| Kesalahan Path Include File | Kode dalam file .shtml | Ganti path relatif (../) atau gunakan path absolut. |
| URL Rewriting / Permalink Rusak | File .htaccess | Perbarui aturan RewriteRule untuk ekstensi shtml. |
Langkah 1: Mengaktifkan Server Side Includes (SSI) di .htaccess
Jika server Apache Anda belum mengenali ekstensi .shtml atau direktif SSI di dalamnya, server akan mengembalikan error 404 atau 500. Buka file .htaccess di direktori root website Anda menggunakan File Manager atau SSH, lalu tambahkan baris kode berikut:
Options +Includes
AddType text/html .shtml
AddHandler server-parsed .shtml
Simpan perubahan tersebut dan refresh halaman website Anda. Kode ini memaksa server Apache untuk memproses file berformat .shtml melalui modul parser SSI alih-alih memperlakukannya sebagai file HTML biasa.
Langkah 2: Periksa Path File yang Dipanggil (Include Directive)
Penyebab paling sering dari error 404 pada file SHTML adalah kesalahan path pada perintah #include. Contohnya, ketika Anda memanggil file header menggunakan format virtual tetapi foldernya salah:
<!--#include virtual="/header.shtml" -->
Jika file header.shtml sebenarnya berada di dalam folder /includes/header.shtml, maka server akan memunculkan error 404. Gunakan format path yang akurat:
<!--#include virtual="/includes/header.shtml" -->
<!-- Atau menggunakan path file -->
<!--#include file="header.shtml" -->
Langkah 3: Konfigurasi Nginx untuk File SHTML
Jika server Anda menggunakan Nginx alih-alih Apache, modul SSI harus diaktifkan secara manual di dalam blok server blok konfigurasi Nginx (biasanya di /etc/nginx/sites-available/default atau file conf domain Anda):
location ~ \.shtml$ {
ssi on;
ssi_types text/html;
try_files $uri =404;
}
Setelah menambahkan blok di atas, lakukan uji sintaks dan restart layanan Nginx dengan perintah terminal:
sudo nginx -t
sudo systemctl restart nginx
Troubleshooting Lapangan
Jika error 404 masih berlanjut setelah konfigurasi di atas dilakukan, periksa izin akses (file permission) file SHTML tersebut. Pastikan file memiliki hak akses 644 dan direktori di sekitarnya memiliki hak akses 755 agar dapat dibaca oleh proses server web (www-data atau nobody). Selain itu, selalu bersihkan cache browser dan cache server (seperti Varnish atau Cloudflare) untuk memastikan perubahan konfigurasi terbaca secara real-time.