AddOutputFilter vs AddHandler Server-Parsed: Perbedaan & Konfigurasi

Dalam konfigurasi server web Apache, AddOutputFilter dan AddHandler adalah dua direktif yang sering digunakan untuk memproses file melalui modul Server Side Includes (SSI), khususnya modul mod_include. Meskipun sekilas tampak menghasilkan fungsi yang sama yaitu mengaktifkan SSI, mekanisme kerja, cakupan, dan fleksibilitas kedua direktif ini memiliki perbedaan krusial yang menentukan performa dan keamanan server.

Secara singkat, AddOutputFilter bekerja dengan memasukkan filter pemrosesan SSI ke dalam rantai output data file tanpa mengubah handler utama file tersebut (seperti HTML atau teks), sedangkan AddHandler mengubah handler eksekusi file menjadi server-parsed secara penuh, yang secara historis mengasumsikan bahwa file tersebut adalah skrip SSI khusus.

Matriks Perbandingan: AddOutputFilter vs AddHandler Server-Parsed

Parameter AddOutputFilter INCLUDES AddHandler server-parsed
Mekanisme Kerja Menambahkan filter SSI (INCLUDES) ke dalam rantai output (output filter chain). Mengubah handler file menjadi server-parsed untuk diproses oleh mod_include.
Kompatibilitas Ekstensi Sangat fleksibel; dapat diterapkan pada ekstensi standar seperti .html atau .htm tanpa mengganggu MIME type utama. Biasanya digunakan untuk ekstensi khusus seperti .shtml atau memaksa file HTML standar diperlakukan sebagai skrip SSI.
Standar Modern Apache Direkomendasikan oleh dokumentasi resmi Apache HTTP Server versi modern (2.2 dan 2.4). Metode lama (legacy) yang masih didukung untuk kompatibilitas ke belakang (backward compatibility).
Manajemen MIME Type Mempertahankan MIME type asli file (misal: text/html). Dapat mengubah atau mengabaikan handler bawaan jika tidak dikonfigurasi dengan hati-hati.

Analisis Mendalam: Cara Kerja dan Penggunaan

Untuk memahami mana yang harus digunakan dalam skrip konfigurasi Apache (seperti file .htaccess atau httpd.conf), kita perlu melihat bagaimana Apache mengevaluasi permintaan (request) HTTP.

1. Menggunakan AddOutputFilter

Pendekatan modern dalam Apache 2.x adalah menggunakan direktif AddOutputFilter bersama dengan filter INCLUDES. Keunggulan utamanya adalah pemisahan antara tipe konten (MIME type) dan pemfilteran output. Anda dapat menerapkan SSI pada file berformat HTML biasa tanpa harus mengubah ekstensi file menjadi .shtml.

# Mengaktifkan SSI pada file .html menggunakan Output Filter
AddOutputFilter INCLUDES .html

Dengan sintaks di atas, file index.html akan tetap dikirimkan sebagai dokumen HTML standar, namun sebelum dikirim ke peramban klien, Apache akan memindai tag SSI seperti <!--#include virtual="header.html" --> dan mengeksekusinya.

2. Menggunakan AddHandler

Direktif AddHandler memetakan ekstensi file tertentu ke handler internal server. Ketika Anda menggunakan AddHandler server-parsed .html, Anda memberitahu Apache bahwa semua file dengan ekstensi .html harus ditangani oleh handler server-parsed.

# Cara lama mengaktifkan SSI dengan AddHandler
AddHandler server-parsed .html

Meskipun cara ini berfungsi, kekurangannya terletak pada kekakuan handler. Jika sebuah modul lain ingin menangani file .html yang sama (misalnya pemrosesan bahasa skrip atau handler kustom), konflik handler dapat terjadi karena Apache menetapkan satu handler utama per permintaan.

Panduan Implementasi dan Troubleshooting Lapangan

Saat menerapkan salah satu dari konfigurasi ini di peladen produksi, pastikan modul mod_include telah aktif di lingkungan Apache Anda. Selain itu, direktif Options +Includes wajib didefinisikan pada blok direktori yang bersangkutan agar server diizinkan mengeksekusi perintah SSI.

<Directory "/var/www/html">
    Options +Includes
    AddOutputFilter INCLUDES .html
</Directory>

Jika tag SSI Anda tidak dieksekusi dan malah tampil sebagai komentar HTML biasa di peramban, lakukan pemeriksaan berikut:

  • Pastikan modul include_module (mod_include.so) sudah dimuat di konfigurasi utama Apache (httpd.conf).
  • Periksa apakah direktif Options pada direktori tersebut tidak disetel ke None atau menolak Includes.
  • Periksa log error Apache (error.log) untuk mendeteksi adanya kesalahan sintaks pada direktif .htaccess.