Htaccess ile Dizin Listeleme Engelleme

Dizin Listeleme Nedir?
İçinde index.html ya da index.php bulunmayan bir klasöre istek geldiğinde Apache, isteği boş çevirmek yerine klasörün içeriğini listeler. Tarayıcıda "Index of /dizin" başlığıyla açılan o çıplak dosya listesi budur. Üstteki görselde olduğu gibi bütün dosya ve klasörler sıralanır. Yani yükleme klasörünüz, unuttuğunuz bir yedek ya da bir yapılandırma dosyası isteyen herkesin gözü önündedir. Arama motorlarının bu sayfaları dizine eklemesi sorunun kendisi değil, görünür hale gelmesidir.
İkinci maliyeti de trafik tarafında. Açık bir dizin listesi, tarama botlarının önüne hazır bir menü koyar; bot klasördeki dosyaları tek tek gezer. Hosting paketinizin trafik kotası sınırlıysa bu kota kimsenin işine yaramayan isteklerle dolar.
Kapatmanın birkaç yolu var. En doğrudan olanı, public_html dizinine koyacağınız .htaccess dosyasına tek satır yazmak. cPanel arayüzünden de yapılabilir, ama sunucuya erişiminiz varsa bu yol daha hızlı.
.htaccess Dosyası Nedir?
Bir önceki yazımda .htaccess kullanımını ve uzantı gizlemeyi detaylı anlatmıştım, buradan ulaşabilirsiniz.
.htaccess (hypertext access), Apache’nin dizin seviyesinde okuduğu bir yapılandırma dosyası. Ana sunucu ayarlarını değiştirmeden, sadece bulunduğu klasör ve alt klasörleri için kural tanımlamanızı sağlar. Paylaşımlı hostingte popüler olmasının sebebi de bu: sunucunun genel yapılandırmasına erişiminiz olmasa bile kendi dizininiz için kural yazabilirsiniz. Baştaki nokta dosyayı gizli yapar, o yüzden dosya yöneticisinde göremiyor olabilirsiniz.
.htaccess Dosyası Oluşturmak
.htaccess dosyası, web sitenizin public.html dizininde bulunur. cPanel üzerinden görüntülemek için öncelikle Ayarlar butonuna tıklıyoruz.
Gizli dosyaları cPanel üzerinden görüntülemek için
1- public_html dizinini seçip sağ üstteki Ayarlar butonuna tıklıyoruz.

2- Gizli Dosyaları Göster (dotfiles) işaretleyip, Save tıklayarak kaydediyoruz.

3- public_html dizininin içinde görünecektir. Eğer dosya mevcutsa, public_html dizininin içinde görünecektir. Sağ tıklayıp Edit'e tıklayarak düzenleyebilirsiniz.

Gizli dosyaları görüntüledikten sonra eğer .htaccess dosyasını görmüyorsanız, public_html klasöründe ".htaccess" isminde bir dosya oluşturabilirsiniz.
Dosyayı oluşturduktan sonra içine aşağıdaki satırı yapıştırıp kaydedin. Baştaki eksi işareti "bu seçeneği kapat" anlamına geliyor:
Options -IndexesKaydettiğiniz anda geçerli olur, sunucuyu yeniden başlatmanız gerekmez. Aynı dizini tarayıcıdan açmayı denediğinizde artık dosya listesi yerine 403 Forbidden göreceksiniz:

Sonuç
Tek satırlık bir kural, sitenizin dosya yapısını dışarıya sergilemesini engelliyor. Yapılacak iş bu kadar basit, ama açık kaldığında bedeli ağır olabiliyor.
İki noktayı da eklemek gerek. Birincisi, listelemeyi kapatmak dosyaları erişilemez yapmaz; tam adresini bilen biri dosyaya yine ulaşır. Gerçekten gizli kalması gerekenleri web kökünün dışında tutun. İkincisi, .htaccess yalnızca Apache’de çalışır. Nginx kullanıyorsanız karşılığı sunucu bloğundaki autoindex off; direktifidir ve zaten varsayılan olarak kapalıdır.
Serinin devamına aşağıdan erişebilirsiniz. Şimdilik hoşça kalın!

Mustafa Kürşad Başer
Kıdemli Yazılım Mühendisi
Karmaşık sorunlara zarif çözümler üretmekten keyif alan, tutkulu bir yazılım mühendisi. Kodlamanın ötesinde, teknoloji, sanat ve insan bilincinin kesişim noktalarını keşfetmekle derinden ilgileniyor.

