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.