mod_dir
Bölü çizgisiyle biten yönlendirmeleri yapar ve dizin içeriği dosyalarını sunar.
Base
mod_dir.c
dir_module

Bir dizin içerik dosyası şu iki kaynaktan birinden gelebilir:

- Kullanıcı tarafından yazılmış ve ismi genellikle `index.html` olan bir dosya. Dosya ismi DirectoryIndex yönergesi ile belirlenir. Bu, mod_dir modülü tarafından denetlenir.
- Aksi takdirde içerik listesi sunucu tarafından üretilir. Bu, mod_autoindex modülü tarafından sağlanır.

Bu iki işlev tamamen birbirinden ayrıdır, dolayısıyla eğer isterseniz kendiliğinden dizin içerik listesi üretimini tamamen iptal edebilirsiniz.

Sunucu `http://example.com/filanca/birdizin` şeklinde bir istek aldığında `birdizin` bir dizinin ismiyse ‘bölü çizgisiyle biten’ bir yönlendirme söz konusudur. Dizinler URL sonuna bir bölü çizgisi eklenmesini gerektirir, bu bakımdan mod_dir modülü isteği `http://example.com/filanca/birdizin/` şeklinde yönlendirir.

DirectoryIndex
İstemci bir dizin istediğinde dizin içeriğini listeler.
DirectoryIndex disabled | yerel-url [yerel-url] ...
DirectoryIndex index.html
server config
virtual host
directory
.htaccess
Indexes

DirectoryIndex yönergesi, istemci, dizinin sonuna bir bölü çizgisi ekleyerek dizin içeriğinin listelenmesini istediğinde bakılmak üzere özkaynakları listeler. `yerel-url`, sunucu üstünde istenen dizine göreli bir belgenin URL’sidir; normal olarak dizin içindeki bir dosyanın ismidir. Çeşitli URL’ler verilebilirse de sunucu daima ilk bulduğuyla dönecektir. Eğer özkaynakların hiçbiri yoksa ve `Indexes` seçeneği atanmışsa sunucu dizin içeriğinden bir liste üretecektir.

DirectoryIndex index.html

Bu yapılandırmadan sonra yapılan bir `http://sunucum/belgeler/` isteğine karşılık, sunucu, mevcutsa `http://sunucum/belgeler/index.html` dosyasını döndürecek, değilse ürettiği dizin içerik listesini gönderecektir.

Belgelerin dizine göreli olmasının gerekmediğine dikkat ediniz.

DirectoryIndex index.html index.txt /cgi-bin/index.pl

Bu örnekte ise dizin içinde ne `index.html` ne de `index.txt` mevcut olduğunda `/cgi-bin/index.pl` CGI betiği çalıştırılacaktır.

`disabled` değeri tek başına mod_dir’in bir dizin listesi aramasını engeller. `disabled` değiştirgesi öncesinde ve sonrasında başka bir değiştirge hatta bir `disabled` daha olsa bile sadece bir `disabled` verilmiş gibi yorumlanır.

Bilginize: Aynı bağlamdaki çok sayıda DirectoryIndex yönergesi bir öncekini değiştirmek yerine onun bulunduğu listeye eklenir:

# 1. örnek: İçerik dosyası olarak index.html atayıp sonraki satırda buna # index.php'yi ekleyebilirsiniz. <Directory "/foo"> DirectoryIndex index.html DirectoryIndex index.php </Directory>

# 2. Örnek: Atamaların tet bir satırda yapıldığı bu örnek 1. örneğe denktir. <Directory "/foo"> DirectoryIndex index.html index.php </Directory>

# 3. Örnek: Listeyi tamamen değiştirmek için, listeyi önce sıfırlamalısınız: # Bu örnekte içerik dosyası olarak listede sadece index.php kalır. <Directory "/foo"> DirectoryIndex index.html DirectoryIndex disabled DirectoryIndex index.php </Directory>
DirectoryIndexRedirect
Dizin içerik listeleri için harici bir yönlendirme yapılandırır.
DirectoryIndexRedirect on | off | permanent | temp | seeother | 3xx-kodu
DirectoryIndexRedirect off
server config
virtual host
directory
.htaccess
Indexes
Apache HTTP Sunucusunun 2.3.14 ve sonraki sürümlerinde kullanılabilmektedir.

Öntanımlı olarak, DirectoryIndex listeyi istemciye şeffaf olarak seçip gönderir. DirectoryIndexRedirect ise harici bir yönlendirmeye sebep olur.

Bunlardan biri kullanılabilir:

- `on`: Dizin listesi kaynağına bir 302 yönlendirmesi yapılır.
- `off`: Bir yönlendirme yapılmaz. mod_dir için eski davranış böyleydi.
- `permanent`: Dizin listesi kaynağına bir 301 (kalıcı) yönlendirmesi yapılır.
- `temp`: Bu `on` ile aynı etkiye sahiptir.
- `seeother`: Dizin listesi kaynağına bir 303 yönlendirmesi ("diğerine bak" olarak da bilinir)yapılır.
- 3xx-code
  : 3xx kodu ile seçilen yönlendirme yapılır.

# Örnek

DirectoryIndexRedirect on

`http://example.com/docs/` için yapılan bir istek, `http://example.com/docs/index.html` (mevcutsa) adresine geçici bir yönlendirme döndürür.

