mod_alias - Apache HTTP Sunucusu

Apache Server 2.0

<-

Apache Modülü mod_alias

Açıklama:Belge ağacının parçalarının dosya sisteminin parçalarıyla eşlenmesini sağlar ve URL yönlendirmesi yapar.
Durum:Temel
Modül Betimleyici:alias_module
Kaynak Dosyası:mod_alias.c

Özet

Bu modülde bulunan yönergeler sunucuya istek olarak gelen URL’lerin denetlenmesini ve değiştirilmesini mümkün kılar. Alias ve ScriptAlias yönergeleri URL’lerin dosya sisteminin dizinlerine eşlenmesini sağlar. Böylece, kök dizini DocumentRoot ile belirtilen site belge ağacı altında bulunmayan içeriğe erişmek mümkün olur. ScriptAlias yönergesi buna ek olarak hedef dizini sadece CGI betiklerini içeren dizin olarak imler.

Redirect yönergesi, farklı bir URL ile yeni bir istek yapmaları için istemcileri yönlendirmekte kullanılır. Çoğunlukla özkaynak başka bir yere taşındığında kullanılır.

mod_alias modülü basit URL değiştirme görevlerini yerine getirmek için tasarlanmıştır. Sorgu dizgelerini işleme sokmak gibi daha karmaşık görevler için mod_rewrite modülü ile sağlanan araçlar kullanılır.

top

İşlem Sırası

Farklı bağlamlarda bulunan Alias ve Redirect yönergeleri standart katıştırma kuralları ile ilgili diğer yönergeler gibi işleme sokulurlar. Fakat aynı bağlam dahilinde (örneğin, aynı <VirtualHost> bölümünde) çok fazla Alias ve Redirect varsa bunlar belli bir sıraya göre işleme sokulur.

İlk adımda, Alias’lardan önce bütün Redirect yönergeleri işleme sokulur. Bu bakımdan bir Redirect veya RedirectMatch ile eşleşen bir istek için hiçbir Alias uygulanmayacaktır. İkinci adımda yapılandırma dosyasında yer aldıkları sıraya göre Redirect ve Alias yönergeleri işleme sokulurlar, dolayısıyla ilk eşleşme öncelikli olmuş olur.

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

Alias /foo/bar /baz
Alias /foo /gaz

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ı.

top

Alias Yönergesi

Açıklama:URL’leri dosya sistemi konumlarıyla eşler.
Sözdizimi:Alias URL-yolu dosya-yolu|dizin-yolu
Bağlam:sunucu geneli, sanal konak
Durum:Temel
Modül:mod_alias

Alias yönergesi, belgelerin DocumentRoot dizininden farklı bir yerde saklanmasını mümkün kılar. 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.

Örnek:

Alias /image /ftp/pub/image

http://sunucum/image/foo.gif şeklinde bir istek, sunucunun /ftp/pub/image/foo.gif dosyasıyla yanıt vermesine sebep olurdu.

URL-yolu’nu bir / ile sonlandırırsanız Alias yönergesini yorumlarken sunucunun da sona bir / 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 Alias kullanılmayacaktır.

Alias hedefleri için ek <Directory> bölümleri belirtmeniz gerekebileceğine dikkat ediniz. <Directory> bölümlerinden önce yer alan Alias yönergelerine özellikle bakılır, dolayısıyla sadece Alias hedefleri etkilenir. (Bununla birlikte, Alias yönergelerinden önce işleme sokulan <Location> bölümlerinin uygulanacağına dikkat ediniz.)

Özellikle, DocumentRoot dışında bir dizine bir Alias oluşturuyorsanız hedef dizine doğrudan erişim izni vermeniz gerekebilir.

Örnek:

Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>

top

AliasMatch Yönergesi

Açıklama:URL’leri dosya sistemi konumlarıyla düzenli ifadeleri kullanarak eşler.
Sözdizimi:AliasMatch düzenli-ifade dosya-yolu|dizin-yolu
Bağlam:sunucu geneli, sanal konak
Durum:Temel
Modül:mod_alias

Bu yönerge URL-yolu ile eşleşmek üzere bir  düzenli ifade kabul etmesi dışında Alias yönergesine eşdeğerdir. Belirtilen düzenli ifade 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:

AliasMatch ^/icons(.*) /usr/local/apache/icons$1

Ayrıca, URL-yolu ile harf büyüklüğüne duyarsız eşleşmeler sağlayacak düzenli ifadeler de kullanılabilir:

AliasMatch (?i)^/image(.*) /ftp/pub/image$1

top

Redirect Yönergesi

Açıklama:İstemciyi, bir yönlendirme isteği döndürerek farklı bir URL’ye yönlendirir.
Sözdizimi:Redirect [durum] URL-yolu URL
Bağlam:sunucu geneli, sanal konak, dizin, .htaccess
Geçersizleştirme:FileInfo
Durum:Temel
Modül:mod_alias

Redirect yönergesi istemciye bir yönlendirme isteği döndürerek eski URL’yi yenisiyle eşler.

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 bir şema ve konak ismi ile başlayan bir mutlak URL olmalıdır.

Örnek:

Redirect /hizmet http://iki.mesela.dom/hizmet

İ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.

Bilginize

