Bagaimana cara menonaktifkan penelusuran direktori?


Jawaban:


420

Buat file .htaccess yang berisi baris berikut:

Options -Indexes

Itu satu opsi. Pilihan lain adalah mengedit file konfigurasi apache Anda.

Untuk melakukannya, pertama-tama Anda harus membukanya dengan perintah:

vim /etc/httpd/conf/httpd.conf

Kemudian cari baris: Opsi Indeks FollowSymLinks

Ubah baris itu ke: Opsi FollowSymLinks

Terakhir simpan dan keluar file, dan restart server apache dengan perintah ini:

sudo service httpd restart

(Anda memiliki panduan dengan tangkapan layar di sini .)


14
Ini bahkan bekerja di <Direktori> atau <Lokasi> dalam file .conf yang sebenarnya
chrismarx

1
@ chrismarx file .conf mana yang akan saya masukkan? .htaccess tampaknya tidak diaktifkan di server saya, dan saya sudah membaca lebih baik tidak menggunakannya. Saya memiliki akses ke semua file server, karena itu vps.
Charles John Thompson III

1
Saya terjebak pada pertanyaan yang sama, saya menambahkan file .htaccess dengan kode ke direktori yang sama dengan halaman web saya, tetapi masih memberi saya peringatan browsing direktori. Apakah saya melakukan sesuatu yang salah?
Randy Gilman

10
Perhatikan bahwa .htaccessmungkin dengan dimatikan. Silakan periksa AllowOverridePetunjuk. Jika disetel ke None, maka .htaccessdimatikan. Anda dapat menyalakannya dengan mengatur AllowOverride All. Lebih tepatnya, Allberarti semua Arahan Apache.
Julian

2
Jika Anda memiliki kendali atas http.conf, lebih baik lakukan di sana. Ada hit kinerja dengan htaccess
Itay Moav -Malimovka

298

Cara terbaik untuk melakukan ini adalah menonaktifkannya dengan webserver apache2. Di Ubuntu 14.X saya - buka /etc/apache2/apache2.confperubahan dari

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

untuk

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

kemudian mulai ulang apache dengan:

sudo service apache2 reload

Ini akan menonaktifkan daftar direktori dari semua folder yang dilayani apache2.


11
'sudo service apache2 reload ' akan cukup!
doctorlai

2
@ Jay Saya juga mencoba "Options -indexes" tetapi Apache tidak akan memulai kata penutup. Saya menjalankan versi Server: Apache / 2.4.18 (Ubuntu). Namun, menggunakan "Opsi FollowSymLinks" berfungsi sesuai jawaban Dung. Saya hanya ingin tahu versi Apache dan OS apa yang Anda jalankan? Mungkin itu versi versi?
MikeyE

@Jay @MikeyE Sama di sini; Apache tidak akan memuat ulang menggunakan-Indexes
Crimbo

1
@Jay @MikeyE Apache tampaknya memuat ulang / memulai ulang jika Anda menghapusFollowSymLinks
Crimbo

2
Berjalan apachectl configtestsetelah menambahkan Options -Indexes FollowSymLinkske httpd.conf memuntahkan kesalahan berikut: "Semua Opsi harus dimulai dengan + atau -, atau tidak ada Opsi mungkin." Karena itu, yang akan berhasil adalahOptions -Indexes +FollowSymLinks
John T.

45

Terlepas dari dua metode yang ditentukan (edit /etc/apache2/apache2.conf atau tambahkan Opsi -Indeks dalam file .htaccess), berikut ini adalah metode lain.

a2dismod autoindex

Mulai ulang server apache2 sesudahnya

sudo service apache2 restart

4
Anda dapat menggunakan a2dismod -f autoindexuntuk mengeksekusi perintah non-blocking .
Константин Ван

Opsi nuklir yang bagus! Ini berfungsi untuk Aliasfolder dan jalur lain yang dilayani oleh Apache.
kontextify

Haruskah saya mengetahui adanya efek samping yang melakukannya?
Naresh Kumar

28

Edit / Buat .htaccessfile di dalamnya /galeriasdengan ini:

Options -Indexes

Penjelajahan direktori disediakan oleh modul mod_autoindex .


-Indeks pada direktori root tidak berfungsi, di apache2.4.33, saya harus menggunakan jawaban @Sarvar Nishonboyev
Felipe Valdes

