DEV Community

Fega Suseno
Fega Suseno

Posted on

Disable Directory Indexes on Apache2

Pada postingan ini kita akan membahas index pada apache2. Saat kita menjalankan apache web server maka akan di tampilkan halaman defaultnya adalah index.html. Kadang kita tidak ingin struktur direktori aplikasi web kita dibaca oleh orang tak berwenang, tentunya dengan alasan keamanan. Untuk itu kita perlu disable indexes pada web server dalam hal ini apache2. Berikut adalah cara untuk disable indexes.

- htaccess Untuk Web Server
Kita perlu memodifikasi virtualhost, by default lokasinya ada pada /etc/apache2/sites-enabled/000-default.conf.

nano /etc/apache2/sites-enabled/000-default.conf
Enter fullscreen mode Exit fullscreen mode

Lalu tambahkan seperti ini

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

+        <Directory /var/www/html>
+               AllowOverride All
+       </Directory>
</VirtualHost>
Enter fullscreen mode Exit fullscreen mode

Jika sdah simpan konfigurasi dengan menekan ctrl+o dan enter.
Berikutnya kita membuat file .htacccess di dalam dokumen root directory dari web server kita, by default biasanya diletakan pada /var/www/html/, lalu tambahkan syntax berikut

<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>
Enter fullscreen mode Exit fullscreen mode

Jika sudah selesai kit aperlu restart service apache nya

systemctl restart apache2
Enter fullscreen mode Exit fullscreen mode

- htaccess Untuk Userdir
Kadang kita ingin mengaktifkan modul userdir, dalam kasus saya biasanya digunakan untuk access file multimedia seperti gambar atau video dari ftp agar dapat di akses dari web browser. Memang banyak cara untuk melakukan hal tersebut, tpi biasanya saya menggunakan userdir untuk konfigurasinya.
Sebelumnya saya sudah pernah bahas bagaimana cara konfigurasu userdir.

Kita bahas bagaimana cara untuk konfigurasi .htaccess untuk disable indexes pada userdir apache2. Disini saya asumsikan untuk dokumen rootnya di taruh apda /home/ftpuser/ftp/.
Maka untuk file .htaccess diletakan di dalam direkrotori tersebut.

#nano /home/ftpuser/ftp/.htaccess
Enter fullscreen mode Exit fullscreen mode

Lalu isikan dengan syntax berikut

<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>
Enter fullscreen mode Exit fullscreen mode

Jika sudah, simpan dengan menekan tombol ctrl+o dan enter. Lakukan modifikasi pada file konfigurasi untuk mengaktifkannya

nano /etc/apache2/sites-enabled/000-default.conf
Enter fullscreen mode Exit fullscreen mode

Lakukan modifikasi pada bagian AllowOverride, saya beri tanda hijau untuk menambah syntak pada baris tersebut dan merah untuk menghapus syntax pada barisnya, atau kita bisa beri komentar saja.

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root

    <Directory /home/*/public_html>
-        AllowOverride FileInfo AuthConfig Limit Indexes
+        AllowOverride All
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>
</IfModule>
Enter fullscreen mode Exit fullscreen mode

Restart service pada apache2 dengan cara berikut

systemctl restart apache2
Enter fullscreen mode Exit fullscreen mode

Jika semua sudah dilakukan uji coba dengan menghapus file index.html. Seharusnya tidak akan di tampilkan list direktorinya.

Image description

Lalu pastikan bahwa filenya bisa dibuka, dalam contoh saya buka file info.php. Karena tidak tampil index direktorinya jadi untuk memanggilnya bisa langsung melalui url, seperti contoh berikut.

Image description

Jika semua konfigurasi sesuai, maka akan file tetap bisa di eksekusi sperti biasa.
Selamat mencoba, semoga bermanfaat.

Top comments (0)