Yapılandırma dosyasında yer alış sırasına bakmaksızın Redirect yönergeleri Alias ve ScriptAlias yönergelerinden önce ele alınır. <Directory> bölümleri ve .htaccess dosyaları içinde bile kullanılsa URL-yolu göreli bir yol değil, tam nitelikli bir URL olmak zorundadır.

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
İstemciye özkaynağın kalıcı olarak taşındığını belirten kalıcı yönlendirme durumu (301) döndürülür.
temp
İstemciye geçici yönlendirme durumu (302) döner. Bu öntanımlıdır.
seeother
İstemciye özkaynağın yerine başka bir şey konduğunu belirten "diğerine bak" durumu (303) döndürülür.
gone
İstemciye özkaynağın kalıcı olarak kaldırıldığını belirten "ölü bağlantı" durumu (410) döner. Bu durumda 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).

Örnek:

Redirect permanent /bir http://mesela.dom/iki
Redirect 303 /yedi http://mesela.dom/baskabisey

top

RedirectMatch Yönergesi

Açıklama:Geçerli URL ile eşleşen bir düzenli ifadeye dayanarak bir harici yönlendirme gönderir.
Sözdizimi:RedirectMatch [durum] düzenli-ifade URL
Bağlam:sunucu geneli, sanal konak, dizin, .htaccess
Geçersizleştirme:FileInfo
Durum:Temel
Modül:mod_alias

Bu yönerge URL-yolu ile eşleşmek üzere bir  düzenli ifade kabul etmesi dışında Redirect yönergesine eşdeğerdir. Belirtilen düzenli ifade 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:

RedirectMatch (.*)\.gif$ http://baska.sunucu.dom$1.jpg

top

RedirectPermanent Yönergesi

Açıklama:İstemciyi, kalıcı bir yönlendirme isteği döndürerek farklı bir URL’ye yönlendirir.
Sözdizimi:RedirectPermanent URL-yolu URL
Bağlam:sunucu geneli, sanal konak, dizin, .htaccess
Geçersizleştirme:FileInfo
Durum:Temel
Modül:mod_alias

Bu yönerge istemciye daima kalıcı yönlendirme durumu (301) döndürür. Yani, Redirect permanent ile aynı işi yapar.

top

RedirectTemp Yönergesi

Açıklama:İstemciyi, geçici bir yönlendirme isteği döndürerek farklı bir URL’ye yönlendirir.
Sözdizimi:RedirectTemp URL-yolu URL
Bağlam:sunucu geneli, sanal konak, dizin, .htaccess
Geçersizleştirme:FileInfo
Durum:Temel
Modül:mod_alias

Bu yönerge istemciye daima geçici yönlendirme durumu (302) döndürür. Yani, Redirect temp ile aynı işi yapar.

top

ScriptAlias Yönergesi

Açıklama:Bir URL’yi dosya sistemindeki bir yere eşler ve hedefi bir CGI betiği olarak çalıştırır.
Sözdizimi:ScriptAlias URL-yolu dosya-yolu|dizin-yolu
Bağlam:sunucu geneli, sanal konak
Durum:Temel
Modül:mod_alias

Hedef dizini, mod_cgi modülünün CGI betiği yorumlayıcısı tarafından çalıştırılacak betikleri içeren dizin olarak imlemesi dışında Alias yönergesinin yaptığı işi yapar. 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.

Örnek:

ScriptAlias /cgi-bin/ /siteler/cgi-bin/

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:

Alias /cgi-bin/ /siteler/cgi-bin/
<Location /cgi-bin >
SetHandler cgi-script
Options +ExecCGI
</Location>

Yapılandırma değiştiğinde kaynak kodlarının ister istemez açığa çıkmasını istemiyorsanız CGI betiklerinizi DocumentRoot altına koymayınız. ScriptAlias yönergesi URL’yi doğru yere eşlemekten başka orayı bir CGI betikleri dizini olarak imler. CGI betiklerinizi DocumentRoot altına koyarsanız çalıştırmak için ScriptAlias değil, <Directory>, SetHandler ve Options yönergelerini örnekteki gibi kullanın:

<Directory /usr/local/apache2/htdocs/cgi-bin >
SetHandler cgi-script
Options ExecCGI
</Directory>

Aynı dosya sistemi konumu ile çok sayıda URL-yolu eşleşebileceğinden, bir Directory bölümü ile sınırlanmadığı takdirde CGI betiklerinin kaynak kodları açığa çıkabilir; bu bakımdan ScriptAlias yönergesini yok sayan URL yollarının belirtilebilme olasılığı gözardı edilmemelidir.

Ayrıca bakınız:

top

ScriptAliasMatch Yönergesi

Açıklama:Bir URL’yi dosya sistemindeki bir yere düzenli ifade kullanarak eşler ve hedefi bir CGI betiği olarak çalıştırır.
Sözdizimi:ScriptAliasMatch düzenli-ifade dosya-yolu|dizin-yolu
Bağlam:sunucu geneli, sanal konak
Durum:Temel
Modül:mod_alias

Bu yönerge URL-yolu ile eşleşmek üzere bir  düzenli ifade kabul etmesi dışında ScriptAlias yönergesine eşdeğerdir. Belirtilen düzenli ifade 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:

ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1