1
@FelipeValdes Harap baca pertanyaan dan jawaban saya dengan saksama. Kami tidak berbicara tentang direktori root tetapi subdirektori dan itu diminta agar dapat dilakukan dalam .htaccessfile (yang bukan cara yang paling performan tetapi sering satu-satunya pilihan dalam akun hosting bersama atau dengan sysadmin yang sibuk).
Álvaro González

23

Anda dapat menempatkan file kosong yang dipanggil index.htmlke setiap direktori yang tidak ingin Anda daftarkan. Ini memiliki beberapa keunggulan:

  • Ini (biasanya) memerlukan konfigurasi nol pada server.
  • Ini akan tetap berfungsi, bahkan jika administrator server memutuskan untuk menggunakan "AllowOverride None" di konfigurasi server. (Jika Anda menggunakan.htaccess file, ini dapat menyebabkan banyak pesan "Kesalahan 500 - kesalahan server internal" untuk pengguna Anda!).
  • Ini juga memungkinkan Anda untuk memindahkan file Anda dari satu server ke yang berikutnya, lagi tanpa harus mengacaukan konfigurasi apache.

Secara teoritis, autoindexing mungkin dipicu oleh file yang berbeda (ini dikendalikan oleh DirectoryIndexopsi), tetapi saya belum menemukan ini di dunia nyata.


Kepala! Ini hanya dapat berfungsi dengan Direktif DirektoriIndex yangindex.html didefinisikan secara utama .
nyedidikeke

18

Salah satu hal penting adalah pengaturan server web apache yang aman adalah menonaktifkan penelusuran direktori. Secara default apache dilengkapi dengan fitur ini diaktifkan tetapi selalu merupakan ide yang baik untuk menonaktifkannya kecuali Anda benar-benar membutuhkannya. Buka file httpd.conf di folder apache dan temukan baris yang terlihat sebagai berikut:

Options Includes Indexes FollowSymLinks MultiViews

kemudian hapus Indeks kata dan simpan file. Mulai ulang apache. Itu dia


1
Sempurna. Nonaktifkan lebar-lebar mesin. Mengapa ini diaktifkan secara default, saya tidak tahu ...
eduncan911

1
Ini bekerja untuk saya di Ubuntu (apache2.conf) tetapi .htaccess Options -Indexes tidak.
Danniel Little

Ini bekerja untuk saya di Ubuntu (/etc/apache2/apache2.conf) tetapi .htaccess Options -Indexes tidak.
user2875289

5

Jika Anda memilih untuk memodifikasi file httpd.conf Anda untuk menyelesaikan ini dan Anda memiliki banyak arahan Opsi, maka Anda harus menambahkan a - atau a + sebelum setiap arahan. Contoh:

Pilihan -Index + FollowSymLinks


3

Ini bukan jawaban, hanya pengalaman saya:

Pada apache2 Ubuntu 12.04 saya, tidak ditemukan Indexesdi apache2.conf atau httpd.conf, untungnya saya menemukannya di sites-available/default. Setelah menghapusnya, sekarang tidak melihat daftar direktori. Mungkin harus melakukannya untuk sites-available/default-ssl.


2

Buka file .htaccess Anda dan masukkan kode berikut ini di

Options -Indexes

Pastikan Anda menekan tombol ENTER (atau tombol KEMBALI jika Anda menggunakan Mac) setelah memasukkan kata "Opsi -Indeks" sehingga file berakhir dengan baris kosong.


2

Tambahkan ini dalam file .htaccess Anda:

Options -Indexes

Jika tidak berfungsi karena alasan apa pun, coba ini di dalam file .htaccess Anda:

IndexIgnore *

1

Untuk melengkapi jawaban @ GauravKachhadiya:

IndexIgnore *.jpg

berarti "sembunyikan saja file ekstensi .jpg dari pengindeksan.

Direktif IndexIgnore menggunakan ekspresi wildcard untuk mencocokkan dengan direktori dan file.

  • karakter bintang, cocok dengan karakter apa pun dalam string, misalnya: foo atau foo.extension, dalam contoh berikut, kita akan mematikan daftar direktori, tidak ada file atau direktori yang akan muncul dalam indeks:

    IndexIgnore *

Atau jika Anda ingin menyembunyikan file spacific, dalam daftar direktori, maka kita dapat menggunakan

IndexIgnore *.php

* .php => cocok dengan string yang dimulai dengan karakter apa saja dan berakhir dengan .php

Contoh di atas menyembunyikan semua file yang diakhiri dengan .php


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.