Bu modülde bulunan yönergeler sunucuya istek olarak gelen URL’lerin
denetlenmesini ve değiştirilmesini mümkün kılar.
Farklı bağlamlarda bulunan
İlk adımda,
İlk eşleşmenin öncelikli olması sebebiyle, bu yönergelerin birden fazlası aynı alt yola uygulandığı takdirde, tüm yönergelerin etkili olabilmesi için en uzun yolu sıralamada en öne almalısınız. Örneğin aşağıdaki yapılandırma beklendiği gibi çalışacaktır:
Ama yukarıdaki iki satır ters sırada yerleştirilmiş olsaydı,
/foo
rumuzu daima /foo/bar
rumuzundan önce
eşleşecek, dolayısıyla ikinci yönerge yok sayılacaktı.
URL-yolu
ile başlayan
URL’ler (% imlemesi çözüldükten sonra) dizin-yolu
ile başlayan yerel dosyalarla eşlenir. URL-yolu
,
harf büyüklüğüne duyarsız sistemlerde bile harf büyüklüğüne
duyarlıdır.
http://sunucum/image/foo.gif
şeklinde bir istek, sunucunun
/ftp/pub/image/foo.gif
dosyasıyla yanıt vermesine sebep
olurdu. Sadece tam yol parçaları eşleştirilir; bu bakımdan yukarıdaki
http://sunucum/imagefoo.gif
ile eşleşmez. Düzenli
ifadelerin kullanıldığı daha karmaşık eşleşmeler için
URL-yolu
’nu bir /
ile
sonlandırırsanız /
ekleyeceğine dikkat ediniz. Yani,
eğer
Alias /icons/ /usr/local/apache/icons/
diye bir tanım yaparsanız /icons
URL’si için bir
Özellikle,
Bu yönerge URL-yolu
ile eşleşmek üzere bir
URL-yolu
ile eşleşiyorsa
sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak dosya yolunu
elde eder. Örneğin, /icons
dizinini etkinleştirmek için şu
yazılabilir:
Ayrıca, URL-yolu
ile harf büyüklüğüne duyarsız
eşleşmeler sağlayacak düzenli ifadeler de kullanılabilir:
Eski URL-yolu
bir bölü çizgisi ile başlar ve harf
büyüklüğüne duyarlıdır (% imlemesi çözüldükten sonra).
URL-yolu
olarak göreli yollara izin verilmez.
URL
ise ya bir şema ve konak ismi ile başlayan
bir mutlak URL ya da bir bölü çizgisi ile başlayan bir URL yolu olabilir. İkinci durumda URL yolunun başına geçerli sunucu ismi ve şemayı sunucu ekler.
URL-yolu
ile başlayan istekler istemciye hedef
URL
konumuna bir yönlendirme isteği olarak
dönecektir. URL-yolu
’nun devamı niteliğindeki ek
yol hedef URL’ye eklenir.
İstemcinin yaptığı http://mesela.dom/hizmet/fesmekan.txt
isteğine karşılık istemciye isteği
http://iki.mesela.dom/hizmet/fesmekan.txt
olarak yapması
söylenecektir. Sadece tam yol parçaları eşleştirilir, bu nedenle
http://mesela.dom/hizmetfesmekan.txt
isteği yukarıdaki
yönlendirme ile eşleşmeyecektir. Düzenli ifadelerin kullanıldığı daha
karmaşık eşleşmeler için
Yapılandırma dosyasında yer alış sırasına bakmaksızın
Herhangi bir durum
belirtilmemişse "geçici"
yönlendirme (HTTP durum kodu: 302) yapılır. Bu, istemciye özkaynağın
geçici olarak başka yere taşındığını belirtir. Diğer HTTP durum
kodlarını döndürmek için kullanılabilecek durum
değerleri:
permanent
temp
seeother
gone
URL
belirtilmez.Diğer durum kodları için durum
olarak sayısal
durum kodu belirtilir. Eğer durum 300 ile 399 arasındaysa bir
URL
belirtmek gereklidir, yoksa belirtilmez.
Belirtilecek durum kodunu Apache’nin bilmesi gerektiğine dikkat ediniz
(http_protocol.c
dosyasında bulunan
send_error_response
işlevine bakınız).
Bu yönerge URL-yolu
ile eşleşmek üzere bir
URL-yolu
ile
eşleşiyorsa sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak
dosya yolunu elde eder. Örneğin, tüm GIF dosyası isteklerini başka bir
sunucudaki aynı isimli JPEG dosyalarına yönlendirmek için şu
yazılabilir:
Bu yönerge istemciye daima geçici yönlendirme durumu (302) döndürür.
Yani, Redirect temp
ile aynı işi yapar.
Bu yönerge istemciye daima kalıcı yönlendirme durumu (301) döndürür.
Yani, Redirect permanent
ile aynı işi yapar.
Hedef dizini, URL-yolu
ile
başlayan harf büyüklüğüne duyarlı URL’ler (% imlemesi çözüldükten
sonra), dosya sistemindeki bir tam yol olarak belirtilmiş
dizin-yolu
ile başlayan betiklerle eşlenir.
http://sunucum/cgi-bin/foo
şeklindeki bir istek sunucunun
/siteler/cgi-bin/foo
betiğini çalıştırmasına sebep olur. Bu
yapılandırma aslında şuna eşdeğerdir:
Bu senaryoda /cgi-bin/
’den istenen tüm dosyalar sizin
belirttiğiniz dosya tarafından işleme sokulacaktır. Bu yöntemle kendi
özel eylemcinizi kullanabilirsiniz. İsterseniz, bunu içerik eklemek
ya da ısmarlama bir eylem için bir CGI sarmalayıcısı olarak da
kullanabilirsiniz.
URL-yolu
eşleşebileceğinden, bir Bu yönerge URL-yolu
ile eşleşmek üzere bir
URL-yolu
ile
eşleşiyorsa sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak
dosya yolunu elde eder. Örneğin, standart /cgi-bin
dizinini
etkin kılmak için şu yazılabilir: