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://example.com/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://example.com/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 sona bir / ekleme ihtiyacından dolayı
/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:
URL-yolu
ile harf
büyüklüğüne duyarsız eşleşmeler sağlayacak takma adlar
kullanılabilir:
Başka bir deyişle, basitçe
^
ve
sonuna bir (.*)$
, ikinci değiştirgenin sonuna da bir
$1
eklemeniz gerekir.
Örneğin aşağıdakini AliasMatch ile değiştirmek isteyelim:
Bu eşdeğer DEĞİLdir - bunu yapmayın! Bu herhangi bir yerinde /image/ dizgesi bulunan tüm istekleri /ftp/pub/image/ altına gönderecektir:
Aynı etkiyi elde etmek için bu gerekiyor:
Şüphesiz,
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://example.com/hizmet/fesmekan.txt
isteğine karşılık istemciye isteği
http://iki.example.com/hizmet/fesmekan.txt
olarak yapması
söylenecektir. Bu GET
isteklerinde de geçerlidir. Örneğin,
http://example.com/hizmet/foo.pl?q=23&a=42
isteği
http://iki.example.com/hizmet/foo.pl?q=23&a=42
adresine
yönlendirilir. POST
'ların iptal edileceğini unutmayın.
Sadece tam yol parçaları eşleştirilir, bu nedenle
http://example.com/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
değiştirgesiyle
sayısal durum kodu belirtilir. Eğer durum 300 ile 399 arasındaysa bir
URL
belirtmek gereklidir. Aksi takdirde,
URL bileşeni ihmal edilmelidir. Belirtilecek durum kodunun
geçerli bir HTTP Status kodu olmalı ve Apache HTTP Sunucusu kodu
bilmelidir (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://example.com/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:
AliasMatch yönergesindeki gibi, URL-yolu
için harf büyüklüğüne duyarsız
eşleşmeli bir takma ad oluşturmak mümkünür: