mod_alias - Apache HTTP Sunucusu Sürüm 2.2

Apache HTTP Sunucusu Sürüm 2.2

Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.2 > Modüller

# Apache Modülü mod_alias

Mevcut Diller: en | ja | ko | tr

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.

### Yönergeler

### Konular

- İşlem Sırası

### Ayrıca bakınız:

- `mod_rewrite`
- URL’lerin Dosya sistemi ile Eşlenmesi

- Yorum

## İş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 sokulur. 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 sokulurlar.

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

## 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://mesela.dom/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 `Alias` yapılandırması `http://mesela.dom/imagefoo.gif` ile eşleşmez. Düzenli ifadelerin kullanıldığı daha karmaşık eşleşmeler için `AliasMatch` yönergesine bakınız.

`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, sonunda bir / yokmuşçasına bir `Alias` kullanılmayacaktır. Benzer şekilde, URL-yolu belirtirken sonda / kullanmazsanız dosya-yolu için de sonda / kullanmamalısınız.

`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>`

URL-yolu değiştirgesindeki bölü çizgilerinin tamamı istekteki URL-yolunun içinde bulunan bölü çizgileri ile eşleşir.

## 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`

Düzenli ifadeler tüm gücüyle kullanılabilir Örneğin, `URL-yolu` ile harf büyüklüğüne duyarsız eşleşmeler sağlayacak düzenli ifadeler kullanılabilir:

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

`Alias` ile `AliasMatch` arasındaki belirgin tek fark `Alias` yönergesinin URI'nin bir ek bölümünü, sağda, dosya yolunun sonundaki eşleşen parçayı özdevinimli olarak kopyalayacak olmasıdır. Halbuki `AliasMatch` bunu yapmaz. Yani, hemen her durumda, istek URI'sinin baştan sona tümünün düzenli ifade ile eşleşmesini ve sağ taraftaki ikamenin kullanılmasını istersiniz.

Başka bir deyişle, `Alias` yerine `AliasMatch` yazmak aynı etkiyi sağlamayacaktır. En azından, düzenli ifadenin başına `^` ve sonuna `(.*)$` ekledikten sonra yer değiştirme parçasının sonuna da `$1` eklemeniz gerekir.

Örneğin, bunu AliasMatch ile değiştirmek istediğinizi varsayalım:

`Alias /image/ /ftp/pub/image/`

Bu aynı şey değildir; bunu yapmayın! Bu, herhangi bir yerinde /image/ içeren tüm istekleri /ftp/pub/image/ dizinine gönderecektir:

`AliasMatch /image/ /ftp/pub/image/`

Aynı etkiyi elde etmek için yapacağınız bu olacaktır:

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

Şüphesiz, `Alias` yönergesinin çalıştığı yerde `AliasMatch` kullanmanın bir yararı yoktur. `AliasMatch` daha karmaşık şeyler yapma imkanı verir. Örneğin, farklı dizinler altındaki farklı dosyalar için başka yerdeki dosyaları sunmak isteyelim:

`AliasMatch ^/image/(.*)\.jpg$ /files/jpg.images/$1.jpg
AliasMatch ^/image/(.*)\.gif$ /files/gif.images/$1.gif`

Bu modüldeki yönergeler istekteki URL-yolu ile karşılaştırılmadan önce istenen URL'nin başlangıcındaki bölü çizgilerini sunucu temizler.

## 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
Uyumluluk: | URL-yolu'nun son bileşen olarak belirtilebilmesi desteği Apache HTTP Sucusunun 2.2.6 sürümü ile eklendi.

`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 ya bir şema ve konak ismi ile başlayan bir mutlak URL olmalıdır. Apache HTTP Sucusu 2.2.6 ve sonrasında bir bölü çizgisi ile başlayan bir URL yolu belirtilebilmektedir; bu 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.

### Ö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. 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 `RedirectMatch` yönergesine bakınız.

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

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`

## 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`

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

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

## 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://mesela.dom/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:

- CGI Öğreticisi

## 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`

AliasMatch'teki gibi, burada da düzenli ifadeler tüm gücüyle kullanılabilir. Örneğin, bir URL yolu ile harf büyüklüğüne duyarsız eşleşme sağlayan bir rumuz oluşturmak mümkündür:

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

`Alias` ve `AliasMatch` arasındaki farklarla ilgili herşey burada da geçerlidir. Ayrıntılar için `AliasMatch`yönergesine bakınız.

Mevcut Diller: en | ja | ko | tr

## Yorum

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.