DirectorySlash
Bölü çizgisi ile biten yönlendirmeleri açar/kapar.
DirectorySlash On|Off
DirectorySlash On
server config
virtual host
directory
.htaccess
Indexes

DirectorySlash yönergesi, bir dizin isteğinde bulunan URL’lerin sonuna mod_dir modülü tarafından bir bölü çizgisi eklenip eklenmeyeceğini belirler.

Normalde, bir kullanıcı sona bir bölü çizgisi eklemeden bir dizin için istekte bulunursa mod_dir zaten onu aynı özkaynağa yönlendirir, fakat isteğin sonuna bir bölü çizgisi eklenmesinin bazı iyi sebepleri vardır:

- Kullanıcı bunun sonucunda meşru bir URL ile istekte bulunmuş olur.
- mod_autoindex
  gerektiği gibi çalışır. Yoksa bağlantıdaki yolu sunamayacağından yanlış yolu gösterirdi.
- DirectoryIndex
  yönergesi sadece bölü çizgisi ile biten dizin istekleri için değerlendirilir.
- HTML sayfa içindeki göreli URL başvuruları gerektiği gibi çalışacaktır.

Siz yine de bu etkiyi istemezseniz ve yukarıdaki sebepler de size uygun değilse yönlendirmeyi aşağıdaki gibi kapatabilirsiniz. Ancak bunu yaparken dikkatli olun, bununla ilgili bazı güvenlik sorunları olasılığı vardır.

# Aşağıdaki güvenlik uyarısına bakınız!
<Location "/bir/yol">
DirectorySlash Off
SetHandler bir-eylemci
</Location>

# Güvenlik Uyarı

Bölü çizgisi ile biten yönlendirmelerin kapatılması bir bilginin istemeyek açığa çıkmasına sebep olabilir. mod_autoindex modülünün etkin olduğunu (`Options +Indexes`) ve DirectoryIndex ile geçerli bir özkaynağın (`index.html` olsun) atandığını ama bu URL için başka hiçbir özel eylemci tanımlanmadığını varsayalım. Bu durumda bölü çizgisi ile biten bir istek olduğunda `index.html` dosyası sunulurdu. Fakat bölü çizgisi ile bitmeyen bir istek dizin içeriğinin listelenmesi ile sonuçlanırdı.

Bir yönlendirme sözkonusu olduğunda bazı tarayıcıların yanlışlıkla POST isteklerini GET istekleri haline getirme (böylece POST verisi iptal olur) olasılığı olduğuna da dikkat edin.

FallbackResource
Bir dosya ile eşleşmeyen istekler için öntanımlı URL tanımlar
FallbackResource disabled | yerel-url
disabled - httpd 404 döndürecektir (Yok)
server config
virtual host
directory
.htaccess
Indexes
disabled
değiştirgesi 2.4.4 sürümü ve sonrasında kullanılabilmektedir.

Dosya sisteminde bulunmayan bir dosya için istek yapıldığında HTTP'nin 404 (Yok) hatasını döndürmemesi için sunulacak dosyanın yolunu tanımlar. Örnek:

FallbackResource /not-404.php

Bu satırla, (mevcut dosyaları etkilemeden) mevcut olmayan dosyaların yerine `not-404.php` dosyası sunulacaktır.

Belli bir dizindeki mevcut bir dosya veya betik için yapılanlar dışındaki tüm isteklerin tek bir dosya veya özkaynakla yerine getirilmesi sıkça istenen bir durum olup bu mekanizmaya 'ön denetleyici' adı verilir.

httpd'nin önceki sürümlerinde bir dosya veya dizinin varlığının sınanması için genellikle mod_rewrite modülü ve `-f` ve `-d` kullanımı gerekirdi. Bunun için şimdi tek satırlık bir yapılandırma yeterli olmaktadır.

FallbackResource /index.php

Resim, CSS dosyaları gibi mevcut dosyalar normal olarak sunulur.

Üst dizinden hiçbir şeyin miras alınmaması isteniyorsa bu özelliği kapatmak için `disabled` değiştirgesini kullanın.

http://example.com/blog/ gibi bir alt URI yerel-url olarak sağlanır:

<Directory "/web/example.com/htdocs/blog"> FallbackResource /blog/index.php </Directory>
DirectoryCheckHandler
Başka bir eylemci yapılandırılmışsa bu modülün nasıl yanıt vereceğini belirler
DirectoryCheckHandler On|Off
DirectoryCheckHandler Off
server config
virtual host
directory
.htaccess
Indexes
2.4.8 ve sonrasında kullanılabilmektedir. 2.4 öncesi sürümler örtük olarak "DirectoryCheckHandler ON" belirtilmiş gibi davranır.

DirectoryCheckHandler yönergesi, geçerli URL için başka bir eylemcinin yapılandırılmış olması durumunda, mod_dir modülünün index dosyaları için dizine mi bakacağını yoksa URL'nin sonuna bölü çizgisi mi ekleyeceğini belirler. Eylemciler SetHandler gibi yönergelerle atanabileceği gibi dizin işlemleri sırasında mod_rewrite gibi modüller tarafından da atanabilir.

2.4 öncesi sürümlerde, bir URL için başka bir eylemcinin yapılandılmış olması durumunda bu modül herhangi bir eylemde bulunmaz ve sonuç olarak, tüm dizin için bir SetHandler belirtildiği durumda index dosyalarının sunulmasının yanında mod_rewrite gibi modüller de ayrıca bazı çelişkili sonuçlar oluşturabilir.