Parameter AllowOverride dalam konfigurasi web server Apache berfungsi untuk menentukan direktif mana yang diizinkan untuk dimuat di dalam file .htaccess. Secara default, keamanan Apache mengatur nilai parameter ini ke None untuk direktori utama guna mengoptimalkan performa dan mencegah pengguna mengubah konfigurasi inti server.
Untuk menggunakan fitur kustomisasi tingkat direktori seperti modifikasi URL menggunakan RewriteEngine, pembatasan akses IP, atau pengaturan otentikasi kata sandi melalui file .htaccess, administrator server wajib mengubah nilai AllowOverride dari None menjadi direktif spesifik atau All.
Sintaks Dasar dan Penempatan
Direktif AllowOverride hanya dapat ditempatkan di dalam blok konfigurasi <Directory> di dalam file konfigurasi utama Apache (seperti httpd.conf atau apache2.conf) atau file virtual host.
<Directory "/var/www/html">
AllowOverride AuthConfig FileInfo
Require all granted
</Directory>Daftar Nilai Parameter AllowOverride
Apache membagi fungsi pengaturan ke dalam beberapa kelompok kategori direktif. Tabel berikut merinci opsi nilai yang dapat diberikan pada parameter AllowOverride beserta fungsi dan cakupannya.
| Nilai Parameter | Kategori Direktif yang Diizinkan dalam .htaccess | Contoh Penggunaan Umum |
|---|---|---|
None | Tidak ada direktif yang diizinkan. File .htaccess diabaikan sepenuhnya. | Standar keamanan maksimum untuk direktori root web. |
All | Semua direktif yang memiliki konteks .htaccess diizinkan. | Digunakan pada shared hosting atau direktori aplikasi CMS fleksibel. |
AuthConfig | Mengizinkan direktif otentikasi (AuthType, AuthName, AuthUserFile, Require). | Membuat proteksi password untuk direktori privat. |
FileInfo | Mengizinkan direktif kontrol tipe dokumen, mod_rewrite, dan header (ErrorDocument, RewriteEngine). | Pengaturan URL rewrite, custom error pages, dan MIME types. |
Indexes | Mengizinkan direktif pengaturan indeks direktori (DirectoryIndex, Options +Indexes). | Mengatur tampilan daftar file jika file index utama tidak ada. |
Limit | Mengizinkan kontrol akses berdasarkan host (Allow, Deny, Order). | Membatasi atau mengizinkan IP tertentu mengakses direktori. |
Options | Mengizinkan pengaturan opsi direktori (Options, XBitHack). | Mengaktifkan atau menonaktifkan eksekusi CGI atau FollowSymLinks. |
Langkah Teknis Mengaktifkan AllowOverride untuk Virtual Host
Jika aplikasi web Anda memerlukan file .htaccess agar dapat berjalan normal (seperti WordPress, Laravel, atau Joomla), ikuti langkah-langkah konfigurasi berikut pada server Linux (Ubuntu/Debian):
- Buka file konfigurasi Virtual Host menggunakan teks editor seperti nano:
sudo nano /etc/apache2/sites-available/000-default.conf - Cari blok
<Directory /var/www/html>atau direktori root proyek Anda. - Ubah baris
AllowOverride NonemenjadiAllowOverride All(atau batasi sesuai kebutuhan keamanan, misalnyaAllowOverride FileInfo AuthConfig). - Simpan file dengan menekan
Ctrl+O, lalu keluar denganCtrl+X. - Uji sintaks konfigurasi Apache untuk memastikan tidak ada kesalahan ketik:
sudo apache2ctl configtest - Muat ulang (reload) layanan Apache agar perubahan diterapkan:
sudo systemctl reload apache2
Risiko Keamanan dan Praktik Terbaik
Mengaktifkan AllowOverride All secara global pada server produksi sangat tidak disarankan karena memberikan kebebasan penuh kepada pengguna (atau pihak yang berhasil menyusupkan file .htaccess berbahaya) untuk mengubah perilaku server, mengabaikan pembatasan keamanan, atau mengeksekusi modul yang tidak diinginkan.
Gunakan prinsip hak istimewa terendah (principle of least privilege). Jika aplikasi hanya memerlukan pengaturan URL rewriting, cukup berikan nilai AllowOverride FileInfo alih-alih membuka akses penuh menggunakan All. Selain itu, pastikan direktif AccessFileName diatur dengan benar dan file .htaccess dilindungi dari unduhan publik melalui aturan blokiran direktif <FilesMatch>.