Dizin taramayı nasıl devre dışı bırakabilirim?


Yanıtlar:


420

Aşağıdaki satırı içeren bir .htaccess dosyası oluşturun:

Options -Indexes

Bu bir seçenektir. Başka bir seçenek de apache yapılandırma dosyanızı düzenlemektir.

Bunu yapmak için önce komutla açmanız gerekir:

vim /etc/httpd/conf/httpd.conf

Sonra satırı bulun: Seçenekler Dizinler FollowSymLinks

Bu satırı şu şekilde değiştirin: Options FollowSymLinks

Son olarak dosyayı kaydedip çıkın ve apache sunucusunu şu komutla yeniden başlatın:

sudo service httpd restart

( Burada ekran görüntüleri olan bir rehberiniz var .)


14
Bu, gerçek bir .conf dosyasında <Directory> veya <Location>
öğesinde

1
@chrismarx hangi .conf dosyasını yerleştirirdim? .htaccess sunucumda etkin görünmüyor ve zaten kullanmamanın daha iyi olduğunu okudum. Ben onun vps olarak olsa da, tüm sunucu dosyalarına erişim var.
Charles John Thompson III

1
Bu aynı soruya takılıp kaldım, kodlu .htaccess dosyasını web sayfamla aynı dizine ekledim, ancak yine de bana bir dizin tarama uyarısı veriyor. Yanlış bir şey mi yapıyorum?
Randy Gilman

10
Bunun .htaccesskapalı olabileceğini unutmayın . Lütfen AllowOverrideDirektifi kontrol edin . Olarak ayarlanırsa None, .htaccesskapatılır. Ayarlayarak açabilirsiniz AllowOverride All. Daha kesin olmak gerekirse, Alltüm Apache Direktifleri anlamına gelir.
Julian

2
Eğer http.conf kontrol u varsa, orada daha iyi.
Htaccess

299

Bunu yapmanın en iyi yolu web sunucusu apache2 ile devre dışı bırakmaktır. Ubuntu 14.X'imde - /etc/apache2/apache2.confgelen değişikliği aç

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

için

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

ardından apache'yi şu şekilde yeniden başlatın:

sudo service apache2 reload

Bu, apache2'nin sunduğu tüm klasörlerden dizin listesini devre dışı bırakır.


11
'sudo service apache2 reload ' yeterli olacak!
doctorlai

2
@Jay da "Seçenekler -dizin" denedim ama Apache kelime sonra başlamaz. Sunucu sürümünü çalıştırıyorum: Apache / 2.4.18 (Ubuntu). Ancak, "Seçenekler FollowSymLinks" kullanarak Dung cevabına göre çalıştı. Apache ve OS'nin hangi sürümünü kullandığınızı merak ediyorum. Belki de bir sürüm şeydir?
MikeyE

@Jay @MikeyE Burada aynı; Apache kullanarak yeniden -Indexes
yüklemez

1
@Jik @MikeyE Kaldırırsanız Apache yeniden yükleniyor / yeniden başlatılıyor gibi görünüyorFollowSymLinks
Crimbo

2
Httpd.conf dosyasına apachectl configtesteklendikten sonra çalıştırma Options -Indexes FollowSymLinksşu hatayı verir: "Ya tüm Seçenekler + veya - ile başlamalı ya da hiçbir seçenek olmayabilir." Bu nedenle ne olacak çalışmak olduğunuOptions -Indexes +FollowSymLinks
John T.

45

Apart aformentioned iki yöntem (düzenleme gelen /etc/apache2/apache2.conf veya eklenti Seçenekler -Indexes .htaccess dosyasında), burada başka bir tanesidir

a2dismod autoindex

Daha sonra apache2 sunucusunu yeniden başlatın

sudo service apache2 restart

4
Engellemeyen komut yürütme a2dismod -f autoindexiçin kullanabilirsiniz .
Константин Ван

Güzel nükleer seçenek! Bu, Aliasklasörler ve Apache tarafından sunulan diğer tüm yollar için çalışır .
kontextify

Herhangi bir yan etkinin farkında olmam gerekir mi?
Naresh Kumar

28

.htaccessİçinde bir dosya düzenleyin / oluşturun /galerias:

Options -Indexes

Dizin taraması mod_autoindex modülü tarafından sağlanır .


Kök dizindeki indeksler çalışmıyor, apache2.4.33'te @Sarvar Nishonboyev'in cevabını kullanmak zorunda kaldım
Felipe Valdes

