htaccess ile dizin listesini reddetmek


105

: Bir klasör, örneğin var /public_html/Davood/ örneğin klasörde ve çok fazla alt klasör: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

/public_html/Davood/Dizin Listesini /DavoodVe Alt Klasörlerde Reddetmek İçin içine bir htaccess dosyası eklemek istiyorum , Mümkün mü?


4
Neden Options All -Indexesbirkaç cevapta olduğu gibi işe yaramadığını anlamıyorum!
Fr0zenFyr

1
Eğer Fr0zenFyr @ o, web sunucusu yapılandırmasına bağlı olduğunu AllowOverride All, işleri
DJafari

Yanıtlar:



70

Bunu .htaccesso dizindeki dosyaya eklemeyi deneyin .

Options -Indexes

Bu daha fazla bilgiye sahiptir.


Evet düşündüm -Indexes dizin listelerini devre dışı bıraktı, bunun yerine klasördeki tüm içeriği engelliyor ... Nedenini bilen var mı?
Michael Fever

Tek düşünebildiğim, sunucu yapılandırmasında bir sorun olduğu. rewriteModülü ve dizin ayarını etkinleştirmeyi deneyin AllowOverride All. Bunların hepsi zaten mevcutsa ve yorumladığınız şey doğruysa, Options All -Indexesher projede farklı sunucularda çalışacak kadar şanslı olmalıyım .
Fr0zenFyr

35

Eğer Options -IndexesBryan drewery önerdiği gibi çalışmıyor, boş index.php dosyaları oluşturmak için bir özyinelemeli yöntem yazabilirsiniz.

Bunu korumak istediğiniz temel klasörünüzün içine yerleştirin, ne olursa olsun adlandırabilirsiniz (index.php'yi öneririm)

<?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);
            }
        }
    }
}

?>

Bu boş index.php dosyaları kolayca silinebilir veya üzerine yazılabilir ve dizinlerinizin listelenmesini engeller.


8
Boş bir dosya o kadar büyük olmasa da, daha iyi bir çözüm sembolik bağlantılar kullanmak olabilir , bu şekilde biraz yer tasarrufu sağlar ve bir tür tek tip mesaj görüntülemeyi seçerse yalnızca 1 dosyayı değiştirmesi gerekir. boş bir sayfa yerine.
daalbert

19

Yasak hatayı göstermek için, .htaccess dosyanıza şu satırları ekleyin:

Options -Indexes 

Dosyalarımızı indekslemek ve bazı bilgilerle göstermek istiyorsak, şunu kullanın:

IndexOptions -FancyIndexing

Belirli bir uzantının gösterilmemesini istiyorsak, o zaman:

IndexIgnore *.zip *.css

1
.httaccessveya .htaccess?
Naveen DA

8

Seçenekler -Dizinler benim için mükemmel çalışıyor,

işte .htaccessdosya:

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


   ....etc stuff

</IfModule>

Önce : görüntü açıklamasını buraya girin

Sonra:

görüntü açıklamasını buraya girin


5

İki yol var:

  1. .htaccess kullanarak: Options -Indexes

  2. boş index.html oluştur


3
Options -Indexes

Dizin dizin listelemesine izin vermemek istediğim mevcut dizinde .htaccess dosyası oluşturmayı denemeliyim. Ancak üzgünüm .htaccess kodunda özyinelemeli bilmiyorum.

Dene.


2

Katılıyorum

Options -Indexes

ana sunucu seçenek geçersiz kılmalarına izin verecek şekilde yapılandırılmışsa çalışmalıdır, ancak değilse, bu, tüm dosyaları listeden gizleyecektir (böylece her dizin boş görünür):

IndexIgnore *

2

Seçenekler -Indexes , korumalı bir dizin için 403 yasaklanmış bir hata döndürür. Aynı davranış, htaccess'te aşağıdaki Yeniden Yönlendirme kullanılarak elde edilebilir:

RedirectMatch 403 ^/folder/?$ 

Bu, example.com/folder/ gibi yasak bir hata döndürecektir .

Klasör talebini yasaklamak için mod yeniden yazmayı da kullanabilirsiniz.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Senin htaccess aralarından, yasaklamak değişiklik RewriteRule desenini gidiyoruz klasöründeyse ^ klasör /? $ İçin ^ $ .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.