Cara Konfigurasi SHTML MIME Type di Apache dan Nginx

Mengonfigurasi MIME type untuk file SHTML (Server Side Includes) diperlukan agar server web mengenali ekstensi .shtml dan memproses instruksi SSI di dalamnya, seperti perintah #include. Tanpa konfigurasi yang tepat, browser pengguna akan mengunduh file SHTML sebagai dokumen teks biasa atau menampilkan kode sumber mentah alih-alih merendernya sebagai HTML.

Pada server web Apache, modul mod_include harus diaktifkan dan handler untuk tipe media text/html dengan ekstensi .shtml harus didefinisikan. Sementara pada Nginx, pemrosesan SSI dikelola melalui direktif ssi on; di dalam blok server atau lokasi, disertai pemetaan tipe MIME standar di dalam file konfigurasi utama.

Konfigurasi SHTML MIME Type di Apache

Apache biasanya sudah menyertakan modul SSI secara default, namun Anda perlu memastikan modul tersebut aktif dan konfigurasi handler serta opsi eksekusinya terpasang dengan benar di file httpd.conf, apache2.conf, atau file konfigurasi virtual host (.htaccess).

Langkah-langkah Konfigurasi Apache

  1. Buka file konfigurasi Apache atau file .htaccess di direktori root web Anda.
  2. Tambahkan baris direktif untuk mengaktifkan handler dan filter SSI pada ekstensi .shtml.
  3. Simpan perubahan dan lakukan uji sintaks konfigurasi sebelum melakukan restart layanan Apache.
# Aktifkan handler untuk file .shtml
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

# Pastikan opsi Includes diizinkan pada direktori web
<Directory "/var/www/html">
    Options +Includes
</Directory>

Konfigurasi SHTML MIME Type di Nginx

Nginx tidak memiliki modul SSI yang aktif secara otomatis untuk semua ekstensi tanpa deklarasi eksplisit. Anda harus memastikan tipe MIME text/html shtml; terdaftar di dalam blok types (biasanya di /etc/nginx/mime.types) dan mengaktifkan fungsi SSI pada blok server yang relevan.

Langkah-langkah Konfigurasi Nginx

  • Buka file konfigurasi Nginx utama atau file blok server Anda (misalnya /etc/nginx/sites-available/default).
  • Tambahkan direktif ssi on; di dalam blok location yang menangani file HTML atau SHTML.
  • Verifikasi bahwa tipe MIME untuk .shtml mengarah ke text/html.
  • server {
        listen 80;
        server_name contoh.com;
        root /var/www/html;
    
        index index.shtml index.html index.htm;
    
        location / {
            ssi on;
            try_files $uri $uri/ =404;
        }
    }
    
    # Di dalam file mime.types pastikan baris ini ada:
    types {
        text/html html htm shtml;
    }

    Tabel Perbandingan Pengaturan SHTML Berdasarkan Web Server

    Web Server Modul / Direktif Utama MIME Type File Konfigurasi Target
    Apache HTTP Server AddType, AddOutputFilter INCLUDES, Options +Includes text/html httpd.conf, apache2.conf, atau .htaccess
    Nginx ssi on;, blok types text/html shtml nginx.conf atau file virtual host di sites-available/

    Troubleshooting Masalah SHTML

    Jika file SHTML masih menampilkan teks mentah alih-alih mengeksekusi perintah seperti <!--#include virtual="header.html" -->, periksa beberapa hal berikut:

    • Apache: Pastikan modul mod_include aktif (jalankan perintah a2enmod include di Ubuntu/Debian).
    • Nginx: Pastikan direktif ssi on; benar-benar berada di dalam konteks http, server, atau location yang aktif.
    • Izin File: Pastikan pengguna web server (seperti www-data atau nginx) memiliki hak akses baca terhadap file yang disertakan (included files).