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:
permanenttempseeothergoneURL
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: