mod_vhost_alias
Kitlesel sanal konakların devingen olarak yapılandırılmasını sağlar
Extension
mod_vhost_alias.c
vhost_alias_module

Bu modül, hangi dosyaların sunulacağını saptamak için dosya yolunun parçası olarak HTTP isteğinin `Host:` başlığının ve/veya IP adresinin kullanılmasını mümkün kılarak devingen yapılandırmalı sanal konaklar oluşturur. Böylece benzer yapılandırmaya sahip çok büyük sayıda sanal konak kullanımı kolaşlaşır.

# Bilginize

URI’leri dosya isimlerine dönüştürmek için mod_alias veya mod_userdir kullanılmışsa bunlar mod_vhost_alias yönergeleri tarafından aşağıda açıklandığı gibi geçersiz kılınırlar. Örneğin, aşağıdaki yapılandırma her durumda `/cgi-bin/script.pl` betiğini `/usr/local/apache2/cgi-bin/script.pl` betiğine eşleyecektir:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/" VirtualScriptAlias "/nerede/bilinmiyor/%0/cgi-bin/"
UseCanonicalName
Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma

# Dizin İsimlerinin Elde Edilmesi

Bu modüldeki tüm yönergeler bir dizgeyi bir dosya yoluna dönüştürerek çalışırlar. Dönüşüm dizgesi (bundan sonra “isim” diyeceğiz) ya sunucu ismi olur (bunun nasıl belirlendiğini öğrenmek için UseCanonicalName yönergesine bakınız) ya da sunucu üzerindeki sanal konağın IP adresi olur. Dönüşümü, `printf`’inkilerin benzeri birkaç biçem belirteci denetler:

`%%` | Bir `%` imi yerleştirir.
`%p` | Sanal konağın IP adresini yerleştirir.
`%N.M` | İsmin parçalarını yerleştirir.

`N` ve `M` ismin alt dizgelerini belirtmek için kullanılır. `N`, ismin noktalarla ayrılmış bileşenlerinden seçim yaparken `M`, `N` ile seçilen parçadan karakter seçmekte kullanılır. `M` isteğe bağlı olup mevcut olmaması halinde öntanımlı olarak sıfırdır. Noktanın varlığı `M`’nin varlığına bağlıdır. Dönüşüm şöyle uygulanır:

`0` | ismin tamamı
`1` | ilk parça
`2` | ikinci parça
`-1` | son parça
`-2` | sondan bir önceki parça
`2+` | ikinci parça ve sonraki parçaların hepsi
`-2+` | sondan bir önceki parça ve daha önceki parçaların hepsi
`1+` ve `-1+` | `0` ile aynı

`N` veya `M` parça sayısından büyükse dönüşüm dizgesi sadece alt çizgi karakterini içerir.

# Örnekler

Sunucu yapılandırma dosyanızda isme dayalı sanal konaklar için aşağıdaki yönergeler kullanılıyor olsun:

UseCanonicalName Off VirtualDocumentRoot "/usr/local/apache/sankonlar/%0"

`http://example.com/dizin/dosya.html` için yapılan bir istek `/usr/local/apache/sankonlar/example.com/dizin/dosya.html` dosyası ile yerine getirilecektir.

Çok büyük sayıda sanal konak için `sankonlar` dizininin boyutlarını küçük tutmak amacıyla dosyalar düzenlenebilir. Bunu yapılandırma dosyanızda şöyle yapabilirsiniz:

UseCanonicalName Off VirtualDocumentRoot "/usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2"

`http://falan.filan.example.com/dizin/dosya.html` için yapılan bir istek `/usr/local/apache/sankonlar/example.com/f/i/l/filan/dizin/dosya.html` ile yerine getirilecektir.

Bu sefer de parçaları ismin sonundan toplayalım:

VirtualDocumentRoot "/usr/local/apache/sankonlar/%3+/%2.-1/%2.-2/%2.-3/%2"

Bu durumda istek `/usr/local/apache/sankonlar/example.com/n/a/l/filan/dizin/dosya.html` ile karşılanırdı.

Şöyle bir şey de yapabilirsiniz:

VirtualDocumentRoot "/usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2.4+"

Bu örnek için istek `/usr/local/apache/sankonlar/example.com/f/i/l/an/dizin/dosya.html` dosyasından karşılanırdı.