1
@FelipeValdes Lütfen hem soruyu hem de cevabımı dikkatle okuyun. Kök dizinden değil, bir alt dizinden bahsediyoruz ve bir .htaccessdosyada yapılabilir olması istendi (en performanslı yol değil, ancak genellikle paylaşılan barındırma hesaplarında veya meşgul sistem yöneticileriyle tek seçenek).
Álvaro González

23

index.htmlListelenmesini istemediğiniz her dizine boş bir dosya yerleştirebilirsiniz . Bunun birkaç avantajı vardır:

  • (Genellikle) sunucuda sıfır yapılandırma gerektirir.
  • Sunucu yöneticisi sunucu yapılandırmasında "AllowOverride None" seçeneğini kullanmaya karar verse bile çalışmaya devam edecektir. ( .htaccessDosya kullanıyorsanız, bu kullanıcılarınız için çok sayıda "Hata 500 - dahili sunucu hatası" iletisine yol açabilir!).
  • Ayrıca, apache yapılandırmasıyla uğraşmak zorunda kalmadan dosyalarınızı bir sunucudan diğerine taşımanıza izin verir.

Teorik olarak, otomatik indeksleme farklı bir dosya tarafından tetiklenebilir (bu DirectoryIndexseçenek tarafından kontrol edilir ), ancak henüz gerçek dünyada bununla karşılaşmadım.


Dikkat et! Bu yalnızca index.htmlbirincil olarak tanımlanmış DirectoryIndex Yönergesi ile çalışabilir .
nyedidikeke

18

Önemli bir şey, güvenli bir apache web sunucusu ayarlanmasıdır.Dizin taramayı devre dışı bırakmaktır. Varsayılan olarak apache bu özellik etkinken gelir, ancak gerçekten ihtiyacınız olmadığı sürece devre dışı bırakmak her zaman iyi bir fikirdir. Httpd.conf dosyasını apache klasöründe açın ve aşağıdaki gibi görünen satırı bulun:

Options Includes Indexes FollowSymLinks MultiViews

ardından Dizin kelimesini kaldırın ve dosyayı kaydedin. Apache'yi yeniden başlatın. Bu kadar


1
Mükemmel. Makineyi tamamen devre dışı bırakın. Neden bu varsayılan olarak etkinleştirilir, hiçbir fikrim yok ...
eduncan911

1
Bu benim için Ubuntu (apache2.conf) üzerinde çalıştı ama .htaccess Options -Indexes işe yaramadı.
Danniel Little

Bu benim için Ubuntu'da çalıştı (/etc/apache2/apache2.conf) .htaccess Options -Indexes çalışmadı.
user2875289

5

Bunu çözmek için httpd.conf dosyanızı değiştirmeyi seçerseniz ve birden çok Seçenek yönergelerine sahipseniz, her yönergelerin önüne bir - veya a + eklemeniz gerekir. Misal:

Seçenekler -Deksler + FollowSymLinks


3

Bu bir cevap değil, sadece benim deneyimim:

Benim Ubuntu 12.04 apache2, Indexesapache2.conf veya httpd.conf içinde bulamadım , neyse ki buldum sites-available/default. Kaldırdıktan sonra, şimdi dizin listesini görmüyor. Bunu yapmak zorunda kalabilir sites-available/default-ssl.


2

.Htaccess dosyanızı açın ve aşağıdaki kodu girin:

Options -Indexes

Dosyanın boş bir satırla bitmesi için "Options -Indexes" sözcüklerini girdikten sonra ENTER tuşuna (veya Mac kullanıyorsanız RETURN tuşuna) bastığınızdan emin olun.


2

Bunu .htaccess dosyanıza ekleyin:

Options -Indexes

Herhangi bir nedenden dolayı çalışmıyorsa, bunu .htaccess dosyanızda deneyin:

IndexIgnore *

1

@ GauravKachhadiya'nın cevabını tamamlamak için:

IndexIgnore *.jpg

"yalnızca .jpg uzantı dosyalarının dizine eklenmesini gizle anlamına gelir .

IndexIgnore yönergesi, dizinler ve dosyalarla eşleşmek için joker karakter ifadesi kullanır.

  • bir yıldız karakteri, bir dizedeki herhangi bir karakterle eşleşir, örneğin: foo veya foo.extension, aşağıdaki örnekte dizin listesini kapatacağız, dizinde dosya veya dizin görünmeyecek:

    IndexIgnore *

Veya boşluk dosyalarını gizlemek istiyorsanız, dizin listesinde,

IndexIgnore *.php

* .php => herhangi bir karakterle başlayan ve .php ile biten bir dizeyle eşleşir

Yukarıdaki örnek .php ile biten tüm dosyaları gizler


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.