Blok <Directory> dan < /Directory> dalam konfigurasi Apache HTTP Server digunakan untuk mengelompokkan sekumpulan direktif penjelas yang hanya berlaku pada direktori sistem berkas tertentu, subdirektori di dalamnya, serta isi dari direktori tersebut. Direktif ini krusial untuk mengatur izin akses, autentikasi, dan pengaturan spesifik jalur berkas lokal di server.
Penerapan blok ini membedakannya dari blok <Location> yang berbasis URL (path web). Blok <Directory> bekerja langsung berdasarkan struktur direktori absolut pada sistem operasi (filesystem path), seperti /var/www/html pada sistem Linux atau C:/Apache24/htdocs pada sistem Windows.
Sintaks Dasar Blok Directory
Struktur dasar penulisan blok direktori di dalam berkas konfigurasi utama Apache (seperti httpd.conf, apache2.conf, atau berkas Virtual Host) mengikuti pola pembukaan dan penutupan tag XML:
<Directory "/var/www/html/secure">
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Direktif Umum di Dalam Blok Directory
Di dalam blok direktori, administrator server dapat menyematkan berbagai direktif kontrol akses dan perilaku server. Berikut adalah tabel direktif utama yang sering digunakan beserta fungsinya:
| Direktif | Fungsi Utama | Contoh Nilai |
|---|---|---|
Options |
Mengontrol fitur direktori mana yang tersedia (misal: penelusuran indeks, symbolic links). | Indexes, FollowSymLinks, ExecCGI |
AllowOverride |
Menentukan direktif mana yang diizinkan dimuat dalam berkas .htaccess. |
All, None, AuthConfig |
Require |
Mengontrol akses klien berdasarkan otorisasi (siapa yang boleh mengakses). | all granted, all denied, user admin |
Order / Satisfy |
Kontrol akses warisan (deprecated di Apache 2.4, digantikan modul mod_authz_core). |
Deny,Allow |
Langkah Teknis Implementasi Pembatasan Akses
Untuk menerapkan pembatasan akses pada direktori tertentu, ikuti prosedur teknis di bawah ini:
- Buka berkas konfigurasi Apache Anda menggunakan editor teks dengan hak akses administratif (misalnya
sudo nano /etc/apache2/apache2.confatau berkas konfigurasi VirtualHost Anda). - Tambahkan blok
<Directory>dengan menyertakan jalur absolut direktori target yang ingin diatur. - Tentukan aturan keamanan, seperti menonaktifkan daftar direktori (
Options -Indexes) guna mencegah pengguna melihat daftar berkas saat tidak ada berkasindex.phpatauindex.html. - Terapkan aturan kontrol akses menggunakan modul
mod_authz_host, contohnyaRequire all grantedatau pembatasan berdasarkan alamat IP (Require ip 192.168.1). - Simpan berkas konfigurasi, lalu lakukan uji sintaks untuk memastikan tidak ada kesalahan pengetikan menggunakan perintah
sudo apachectl configtest. - Muat ulang layanan Apache untuk menerapkan perubahan melalui perintah
sudo systemctl reload apache2(untuk Ubuntu/Debian) atausudo systemctl reload httpd(untuk CentOS/RHEL).
Wildcard dan Ekspresi Regular
Apache juga mendukung penggunaan karakter wildcard (pencocokan pola) di dalam nama direktori. Karakter tanya (?) cocok untuk satu karakter, tanda bintang (*) cocok untuk urutan karakter apa pun, dan karakter kurung siku ([...]) cocok dengan himpunan karakter tertentu.
Selain itu, jika Anda membutuhkan pencocokan yang lebih kompleks, gunakan prefiks ~ untuk mengaktifkan ekspresi regular (regex):
<Directory ~ "^/var/www/html/[0-9]+/private$">
Require all denied
</Directory>
Troubleshooting Masalah Umum
Kesalahan umum saat mengonfigurasi blok Directory sering kali bersumber dari ketidaksesuaian jalur (path mismatch) atau izin sistem operasi. Pastikan jalur direktori yang dituliskan di dalam tanda kutip benar-benar ada di sistem berkas fisik dan Apache memiliki izin baca (read permission) ke jalur tersebut. Jika modul otorisasi baru diaktifkan, pastikan sintaks kontrol akses menggunakan format Apache 2.4 (seperti Require alih-alih Allow from yang merupakan standar versi lama).