tolak daftar direktori dengan htaccess


103

Aku punya folder, misalnya: /public_html/Davood/ dan sub folder terlalu banyak dalam folder, misalnya: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

Saya ingin menambahkan file htaccess ke /public_html/Davood/Untuk menolak DirectoryListing Di /DavoodDan Sub Folder, Mungkinkah?


3
Saya tidak melihat mengapa Options All -Indexestidak berhasil seperti dalam beberapa jawaban!
Fr0zenFyr

1
@ Fr0zenFyr itu tergantung pada konfigurasi server web, jika AllowOverride All, berfungsi
DJafari

Jawaban:


124

Opsi -Indeks seharusnya berfungsi untuk mencegah daftar direktori.

Jika Anda menggunakan file .htaccess pastikan Anda memiliki setidaknya pengaturan "allowoverride options" di file konfigurasi apache utama Anda .


1
ini tidak mengubah apa pun
minhajul

69

Coba tambahkan ini ke .htaccessfile di direktori itu.

Options -Indexes

Ini memiliki lebih banyak informasi.


Ya saya pikir -Indexes menonaktifkan daftar direktori, alih-alih memblokir semua konten dari folder ... Apakah ada yang tahu mengapa?
Michael Fever

Yang bisa saya pikirkan adalah ada masalah dengan konfigurasi server. Coba aktifkan rewritemodul, dan pengaturan direktori ke AllowOverride All. Jika semua itu sudah ada, dan apa yang Anda komentari itu benar, saya pasti terlalu beruntung untuk bisa Options All -Indexesbekerja di setiap proyek di server yang berbeda.
Fr0zenFyr

35

Jika Options -Indexestidak berfungsi seperti yang disarankan Bryan Drewery, Anda dapat menulis metode rekursif untuk membuat file index.php kosong.

Tempatkan ini di dalam folder dasar Anda yang ingin Anda lindungi, Anda dapat menamainya apa saja (saya akan merekomendasikan index.php)

<?php

recurse(".");

function recurse($path){
    foreach(scandir($path) as $o){
        if($o != "." && $o != ".."){
            $full = $path . "/" . $o;
            if(is_dir($full)){
                if(!file_exists($full . "/index.php")){
                    file_put_contents($full . "/index.php", "");
                }
                recurse($full);
            }
        }
    }
}

?>

File index.php kosong ini dapat dengan mudah dihapus atau ditimpa, dan mereka akan membuat direktori Anda tidak dapat didaftarkan.


8
Meskipun file kosong bukanlah masalah besar, solusi yang lebih baik mungkin menggunakan tautan simbolik , dengan cara itu menghemat sedikit ruang, dan dia hanya perlu mengubah 1 file jika dia memilih untuk menampilkan semacam pesan seragam bukannya halaman kosong.
daalbert

18

Untuk menampilkan kesalahan Terlarang, sertakan baris berikut di file .htaccess Anda:

Options -Indexes 

Jika kami ingin mengindeks file kami dan menampilkannya dengan beberapa informasi, gunakan:

IndexOptions -FancyIndexing

Jika kita ingin beberapa ekstensi tertentu tidak muncul, maka:

IndexIgnore *.zip *.css

1
.httaccessatau .htaccess?
NaveenDA

8

Options -Indexes bekerja dengan sempurna untuk saya,

ini .htaccessfile:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes <---- This Works for Me :)
    </IfModule>


   ....etc stuff

</IfModule>

Sebelum : masukkan deskripsi gambar di sini

Sesudah:

masukkan deskripsi gambar di sini


4

Ada dua cara:

  1. menggunakan .htaccess: Options -Indexes

  2. buat index.html kosong


3
Options -Indexes

Saya harus mencoba membuat file .htaccess direktori saat ini yang ingin saya larang daftar indeks direktori. Tapi, maaf saya tidak tahu tentang rekursif dalam kode .htaccess.

Cobalah.


2

Setuju bahwa

Options -Indexes

seharusnya berfungsi jika server utama dikonfigurasi untuk mengizinkan penggantian opsi, tetapi jika tidak, ini akan menyembunyikan semua file dari daftar (sehingga setiap direktori tampak kosong):

IndexIgnore *

2

Options -Indexes mengembalikan kesalahan terlarang 403 untuk direktori yang dilindungi. Perilaku yang sama dapat dicapai dengan menggunakan Pengalihan berikut di htaccess:

RedirectMatch 403 ^/folder/?$ 

Ini akan mengembalikan kesalahan terlarang untuk example.com/folder/ .

Anda juga dapat menggunakan mod-rewrite untuk melarang permintaan folder.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Jika htaccess Anda dalam folder yang Anda akan melarang, pola perubahan RewriteRule ini dari ^ folder /? $ Untuk ^ $ .

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.