Kullanıcıların çoğunun ortak isteği, istenen konak adının uzunluğu veya sayısı için endişelenmeksizin çok sayıda belge köküne çok sayıda alan adından erişilebilmesidir. Eğer istenen konak adı `www.domain.example.com` değil de `sub.www.domain.example.com` ise %3+ kullanımı, belge kök dizininin düşünüldüğü gibi `example.com` değil `/usr/local/apache/vhosts/domain.example.com/...` olmasını sağlar. Böyle durumlarda, daima alan adı ve tld ile sonuçlanan `%-2.0.%-1.0` birleşiminin kullanımı daha yararlı olabilir. Böylece, tüm ilk, ikinci ve üçüncü seviye alt alan adlarını aynı dizine yönlendirecek bir yapılandırma yapılabilir:

VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"

Yukarıdaki örnekte, `example.com`, `www.example.com` ve hatta `www.sub.example.com` bile `/usr/local/apache/vhosts/example.com` dizinine yönlendirilecektir.

IP’ye dayalı sanal konaklar için yapılandırma dosyanızda şu satırlar olabilirdi:

UseCanonicalName DNS VirtualDocumentRootIP "/usr/local/apache/sankonlar/%1/%2/%3/%4/belgeler" VirtualScriptAliasIP "/usr/local/apache/sankonlar/%1/%2/%3/%4/cgi-bin"

`http://falan.filan.example.com/dizin/dosya.html` için yapılan bir istek eğer `falan.filan.example.com`’un IP adresi 10.20.30.40 olsaydı, `/usr/local/apache/sankonlar/10/20/30/40/belgeler/dizin/dosya.html` dosyası ile karşılanırdı. `http://falan.filan.example.com/cgi-bin/betik.pl` için yapılan bir istek ise `/usr/local/apache/sankonlar/10/20/30/40/cgi-bin/betik.pl` betiğinin çalıştırılması ile sağlanırdı.

Bir `VirtualDocumentRoot` yönergesinin `.` karakterini içermesini isterseniz, bir biçem belirteci ile karışıklığa sebep olmaksızın bunu şöyle sağlayabilirsiniz:

VirtualDocumentRoot "/usr/local/apache/sankonlar/%2.0.%3.0"

Bu durumda `http://falan.filan.example.com/dizin/dosya.html` için yapılan bir istek `/usr/local/apache/sankonlar/filan.mesela/dizin/dosya.html` dosyası ile karşılanacaktır.

LogFormat yönergesinin `%V` ve `%A` biçem belirteçleri bu modülle birlikte kullanıldığında çok yararlı olurlar.

VirtualDocumentRoot
Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
VirtualDocumentRoot hesaplanan-dizin|none
VirtualDocumentRoot none
server config
virtual host

VirtualDocumentRoot yönergesi sunucu ismine göre belgelerin bulunacağı yeri Apache HTTP Sunucusunun saptamasını sağlar. `hesaplanan-dizin`’in dönüşüm sonucu DocumentRoot yönergesinin değeriymiş gibi belge ağacının kök dizini olarak kullanılır. `hesaplanan-dizin` yerine `none` belirtilmişse VirtualDocumentRoot iptal edilmiş olur. Bu yönerge VirtualDocumentRootIP yönergesinin kullanıldığı bağlamda yer alamaz.

# Bilginize

VirtualDocumentRoot yönergesi aynı bağlamda veya alt bağlamlarda da kullanılabilen DocumentRoot yönergelerini geçersiz kılar. Genel sunucu etki alanına bir VirtualDocumentRoot konulması, daha sonra yer alan her sanal konak tanımı içinde VirtualDocumentRoot yönergesine `None` atamadıkça bu sanal konaklarda yapılmış DocumentRoot atamalarını geçersiz kılacaktır.
VirtualDocumentRootIP
Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
VirtualDocumentRootIP hesaplanan-dizin|none
VirtualDocumentRootIP none
server config
virtual host

VirtualDocumentRootIP yönergesi, dizinin saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP adresini kullanması dışında VirtualDocumentRoot gibidir.

VirtualScriptAlias
Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
VirtualScriptAlias hesaplanan-dizin|none
VirtualScriptAlias none
server config
virtual host

VirtualScriptAlias yönergesi, CGI betiklerinin bulunacağı yeri Apache httpd’nin saptamasını sağlamak bakımından VirtualDocumentRoot yönergesinin yaptığını yapar. `/cgi-bin/` ile başlayan istekler için ise ScriptAlias yönergesinin yaptığını yapar.

VirtualScriptAliasIP
Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
VirtualScriptAliasIP hesaplanan-dizin|none
VirtualScriptAliasIP none
server config
virtual host

VirtualScriptAliasIP yönergesi, dizinin saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP adresini kullanması dışında VirtualScriptAlias gibidir.