--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
+<!-- English Revision: 420990 -->
+<!-- =====================================================
+ Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
+ Reviewed by: Orhan Berent <berent belgeler.org>
+========================================================== -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="details.xml.meta">
+<parentdocument href="./">Sanal Konaklar</parentdocument>
+ <title>Sanal Konak Eşlemenin Derinliğine İncelenmesi</title>
+
+<summary>
+
+ <p>Sanal konak kodu <strong>Apache 1.3</strong> sürümünde baştan yeniden
+ yazıldı. Bu belgede, bir istek aldığında Apache’nin hangi sanal konak
+ ile hizmet sunacağına nasıl karar verdiği açıklanmaya çalışılmıştır.
+ <directive module="core">NameVirtualHost</directive> yönergesi sayesinde
+ sanal konak yapılandırması 1.3 sürümünün öncesine göre daha kolay ve
+ daha güvenilir hale gelmiştir.</p>
+
+ <p>Sanal konakların nasıl çalıştığını öğrenmeden sadece çalıştırmak
+ isterseniz doğrudan <a href="examples.html">örneklerin bulunduğu
+ sayfaya</a> bakabilirsiniz.</p>
+
+</summary>
+
+<section id="configparsing"><title>Yapılandırma Dosyasının Çözümlenmesi</title>
+
+ <p>Bu belgede <code><VirtualHost></code> bölümleri dışında kalan
+ tanımlardan bahsederken <em>ana_sunucu</em>, <directive type="section"
+ module="core">VirtualHost</directive> bölümlerindeki tanımlamalardan
+ bahsederken <em>sankonlar</em> diyeceğiz.</p>
+
+ <p><directive module="mpm_common">Listen</directive>,
+ <directive module="core">ServerName</directive>,
+ <directive module="core">ServerPath</directive> ve
+ <directive module="core">ServerAlias</directive> yönergeleri bir sunucu
+ yapılandırmasının her yerinde karşımıza çıkabilir. Bununla birlikte,
+ sunucu dahilinde son göründükleri yerlerde önceki eşdeğerlerini geçersiz
+ kılarlar.</p>
+
+ <p><code>Listen</code> yönergesinin ana_sunucu için öntanımlı değeri
+ 80’dir. <code>ServerPath</code> ve <code>ServerAlias</code>
+ yönergelerinin ana_sunucu için öntanımlı değerleri yoktur. Öntanımlı
+ <code>ServerName</code> değeri ise sunucunun IP adresinden elde
+ edilir.</p>
+
+ <p>Ana_sunucu <code>Listen</code> yönergesinin iki işlevi vardır. Biri
+ Apache’nin dinleyeceği öntanımlı ağ portunu belirlemek, diğeri ise
+ yönlendirmeler sırasında mutlak URI’lerde kullanılan port numarasını
+ belirlemektir.</p>
+
+ <p>Ana_sunucunun aksine sankonların portları Apache‘nin dinleyeceği
+ portlar üzerinde etkili değildir.</p>
+
+ <p><code>VirtualHost</code> yönergesinde görünen her adresin seçimlik bir
+ portu olabilir. Eğer bir port belirtilmemişse öntanımlı olarak
+ ana_sunucunun son <code>Listen</code> yönergesinin değeri kullanılır.
+ Port olarak <code>*</code> belirtildiği takdirde bütün portlar dinlenir.
+ Adreslerin tamamını (DNS sorgularındaki çoklu A kayıtları dahil) içeren
+ kümeye sankonların <em>adres kümesi</em> denir.</p>
+
+ <p><directive module="core">NameVirtualHost</directive> yönergesi ilk
+ sankonun IP adresi için kullanılmadığı takdirde bu IP adresine sahip ilk
+ sankon IP’ye dayalı sankon olarak ele alınır. IP adresi olarak
+ <code>*</code> belirtmek de mümkündür.</p>
+
+ <p>Eğer isme dayalı sankonlar kullanılacaksa <code>NameVirtualHost</code>
+ yönergesinin bu isme dayalı sankonların IP adresi kümesini içermesi
+ <em>gerekir</em>. Başka bir deyişle, yapılandırma dosyanızın
+ <code>NameVirtualHost</code> yönergesine sankonların sunucu isimlerinin
+ karşı düştüğü IP adresini yazmalısınız.</p>
+
+ <p>Çok sayıda <code>NameVirtualHost</code> yönergesi belirtebilirse de her
+ IP:port çifti için birden fazla <code>NameVirtualHost</code> yönergesi
+ belirtilmemelidir.</p>
+
+ <p>Aşağıdaki iki örneğin eşdeğer olması için <code>NameVirtualHost</code>
+ ve <code>VirtualHost</code> yönergelerinin sıralamasının bir önemi
+ yoktur. (Sadece <em>tek</em> adreslik küme içindeki
+ <code>VirtualHost</code> yönergelerinin sırası önemlidir; aşağıya
+ bakınız:)</p>
+
+<table><tr>
+<td><example>
+ NameVirtualHost 111.22.33.44<br />
+ <VirtualHost 111.22.33.44><br />
+ # sunucu A<br />
+ ...<br />
+ </VirtualHost><br />
+ <VirtualHost 111.22.33.44><br />
+ # sunucu B<br />
+ ...<br />
+ </VirtualHost><br />
+ <br />
+ NameVirtualHost 111.22.33.55<br />
+ <VirtualHost 111.22.33.55><br />
+ # sunucu C<br />
+ ...<br />
+ </VirtualHost><br />
+ <VirtualHost 111.22.33.55><br />
+ # sunucu D<br />
+ ...<br />
+ </VirtualHost>
+</example></td>
+<td><example>
+ <VirtualHost 111.22.33.44><br />
+ # sunucu A<br />
+ </VirtualHost><br />
+ <VirtualHost 111.22.33.55><br />
+ # sunucu C<br />
+ ...<br />
+ </VirtualHost><br />
+ <VirtualHost 111.22.33.44><br />
+ # sunucu B<br />
+ ...<br />
+ </VirtualHost><br />
+ <VirtualHost 111.22.33.55><br />
+ # sunucu D<br />
+ ...<br />
+ </VirtualHost><br />
+ <br />
+ NameVirtualHost 111.22.33.44<br />
+ NameVirtualHost 111.22.33.55<br />
+ <br />
+</example></td>
+</tr></table>
+
+
+ <p>(Okuma kolaylığı bakımından soldaki sürümü tercih etmenizi öneririz.)
+ </p>
+
+ <p><code>VirtualHost</code> yönergesi çözümlendikten sonra sankon
+ sunucusuna yönergedeki ilk isme atanmış portun öntanımlı olduğu bir
+ <code>Listen</code> verilir.</p>
+
+ <p>Eğer tüm <code>VirtualHost</code> isimlerinin listesi aynı adres
+ kümesine çözümleniyorsa bu isimler birer <code>ServerAlias</code> gibi
+ ele alınırlar (bir <code>ServerAlias</code> yönergesi ile geçersiz
+ kılınmadıkça). Bir sankon tanımından sonra gelen <code>Listen</code>
+ satırlarının o sankonun adres kümesine atanmış portlara bir etkisinin
+ olmayacağına dikkat ediniz.</p>
+
+ <p>İsim listeleri IP adreslerine göre gruplanır ve bir çiftler tablosuna
+ kaydedilir. Eğer IP adresi bir <code>NameVirtualHost</code> yönergesinde
+ kullanılmışsa, liste bu IP adresi için tanımlanmış tüm sankonları
+ içerir. Eğer bu IP adresinin tanımlandığı bir sankon yoksa o
+ <code>NameVirtualHost</code> yönergesi yoksayılır ve günlüğe bir hata
+ kaydı düşülür. IP’ye dayalı sankonlar için çiftler listesinde isim
+ alanları boştur.</p>
+
+ <p>Çiftler listesini işleyen işlevin hızı nedeniyle bir istek sırasında IP
+ adresine göre gruplama yaparken kaynak harcaması en düşük düzeyde olur
+ hatta neredeyse hiç olmaz. Ek olarak, tablo, IP adresinin son
+ sekizlisindeki değişikliklere göre de en iyilenir.</p>
+
+ <p>Her sankon için bazı değerler öntanımlı olarak atanır. Bunların
+ başlıcaları:</p>
+
+ <ol>
+ <li>Sankon bir <directive module="core">ServerAdmin</directive>
+ yönergesi içermiyorsa,
+ <directive module="core">ResourceConfig</directive>,
+ <directive module="core">AccessConfig</directive>,
+ <directive module="core">Timeout</directive>,
+ <directive module="core">KeepAliveTimeout</directive>,
+ <directive module="core">KeepAlive</directive>,
+ <directive module="core">MaxKeepAliveRequests</directive>,
+ <directive module="core">ReceiveBufferSize</directive> ve
+ <directive module="core">SendBufferSize</directive> yönergeleri için
+ öntanımlı değerler ana_sunucudaki eşdeğerlerinden miras alınır. (Yani,
+ bu yönergeler için ana_sunucudaki son değerler miras alınır.)</li>
+
+ <li>Sankon için öntanımlı dizin erişim izinlerinin tanımlandığı "arama
+ öntanımlıları" ana_sunucununkilere katılır. Buna her modülün dizinlere
+ özgü yapılandırma bilgileri dahildir.</li>
+
+ <li>Her modülün ana_sunucudaki sunuculara özgü yapılandırmaları sankon
+ sunucusununkilerle katıştırılır.</li>
+ </ol>
+
+ <p>Esasen, ana_sunucu, sankon sunucularını oluştururken bir öntanımlılar
+ listesi veya öntanımlı değerlere dayanak noktası olarak ele alınır.
+ Fakat bu ana_sunucu tanımlarının yapılandırma dosyasındaki yerlerinin
+ saptanmasının konumuzla ilgisi yoktur; ana_sunucu yapılandırmasının
+ tamamı son katıştırma yapılacağı zaman çözümlenir. Bu bakımdan,
+ ana_sunucu tanımlarından bir kısmı sankon tanımlarından sonra yer alsa
+ bile sankon tanımlarında etkili olabilir.</p>
+
+ <p>Eğer, bu noktada ana_sunucu hiçbir <code>ServerName</code> satırı
+ içermiyorsa <program>httpd</program> programının çalıştığı makinenin
+ konak ismi öntanımlıdır. Ana_sunucunun <code>ServerName</code> için
+ yaptığı DNS sorgusundan dönen IP adreslerine <em>ana_sunucu adres
+ kümesi</em> diyoruz.</p>
+
+ <p>Tanımsız <code>ServerName</code> alanları için bir isme dayalı sankon,
+ sankonu tanımlayan <code>VirtualHost</code> yönergesinde belirtilen ilk
+ adresi öntanımlı değer kabul eder.</p>
+
+ <p>Sihirli <code>_default_</code> sankonları için ana_sunucunun
+ <code>ServerName</code> değeri kullanılır.</p>
+
+</section>
+
+<section id="hostmatching"><title>Sanal Konağın Belirlenmesi</title>
+
+ <p>Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle
+ belirler:</p>
+
+ <section id="hashtable"><title>Değer çiftleri tablosu aranır</title>
+
+ <p>Bir istemci tarafından bağlantı ilk yapıldığında önce IP-isim çiftleri
+ tablosunda istemcinin bağlandığı IP adresi için bir arama yapılır.</p>
+
+ <p>Arama başarısız olursa (IP adresi yoksa) hizmet, istekte belirtilen
+ port için bir <code>_default_</code> sankon varsa, o sankondan, yoksa
+ ana_sunucudan sunulur.</p>
+
+ <p>Eğer çiftler tablosunda IP adresi yoksa port numarası ile eşleştirme
+ çabası ayrıca, diğer isme dayalı sanal konaklardaki gibi ard arda ele
+ alınmayı gerektiren <code>NameVirtualHost *</code> durumundaki bir
+ girdiyle sonuçlanabilir.</p>
+
+ <p>Arama sonucunda tabloda IP adresi bulunursa sonraki adım hizmetin bir
+ IP’ye dayalı sankondan mı yoksa isme dayalı bir sankondan mı
+ sunulacağına karar vermektir.</p>
+
+ </section>
+
+ <section id="ipbased"><title>IP’ye dayalı sankon</title>
+
+ <p>Eğer tabloda bulduğumuz girdinin isim alanları boşsa bir IP’ye dayalı
+ sanal konak bulmuşuz demektir. Artık karar vermek için başka bir şey
+ yapmaya gerek yoktur ve istek bu sankondan sunulur.</p>
+
+ </section>
+
+ <section id="namebased"><title>İsme dayalı sankon</title>
+
+ <p>Tabloda bulduğumuz girdi için bir isim listesi varsa bir isme dayalı
+ sankon sözkonusudur. Bu isim listesi, sankonları, ilgili
+ <code>VirtualHost</code> bölümlerinin yapılandırma dosyasında yer alış
+ sırasına göre içerir.</p>
+
+ <p>Bu listedeki ilk sankon (yapılandırma dosyasında belirtilen IP adresine
+ sahip ilk sankon) en yüksek önceliğe sahiptir ve sunucu ismi
+ belirtilmeyen veya <code>Host:</code> başlık alanı olmayan istekleri bu
+ sankon karşılar.</p>
+
+ <p>Eğer istemci bir <code>Host:</code> başlık alanı ile istek yapmışsa
+ liste bu sankon için aranır ve hizmet <code>ServerName</code> veya
+ <code>ServerAlias</code> ile ilk eşleşmenin sağlandığı sankondan
+ sunulur. <code>Host:</code> alanında bir port belirtilebilirse de Apache
+ daima istemcinin isteği gönderdiği portu gerçek port kabul eder.</p>
+
+ <p>Eğer istemci <code>Host:</code> başlık alanı bulunmayan bir HTTP/1.0
+ isteği yapmışsa istemcinin hangi sankona bağlanmayı denediğini bilemeyiz
+ ve istekteki URI ile mevcut <code>ServerPath</code> değerini
+ eşleştirmeye çalışırız. Listedekilerden ilk eşleşen yola sahip sankondan
+ hizmeti sunarız.</p>
+
+ <p>İstekle eşleşen bir sankon bulunamazsa IP listesinde istemcinin
+ bağlandığı portla eşleşen ilk sankondan hizmeti sunarız.</p>
+
+ </section>
+
+ <section id="persistent"><title>Kalıcı bağlantılar</title>
+
+ <p>Yukarıda açıklanan IP araması belli bir TCP/IP oturumunda bir defaya
+ mahsus yapıldığı halde bir kalıcı/KeepAlive bağlantı sırasında her istek
+ için ayrı bir arama yapılır. Başka bir deyişle, bir istemci tek bir
+ kalıcı bağlantı üzerinde farklı isme dayalı sankonlardan sayfa talebinde
+ bulunabilir.</p>
+
+ </section>
+
+ <section id="absoluteURI"><title>Mutlak URI</title>
+
+ <p>Eğer istekte belirtilen URI bir mutlak URI ise ve istek yapılan konak
+ ismi ve port ana sunucuyla veya sankonlardan biriyle eşleşiyorsa,
+ şema/konakadı/port öneki ayrılır ve elde edilen göreli URI ilgili
+ sankondan veya ana sunucudan sunulur. Eğer bir eşleşme sağlanamazsa
+ URI’ye dokunulmaz ve istek bir vekil isteği olarak ele alınır.</p>
+</section>
+
+<section id="observations"><title>İzlenimler</title>
+
+ <ul>
+ <li>Bir isme dayalı sankon asla bir IP’ye dayalı sankon ile (veya tersi)
+ etkileşime girmez. IP’ye dayalı sankonlara sadece kendi adres
+ kümesindeki bir IP adresi üzerinden erişilebilir, asla başka bir
+ adresten erişilemez. Aynısı isme dayalı sankonlara da uygulanır;
+ onlara sadece bir <code>NameVirtualHost</code> yönergesi ile
+ tanımlanmış adres kümesindeki bir IP adresi üzerinden
+ erişilebilir.</li>
+
+ <li>Bir IP’ye dayalı sankon için asla <code>ServerAlias</code> ve
+ <code>ServerPath</code> değerine bakılmaz.</li>
+
+ <li>Yapılandırma dosyası içinde isme/IP’ye dayalı ve
+ <code>_default_</code> sankonlar ile <code>NameVirtualHost</code>
+ yönergelerinin yer alış sırasının birbirlerine göre bir önemi yoktur.
+ Sıralama sadece aynı IP adresine sahip isme dayalı sankonlar arasında
+ önemlidir. Aynı adres kümesine mensup isme dayalı sankonlardan
+ yapılandırma dosyasında ilk sırada yer alanı en yüksek önceliğe
+ sahiptir.</li>
+
+ <li>Güvenlik saikiyle, eşleştirme işlemi sırasında <code>Host:</code>
+ başlık alanında belirtilen port asla kullanılmaz. Apache daima
+ istemcinin bağlantı kurduğu gerçek portu kullanır.</li>
+
+ <li>Değeri başka bir <code>ServerPath</code> yönergesinin değeri için
+ önek olan bir <code>ServerPath</code> yönergesi yapılandırma
+ dosyasında daha önce yer alıyorsa sonrakiyle eşleşme asla
+ gerçekleşmez. (Bu belirsizliği giderecek bir <code>Host:</code> başlık
+ alanının mümkün olmadığı varsayılır.)</li>
+
+ <li>Eğer tek bir IP adresine sahip IP’ye dayalı iki sankon varsa eşleşme
+ daima yapılandırma dosyasında ilk yer alanla gerçekleşir. Böyle bir
+ şey kasten yapılmaz. Sunucu böyle bir durumu saptadığında hata
+ günlüğünde bir uyarı verecektir.</li>
+
+ <li>Bir <code>_default_</code> sankon sadece istekle eşleşen bir IP
+ adresi bulunamadığında port numarası eşleştiği takdirde isteğe hizmet
+ sunabilir. Port düzeyinde eşleşmenin olabilmesi için isteğin geldiği
+ port ile sankon için belirtilen port eşleşmelidir. Olası tüm portlarla
+ eşleşmeyi sağlamak üzere yıldız imi (<code>_default_:*</code>
+ şeklinde) kullanılabilir. Aynı şey <code>NameVirtualHost *</code>
+ sankonlarına da uygulanır.</li>
+
+ <li>Ana_sunucunun bir isteğe hizmet sunabilmesi için istemcinin
+ bağlandığı IP adresi ve port hiçbir yerde belirtilmemiş ve
+ <code>_default_</code> dahil hiçbir sankon ile eşleşme sağlanamamış
+ olmalıdır. Başka bir deyişle, istemcinin bağlandığı port ile eşleşen
+ bir <code>_default_</code> sankon olmadıkça adres ve port belirtmeyen
+ bir isteğe ana_sunucu yanıt verecektir.</li>
+
+ <li><code>Host:</code> başlık alanı içermeyen veya hedefi bilinmeyen bir
+ istek geldiği takdirde, eğer bu istemcinin bağlandığı adres ve port
+ için (örneğin, <code>NameVirtualHost</code> ile) tanımlanmış bir isme
+ dayalı sankon varsa bu isteğe ne ana_sunucu ne de bir
+ <code>_default_</code> sankon hizmet sunabilir.</li>
+
+ <li><code>VirtualHost</code> yönergelerinde asla DNS isimleri
+ belirtmemelisiniz. Aksi takdirde sunucuyu başlatma sırasında DNS
+ sorgusu yapmaya zorlamış olursunuz. Listelenen tüm alanlar için DNS
+ üzerinde tam denetime sahip değilseniz bu ayrıca bir güvenlik
+ tehdidine yol açar. Bu konuda daha ayrıntılı bilgi edinmek için <a
+ href="../dns-caveats.html">DNS ile ilgili konular ve Apache</a>
+ belgesine bakınız.</li>
+
+ <li><code>ServerName</code> her sankon için ayrı ayrı belirlenmiş
+ olmalıdır. Aksi takdirde her sankon için bir DNS sorgusu gerekir.</li>
+ </ul>
+ </section>
+
+</section>
+
+<section id="tips"><title>İpuçları</title>
+
+ <p><a href="../dns-caveats.html#tips">DNS konuları</a> sayfasındaki
+ ipuçlarına ilaveten burada da bazı ipuçları bulacaksınız:</p>
+
+ <ul>
+ <li>Ana_sunucu tanımlarının hepsini <code>VirtualHost</code>
+ tanımlarının öncesinde bitirin. Bu ayrıca yapılandırmanızın
+ okunabilirliğini de arttırır; <code>VirtualHost</code> tanımlarının
+ sonrasına sarkan yapılandırmaların katıştırılması işlemi tüm sanal
+ konakları etkileyebilen tanımlar bakımından bir
+ karışıklığa/belirsizliğe sebep olabilir.)</li>
+
+ <li>Birbirleriyle ilgili <code>NameVirtualHost</code> ve
+ <code>VirtualHost</code> tanımlarını okunabilirliği arttırmak için
+ gruplayın.</li>
+
+ <li>Değeri başka bir <code>ServerPath</code> için önek olan tanımlamalar
+ yapmaktan kaçının. Bundan kaçınamıyorsanız, yolu uzun olanı yolu kısa
+ olanın öncesine yerleştirin. Örneğin, "ServerPath /abc/def" önce
+ "ServerPath /abc" sonra yer alsın.</li>
+ </ul>
+
+</section>
+</manualpage>
+
--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
+<!-- English Revision: 659902 -->
+<!-- =====================================================
+ Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
+ Reviewed by: Orhan Berent <berent belgeler.org>
+========================================================== -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="examples.xml.meta">
+<parentdocument href="./">Sanal Konaklar</parentdocument>
+ <title>Sanal Konak Örnekleri</title>
+
+<summary>
+
+ <p>Bu belgede sanal konaklarla ile ilgili olarak karşılaşılması olası tüm
+ senaryolara yer verilmeye çalışılmıştır. Buradaki senaryolar, tek bir
+ sunucu üzerinde <a href="name-based.html">isme dayalı</a> veya <a
+ href="ip-based.html">IP’ye dayalı</a> sanal konaklar aracılığıyla çok
+ sayıda sitenin sunumu ile ilgilidir.
+ </p>
+
+</summary>
+
+ <section id="purename">
+ <title>Tek bir IP ile çok sayıda isme dayalı site</title>
+
+ <p>Bu örnekte, makinenizin tek bir IP adresine sahip olduğunu ve bu
+ makineye <code>mesela.dom</code> ve <code>faraza.dom</code> şeklinde
+ (DNS A kayıtları sayesinde) farklı isimlerle erişilebildiğini
+ varsayalım.</p>
+
+ <note><title>Bilginize</title><p>Apache sunucusu üzerinde sanal konakları
+ yapılandırmakla bu konak isimleri için sihirli bir şekilde DNS
+ kayıtlarının da oluşturulmasını sağlamış olmazsınız. Bu isimler için
+ ilgili DNS kayıtlarında sizin IP adresinize çözümlenen A kayıtlarının
+ olması gerekir, yoksa sitenize kimse erişemez. Sitelere erişimi yerel
+ olarak denemek isterseniz, bu girdileri <code>hosts</code> dosyanıza
+ yazabilirsiniz. Fakat bu sadece sizin makinenizde çalışır. Yerel
+ ağınızdaki her makinenin <code>hosts</code> dosyasına bu girdileri
+ yazarak yerel ağdan erişimi bu yolla sağlayabilirsiniz ama dış ağdan
+ gelecek ziyaretçileriniz için DNS kayıtlarınızın olması şarttır.</p>
+ </note>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ # Apache’nin 80. portu dinlediğinden emin olalım<br />
+ Listen 80<br />
+ <br />
+ # Sanal konak istekleri için bütün IP adresleri dinlensin.<br />
+ NameVirtualHost *:80<br />
+ <br />
+ <VirtualHost *:80><br />
+ <indent>
+ DocumentRoot /siteler/mesela<br />
+ ServerName mesela.dom<br />
+ <br />
+ # Diğer yönergeler, burada ...<br />
+ <br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost *:80><br />
+ <indent>
+ DocumentRoot /siteler/faraza<br />
+ ServerName faraza.dom<br />
+ <br />
+ # Diğer yönergeler, burada ...<br />
+ <br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p>Yıldız imleri tüm adreslerle eşleşmeyi sağladığından ana sunucu
+ (yapılandırma dosyası genelindeki yapılandırma - sunucu geneli)
+ erişilebilir olmayacaktır. <code>mesela.dom</code> yapılandırma
+ dosyasındaki ilk sanal konak olduğundan en yüksek önceliğe sahiptir ve
+ <cite>öntanımlı</cite> veya <cite>baskın</cite> site olarak davranır.
+ Yani, hiçbir <code>ServerName</code> yönergesi ile eşleşmeyen bir istek
+ alındığında bu istek ilk <code>VirtualHost</code> yapılandırması ile
+ karşılanır.</p>
+
+ <note><title>Bilginize</title>
+ <p>İsterseniz, <code>*</code> yerine kendi IP adresinizi yazabilirsiniz.
+ Ancak bu durumda bunu hem <code>VirtualHost</code> hem de
+ <code>NameVirtualHost</code> için yapmalısınız:</p>
+
+ <example>
+ NameVirtualHost 192.168.1.22<br />
+ <br />
+ <VirtualHost 192.168.1.22><br />
+ # vs. ...
+ </example>
+
+ <p>Bununla birlikte, IP adresinin önceden kestirilebilir olmadığı
+ sistemlerde, örneğin, hizmet sağlayıcınıza çevirmeli ağ ile bağlanıyor
+ ve onun rasgele atadığı bir IP adresi için bir devingen DNS çözümü
+ kullanıyorsanız, IP adresi değil de <code>*</code> kullanmak daha çok
+ işinize yarayacaktır. Yıldız imi her IP adresi ile eşleşeceğinden IP
+ adresiniz değişse bile bu yapılandırmayı değiştirmeden
+ kullanabilirsiniz.</p>
+ </note>
+
+ <p>Yukarıdaki yapılandırmayı hemen hemen tüm isme dayalı sanal konaklar
+ için kullanabilirsiniz. Bu yapılandırmanın çalışmayacağı tek durum,
+ farklı içerikleri farklı IP adreslerinden sunma gereğiyle
+ karşılaşmaktır.</p>
+
+ </section>
+
+ <section id="twoips">
+ <title>IP adresleri farklı çok sayıda isme dayalı site</title>
+
+ <note><title>Bilginize</title>
+ <p>Burada açıklanan teknikler istendiği kadar çok IP adresine
+ genişletilebilir.</p>
+ </note>
+
+ <p>Sunucunun iki IP adresi olsun. Birinden "ana sunucu"
+ (<code>192.168.1.2</code>) diğerinden <code>mesela.dom</code>
+ <code>192.168.2.2</code> hizmet versin. Bu arada başka sanal konakları
+ da sunabilelim istiyoruz.</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ Listen 80<br />
+ <br />
+ # Bu, 192.168.1.2 adresindeki "ana sunucu" olsun<br />
+ ServerName sunucu.faraza.dom<br />
+ DocumentRoot /siteler/anasunucu<br />
+ <br />
+ # Burası da diğer adres için<br />
+ NameVirtualHost 192.168.2.2<br />
+ <br />
+ <VirtualHost 192.168.2.2><br />
+ <indent>
+ DocumentRoot /siteler/mesela<br />
+ ServerName mesela.dom<br />
+ <br />
+ # Diğer yönergeler, burada ...<br />
+ <br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 192.168.2.2><br />
+ <indent>
+ DocumentRoot /siteler/falanca<br />
+ ServerName falanca.dom<br />
+ <br />
+ # Diğer yönergeler, burada ...<br />
+ <br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p><code>192.168.2.2</code> adresinden gelmeyen tüm isteklere ana sunucu
+ (<code>sunucu.faraza.dom</code>), <code>192.168.2.2</code> adresinden
+ gelen sunucu ismi belirtmeyenler ile <code>Host:</code> başlığı
+ belirtmeyenlere ise <code>mesela.dom</code> hizmet verecektir.</p>
+
+ </section>
+
+ <section id="intraextra"><title>Aynı içeriği farklı IP adresleriyle sunmak
+ (örn., dahili ve harici ağlara)</title>
+
+ <p>Sunucu makine iki IP adresine sahip olsun. Biri iç ağa
+ (<code>192.168.1.1</code>) diğeri dış ağa (<code>172.20.30.40</code>)
+ bakıyor olsun. <code>sunucu.mesela.dom</code> ismi dış ağda dış ağa
+ bakan IP’ye, iç ağda ise iç ağa bakan IP’ye çözümleniyor olsun.</p>
+
+ <p>Bu durumda, sunucu hem iç hem de dış ağdan gelen isteklere aynı içerik,
+ dolayısıyla aynı <code>VirtualHost</code> bölümü ile hizmet
+ verebilir.</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ NameVirtualHost 192.168.1.1<br />
+ NameVirtualHost 172.20.30.40<br />
+ <br />
+ <VirtualHost 192.168.1.1 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/sunucu<br />
+ ServerName sunucu.mesela.dom<br />
+ ServerAlias sunucu<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p>Artık, hem iç hem de dış ağdan gelen isteklere aynı
+ <code>VirtualHost</code> bölümünden hizmet sunulacaktır.</p>
+
+ <note><title>Bilginize:</title>
+ <p>İç ağdan istek yapan biri, tam nitelenmiş konak ismi
+ <code>sunucu.mesela.dom</code> yerine makine ismini
+ (<code>sunucu</code>) kullanabilir (<code>ServerAlias sunucu</code>
+ satırına dikkat).</p>
+
+ <p>Ayrıca, yukarıdaki gibi iki ayrı IP adresi belirtmek yerine sadece
+ <code>*</code> belirtmekle sunucunun tüm IP adreslerine yine aynı
+ içerikle yanıt vereceğine dikkat ediniz.</p>
+ </note>
+
+ </section>
+
+ <section id="port"><title>Farklı portlarla farklı siteler</title>
+
+ <p>Aynı IP adresine sahip çok sayıda konak ismine sahip olduğunuzu ve
+ bunların bazılarının farklı portları kullanmasını istediğinizi
+ varsayalım. <directive module="core">NameVirtualHost</directive>
+ yönergesi ile port tanımlamak suretiyle bunu mümkün kılabilirsiniz.
+ <code>NameVirtualHost <em>isim:port</em></code> tanımı yapmadan
+ veya bunun yerine <directive module="mpm_common">Listen</directive>
+ kullanarak <code>VirtualHost <em>isim:port</em></code> kullanmaya
+ kalkışırsanız, yapılandırmanız çalışmayacaktır.</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ Listen 80<br />
+ Listen 8080<br />
+ <br />
+ NameVirtualHost 172.20.30.40:80<br />
+ NameVirtualHost 172.20.30.40:8080<br />
+ <br />
+ <VirtualHost 172.20.30.40:80><br />
+ <indent>
+ ServerName mesela.dom<br />
+ DocumentRoot /siteler/mesela-80<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40:8080><br />
+ <indent>
+ ServerName mesela.dom<br />
+ DocumentRoot /siteler/mesela-8080<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40:80><br />
+ <indent>
+ ServerName faraza.dom<br />
+ DocumentRoot /siteler/faraza-80<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40:8080><br />
+ <indent>
+ ServerName faraza.dom<br />
+ DocumentRoot /siteler/faraza-8080<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ </section>
+
+ <section id="ip"><title>IP’ye dayalı sanal konaklar</title>
+
+ <p>Sunucu makinenin, biri <code>mesela.dom</code> adından çözümlenen
+ <code>172.20.30.40</code>, diğeri <code>faraza.dom</code> adından
+ çözümlenen <code>172.20.30.50</code> diye iki IP adresi olsun.</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ Listen 80<br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/mesela<br />
+ ServerName mesela.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.50><br />
+ <indent>
+ DocumentRoot /siteler/faraza<br />
+ ServerName faraza.dom<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p><code><VirtualHost></code> yönergelerinde belirtilmeyen
+ adreslerle yapılan isteklere (örneğin, <code>localhost</code>) sunucu
+ genelindeki yapılandırma ile ana sunucu yanıt verecektir.</p>
+ </section>
+
+ <section id="ipport">
+ <title>Hem IP’ye hem de porta dayalı sanal konaklar</title>
+
+ <p>Sunucu makinenin, biri <code>mesela.dom</code> adından çözümlenen
+ <code>172.20.30.40</code>, diğeri <code>faraza.dom</code> adından
+ çözümlenen <code>172.20.30.50</code> diye iki IP adresi olsun ve iki
+ konak da hem 80 hem de 8080 portlarında çalışsınlar istiyoruz.</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ Listen 172.20.30.40:80<br />
+ Listen 172.20.30.40:8080<br />
+ Listen 172.20.30.50:80<br />
+ Listen 172.20.30.50:8080<br />
+ <br />
+ <VirtualHost 172.20.30.40:80><br />
+ <indent>
+ DocumentRoot /siteler/mesela-80<br />
+ ServerName mesela.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40:8080><br />
+ <indent>
+ DocumentRoot /siteler/mesela-8080<br />
+ ServerName mesela.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.50:80><br />
+ <indent>
+ DocumentRoot /siteler/faraza-80<br />
+ ServerName faraza.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.50:8080><br />
+ <indent>
+ DocumentRoot /siteler/faraza-8080<br />
+ ServerName faraza.dom<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ </section>
+
+ <section id="mixed">
+ <title>Hem isme hem de IP‘ye dayalı sanal konaklar</title>
+
+ <p>Bazı adreslerde isme dayalı, bazılarında da IP’ye dayalı sanal konaklar
+ çalışsın istersek...</p>
+
+ <example><title>Sunucu yapılandırması</title>
+
+ Listen 80<br />
+ <br />
+ NameVirtualHost 172.20.30.40<br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/mesela<br />
+ ServerName mesela.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/faraza<br />
+ ServerName faraza.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/falanca<br />
+ ServerName falanca.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ # IP-based<br />
+ <VirtualHost 172.20.30.50><br />
+ <indent>
+ DocumentRoot /siteler/filanca<br />
+ ServerName filanca.dom<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.60><br />
+ <indent>
+ DocumentRoot /siteler/fesmekan<br />
+ ServerName fesmekan.dom<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ </section>
+
+ <section id="proxy"><title><code>Virtualhost</code> ve
+ <code>mod_proxy</code>’nin birlikte kullanımı</title>
+
+ <p>Bu örnekte bir arabirimi dışarıya bakan bir makinede, başka bir
+ makinede çalışan bir sunucuya sanal konak olarak, bir vekil sunucu
+ çalıştırmak istediğimizi varsayıyoruz. <code>192.168.111.2</code> IP
+ adresli bir makinede aynı isimde bir sanal konak yapılandırılmış olsun.
+ Çok sayıda konak ismi için vekil olarak tek bir makine kullandığımızdan
+ ve konak isminin de aktarılmasını arzuladığımızdan <directive
+ module="mod_proxy">ProxyPreserveHost On</directive> yönergesini
+ kullandık.</p>
+
+ <example>
+ <VirtualHost *:*><br />
+ <indent>
+ ProxyPreserveHost On<br />
+ ProxyPass / http://192.168.111.2/<br />
+ ProxyPassReverse / http://192.168.111.2/<br />
+ ServerName konak.mesela.dom<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ </section>
+
+ <section id="default"><title><code>_default_</code> sanal konakları</title>
+
+ <section id="defaultallports">
+ <title>Tüm portlar için <code>_default_</code></title>
+
+ <p>Bir IP adresi ve port belirtilmeyen veya hiçbir sanal konağın hiçbir
+ adresi/portu ile eşleşmeyen istekleri yakalamak istersek...</p>
+
+ <example>
+ <title>Sunucu yapılandırması</title>
+
+ <VirtualHost _default_:*><br />
+ <indent>
+ DocumentRoot /siteler/default<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p>Bütün portlarla eşleşen böyle bir öntanımlı sanal konağın kullanımı
+ hiçbir isteğin ana sunucuya gitmemesi sonucunu doğurur.</p>
+
+ <p>Bir öntanımlı sanal konak, asla, isme dayalı sanal konaklar için
+ kullanılmış bir adrese/porta gönderilmiş bir isteğe hizmet sunmaz. Eğer
+ istek bilinmeyen bir <code>Host:</code> başlığına sahipse veya hiç
+ <code>Host:</code> başlığı içermiyorsa isteğe daima ilk (yapılandırma
+ dosyasındaki ilk) isme dayalı sanal konak hizmet sunar.</p>
+
+ <p>Her isteği tek bir bilgilendirme sayfasına (veya betiğe) yönlendirmek
+ isterseniz <directive module="mod_alias">AliasMatch</directive> veya
+ <directive module="mod_rewrite">RewriteRule</directive> yönergesini
+ kullanabilirsiniz.</p>
+ </section>
+
+ <section id="defaultdifferentports">
+ <title>Farklı portlardan <code>_default_</code></title>
+
+ <p>Önceki yapılandırmaya ek olarak 80. portta ayrı bir
+ <code>_default_</code> sanal konağı kullanmak istersek...</p>
+
+ <example>
+ <title>Sunucu yapılandırması</title>
+
+ <VirtualHost _default_:80><br />
+ <indent>
+ DocumentRoot /siteler/default80<br />
+ # ...<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost _default_:*><br />
+ <indent>
+ DocumentRoot /siteler/default<br />
+ # ...<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p>80. porttan hizmet sunan <code>_default_</code> sanal konağı IP adresi
+ belirtilmeyen tüm istekleri yakalar, bunu yapabilmesi için yapılandırma
+ dosyasında tüm portlara hizmet sunan benzerinden önce yer almalıdır. Bu
+ durumda ana sunucu hiçbir isteğe yanıt vermeyecektir.</p>
+ </section>
+
+ <section id="defaultoneport">
+ <title>Tek portluk <code>_default_</code></title>
+
+ <p><code>_default_</code> sanal konağının sadece 80. porttan hizmet
+ sunmasını istersek...</p>
+
+ <example>
+ <title>Sunucu yapılandırması</title>
+
+ <VirtualHost _default_:80><br />
+ DocumentRoot /siteler/default<br />
+ ...<br />
+ </VirtualHost>
+ </example>
+
+ <p>80. porttan gelen IP adresi belirtilmemiş isteklere
+ <code>_default_</code> sanal konağı, diğer portlardan gelen adres
+ belirtilmemiş isteklere ise ana sunucu hizmet verecektir.</p>
+ </section>
+
+ </section>
+
+ <section id="migrate"><title>Bir isme dayalı sanal konağı bir IP’ye dayalı
+ sanal konakla yansılamak</title>
+
+ <p>İsme dayalı sanal konak örneklerinin <a href="#twoips">2. sinde</a> adı
+ geçen <code>falanca.dom</code> bu örnekte kendi IP adresinden hizmet
+ veriyor olsun. İsme dayalı sanal konağı eski IP adresiyle kaydetmiş
+ vekiller ve isim sunucularından kaynaklanacak olası sorunlardan kaçınmak
+ için yansılama sırasında sanal konağı hem eski hem de yeni IP adresiyle
+ sunmamız lazım.</p>
+
+ <p>Çözüm kolay, çünkü yapacağımız sadece <code>VirtualHost</code>
+ yönergesine yeni IP adresini (<code>192.168.2.2</code>) eklemek olacak.</p>
+
+ <example>
+ <title>Sunucu yapılandırması</title>
+
+ Listen 80<br />
+ ServerName mesela.dom<br />
+ DocumentRoot /siteler/mesela<br />
+ <br />
+ <VirtualHost 192.168.1.2><br />
+ <br />
+ <VirtualHost 192.168.1.2 192.168.2.2><br />
+ <indent>
+ DocumentRoot /siteler/falanca<br />
+ ServerName falanca.dom<br />
+ # ...<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 192.168.1.2><br />
+ <indent>
+ DocumentRoot /siteler/faraza<br />
+ ServerName faraza.dom<br />
+ ServerAlias *.faraza.dom<br />
+ # ...<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p>Böylece sanal konağa hem yeni (bir IP’ye dayalı sanal konak olarak)
+ hem de eski adresinden (bir isme dayalı sanal konak olarak)
+ erişilebilecektir.</p>
+
+ </section>
+
+ <section id="serverpath">
+ <title><code>ServerPath</code> yönergesinin kullanımı</title>
+
+ <p>İsme dayalı iki sanal konağı olan bir sunucumuz olsun. Doğru sanal
+ konağa erişebilmek için istemcinin doğru <code>Host:</code> başlığı
+ göndermesi gerekir. Eski HTTP/1.0 istemcileri böyle bir başlık
+ göndermedikleri için Apache istemcinin hangi sanal konağa erişmek
+ istediğini bilemez (ve isteğe ilk sanal konaktan hizmet sunar). Daha iyi
+ bir geriye uyumluluk sağlamak için isme dayalı sanal konağa bir önek
+ bağlantısı içeren bir bilgilendirme sayfası sunmak üzere yeni bir sanal
+ konak oluşturabiliriz.</p>
+
+ <example>
+ <title>Sunucu yapılandırması</title>
+
+ NameVirtualHost 172.20.30.40<br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ # ilk sanal konak<br />
+ DocumentRoot /siteler/baska<br />
+ RewriteEngine On<br />
+ RewriteRule ^/.* /siteler/baska/index.html<br />
+ # ...<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ DocumentRoot /siteler/baska/bir<br />
+ <indent>
+ ServerName bir.baska.tld<br />
+ ServerPath /bir/<br />
+ RewriteEngine On<br />
+ RewriteRule ^(/bir/.*) /siteler/baska$1<br />
+ # ...<br />
+ </indent>
+ </VirtualHost><br />
+ <br />
+ <VirtualHost 172.20.30.40><br />
+ <indent>
+ DocumentRoot /siteler/baska/iki<br />
+ ServerName iki.baska.tld<br />
+ ServerPath /iki/<br />
+ RewriteEngine On<br />
+ RewriteRule ^(/iki/.*) /siteler/baska$1<br />
+ # ...<br />
+ </indent>
+ </VirtualHost>
+ </example>
+
+ <p><directive module="core">ServerPath</directive> yönergesinden dolayı
+ <code>http://bir.baska.tld/bir/</code> şeklinde yapılan isteklere
+ <em>daima</em> “bir” sanal konağı hizmet sunacaktır.</p>
+
+ <p><code>http://bir.baska.tld/</code> şeklinde yapılan isteklere ise
+ istemcinin doğru <code>Host:</code> başlığı göndermesi şartıyla
+ “bir” sanal konağı hizmet sunacaktır. İstemci, bir
+ <code>Host:</code> başlığı göndermediği takdirde ilk konaktan bir
+ bilgilendirme sayfası alacaktır.</p>
+
+ <p>Yalnız buradaki bir tuhaflığa dikkat edin: Eğer istemci bir
+ <code>Host:</code> başlığı göndermeden
+ <code>http://iki.baska.tld/bir/</code> şeklinde bir istek yaparsa bu
+ isteğe de “bir” sanal konağı hizmet sunacaktır.</p>
+
+ <p><directive module="mod_rewrite">RewriteRule</directive> yönergesi, bir
+ istemcinin, bir URL öneki belirtsin ya da belirtmesin doğru
+ <code>Host:</code> başlığı gönderdiğinden emin olmak için
+ kullanılmıştır.</p>
+
+ </section>
+
+</manualpage>
--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
+<!-- English Revision: 659902 -->
+<!-- =====================================================
+ Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
+ Reviewed by: Orhan Berent <berent belgeler.org>
+========================================================== -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="fd-limits.xml.meta">
+<parentdocument href="./">Sanal Konaklar</parentdocument>
+ <title>Dosya Tanıtıcı Sınırları</title>
+
+<summary>
+
+ <p>Çok büyük sayıda sanal konak kullanıyorsanız ve bunların her biri için
+ ayrı günlük kayıtları tutuyorsanız, Apache dosya tanıtıcılarını
+ tüketebilir. Apache tarafından, dahili olarak 10-20 dosya tanıtıcıya ek
+ olarak her hata günlüğü için bir ve her diğer günlük kaydı için bir dosya
+ tanıcı kullanılır. Unix işletim sisteminde dosya tanıtıcıların sayısı
+ süreç başına 64 taneyle sınırlıdır ve gerekirse donanıma bağlı olarak
+ arttırılabilir.</p>
+
+ <p>Apache gerektiğinde bu sınırı kendisi arttırmaya çalışırsa da bu her
+ zaman mümkün olmaz. Şöyle ki:</p>
+
+ <ol>
+ <li>Sisteminiz <code>setrlimit()</code> sistem çağrısını
+ sağlamıyordur.</li>
+
+ <li>Sisteminizde <code>setrlimit(RLIMIT_NOFILE)</code> çağrısı hiçbir işe
+ yaramıyordur (örneğin, Solaris 2.3).</li>
+
+ <li>Dosya tanıtıcılarının sayısı donanıma bağlı olarak daha fazla
+ arttırılamıyordur.</li>
+
+ <li>Sisteminiz dosya tanıtıcı sayısını başka sınırlara bağlı kılmıştır:
+ örneğin stdio akımları ile ilgili sınır, dosya tanıtıcı sayısının
+ 256’nın altında ollmasını gerektiriyordur (Solaris 2).</li>
+ </ol>
+
+ <p>Böyle sorunlar karşısında yapabilecekleriniz:</p>
+
+ <ul><li>Ana günlük dosyaları hariç, <directive type="section"
+ module="core">VirtualHost</directive> bölümlerinde günlük dosyası
+ belirtmeyerek günlük dosyası sayısını düşürürsünüz. (Bunun nasıl
+ yapılacağını öğrenmek için <a href="#splitlogs">Günlük kayıtlarının
+ ayrıştırılması</a> bölümüne bakınız.)</li>
+
+ <li>Sisteminizde serbest dosya tanıtıcı sayısı 1-2 civarına düşerse
+ Apache’yi aşağıdaki gibi bir betikle yeniden çalıştırarak dosya
+ tanıtıcı sayısını arttırabilirsiniz:
+
+ <example>
+ <code>#!/bin/sh<br />
+ ulimit -S -n 100<br />
+ exec httpd</code>
+ </example>
+ </li>
+ </ul>
+
+</summary>
+
+<section id="splitlogs"><title>Günlük kayıtlarının ayrıştırılması</title>
+
+ <p>Günlük dosyalarını çok sayıda sanal konak için ortak olarak
+ kullanıyorsanız, sanal konaklar için istatistiksel çözümlemeler yapmak
+ amacıyla sırası geldiğinde bunları ayrıştırabilirsiniz. Bu işlem aşağıda
+ anlatıldığı gibi yapılabilir.</p>
+
+ <p>İlk iş olarak, sanal konak bilgilerini günlük girdilerine eklemeniz
+ gerekir. Bu işlem, <directive
+ module="mod_log_config">LogFormat</directive> yönergesi ve
+ <code>%v</code> biçem değişkeni ile yapılabilir. Günlük girdisi biçem
+ dizgesinin başına bunu ekleyiniz:</p>
+
+ <example>
+ LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost<br />
+ CustomLog logs/multiple_vhost_log vhost
+ </example>
+
+ <p>Bu yapılandırma ile her günlük kaydının başında sanal konağın
+ <directive module="core">ServerName</directive> yönergesine belirtilen
+ ismi eklenir. (Günlük dosyalarınızın kişiselleştirilmesi ile ilgili daha
+ fazla bilgi için <a href="../mod/mod_log_config.html#formats">Günlük
+ Girdilerinin Kişiselleştirilmesi</a> konusuna bakınız.)</p>
+
+ <p>Günlük dosyanızdaki kayıtları bileşenlere göre gruplamak isterseniz
+ <code><a href="../programs/other.html">split-logfile</a></code>
+ programını kullanabilirsiniz. Bu programı Apache dağıtımının
+ <code>support</code> dizininde bulabilirsiniz.</p>
+
+ <p>Programı aşağıdaki gibi çalıştırın:</p>
+
+ <example>
+ split-logfile < /logs/multiple_vhost_log
+ </example>
+
+ <p>Bu programı sanal konaklar için tuttuğunuz günlük dosyasının ismini
+ argüman olarak belirterek çalıştırdığınızda o dosyadaki kayıtlardan her
+ sanal konak için ayrı bir günlük dosyası
+ (<code><em>konakadı</em>.log</code>) üretilir.</p>
+
+</section>
+</manualpage>
+
--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.tr.xsl"?>
+<!-- English Revision: 659902 -->
+<!-- =====================================================
+ Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
+ Reviewed by: Orhan Berent <berent belgeler.org>
+========================================================== -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="mass.xml.meta">
+<parentdocument href="./">Sanal Konaklar</parentdocument>
+ <title>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma</title>
+
+<summary>
+
+ <p>Bu belgede sanal konakların sonu belirsiz bir şekilde artışı karşısında
+ Apache httpd sunucusunun nasıl daha verimli kullanılacağı açıklanmıştır.
+ </p>
+
+</summary>
+
+<section id="motivation"><title>Amaç</title>
+
+ <p>Burada açıklanan teknikler, <code>httpd.conf</code> dosyanızın
+ örnekteki gibi, aslında hemen hemen birbirinin aynı çok sayıda
+ <code><VirtualHost></code> bölümü içereceği zaman yapılacaklar ile
+ ilgilidir.</p>
+
+<example>
+NameVirtualHost 111.22.33.44<br />
+<VirtualHost 111.22.33.44><br />
+<indent>
+ ServerName musteri-1.dom<br />
+ DocumentRoot /siteler/musteri-1.dom/belgeler<br />
+ ScriptAlias /cgi-bin/ /siteler/musteri-1.dom/cgi-bin<br />
+</indent>
+</VirtualHost><br />
+<VirtualHost 111.22.33.44><br />
+<indent>
+ ServerName musteri-2.dom<br />
+ DocumentRoot /siteler/musteri-2.dom/belgeler<br />
+ ScriptAlias /cgi-bin/ /siteler/musteri-2.dom/cgi-bin<br />
+</indent>
+</VirtualHost><br />
+# blah blah blah<br />
+<VirtualHost 111.22.33.44><br />
+<indent>
+ ServerName musteri-N.dom<br />
+ DocumentRoot /siteler/musteri-N.dom/belgeler<br />
+ ScriptAlias /cgi-bin/ /siteler/musteri-N.dom/cgi-bin<br />
+</indent>
+</VirtualHost>
+</example>
+
+ <p>Ana fikir, tüm durağan <code><VirtualHost></code>
+ yapılandırmalarını devingen olarak çalışan tek bir
+ <code><VirtualHost></code> bölümüyle değiştirmektir. Bunun elbette
+ bazı getirileri olacaktır:</p>
+
+ <ol>
+ <li>Yapılandırma dosyanız küçüleceği için Apache daha çabuk
+ başlatılabilecek ve daha az bellek harcayacaktır.</li>
+
+ <li>Yeni sanal konakların eklenmesi, DNS’de yeni girdiler oluşturmak ve
+ dosya sisteminde bununla ilgili dizinleri açmak dışında biraz daha
+ basit olacaktır; en azından Apache’yi yeniden yapılandırmak ve yeniden
+ başlatmak zorunda kalmayacaksınız.</li>
+ </ol>
+
+ <p>Ana götürüsü ise her sanal konak için ayrı birer günlük dosyasına sahip
+ olamayacak olmanızdır. Öte yandan, dosya tanıtıcılarının sınırlı olması
+ nedeniyle bunu yapmayı zaten istemezsiniz. Günlük kayıtları için bir
+ fifo veya bir boru hattı oluşturmak ve diğer uçta çalışan bir süreç
+ vasıtasıyla günlükleri müşterilere paylaştırmak daha iyidir (ayrıca, bu,
+ istatistikleri toplamanızı da kolaylaştırır).</p>
+
+</section>
+
+<section id="overview"><title>Genel Bakış</title>
+
+ <p>Bir sanal konak iki bilgiye bakarak belirlenir: IP adresi ve HTTP
+ isteğindeki <code>Host:</code> başlığının içeriği. Devingen sanal
+ barındırma tekniği, isteği yerine getirmek için kullanılacak dosya
+ yoluna bu bilgiyi kendiliğinden girmek esasına dayanır. Bu, Apache 2.0
+ ile <module>mod_vhost_alias</module> kullanarak oldukça kolay
+ yapılabileceği gibi <module>mod_rewrite</module> da kullanılabilir. Bu
+ modüllerin her ikisi de öntanımlı olarak devre dışıdır. Bu tekniği
+ kullanmak isterseniz Apache’yi yeniden yapılandırıp derleyerek bu iki
+ modülü etkin duruma getirmeniz gerekir.</p>
+
+ <p>Devingen sanal konağı normal bir sanal konak gibi göstermek için bazı
+ şeyleri ’göstermelik’ olarak yapmak gerekir. Bunlardan en önemlisi,
+ Apache tarafından göreli URL’lerden normal URL’leri ve benzerlerini
+ üretmek için kullanılan sunucu ismidir. Sunucu ismi
+ <code>ServerName</code> yönergesi ile yapılandırılır ve CGI’ler
+ tarafından <code>SERVER_NAME</code> ortam değişkeni üzerinden
+ kullanılır. Çalışma anındaki asıl değer <directive module="core"
+ >UseCanonicalName</directive> yönergesi tarafından denetlenir.
+ <code>UseCanonicalName Off</code> olduğunda sunucu ismi isteğin
+ <code>Host:</code> başlık alanından elde edilir. <code>UseCanonicalName
+ DNS</code> belirtilmişse, sunucu ismi, sanal konağın IP adresinden
+ tersine DNS sorgusu yapılarak elde edilir. Birincisi isme dayalı sanal
+ konaklar tarafından ikincisi ise IP’ye dayalı sanal konaklar tarafından
+ kullanılır. Eğer Apache, istekte <code>Host:</code> başlığının olmayışı
+ veya DNS sorgusunun başarısız olması sebebiyle sunucu ismini elde
+ edemezse son çare olarak <code>ServerName</code> yönergesinde yazılı
+ değeri kullanır.</p>
+
+ <p>‘Göstermelik’ yapılan şeylerden biri de <code>DocumentRoot</code>
+ yönergesi ile yapılandırılan belge kök dizini olup CGI’ler tarafından
+ <code>DOCUMENT_ROOT</code> ortam değişkeni üzerinden kullanılır. Normal
+ yapılandırmada <module>core</module> modülü tarafından dosya isimlerini
+ URI’lere eşlerken kullanılır. Fakat sunucu devingen sanal konakları
+ kullanmak üzere yapılandırıldığında, eşleştirmeyi farklı yollardan yapan
+ başka bir modül devreye girer (<code>mod_vhost_alias</code> veya
+ <code>mod_rewrite</code>). <code>DOCUMENT_ROOT</code> ortam değişkenine
+ değerini atamaktan sorumlu olan bu iki modülden biri kullanılmazsa CGI
+ veya SSI belgeleri yanlış değerlerle üretilirler.</p>
+
+</section>
+
+<section id="simple"><title>Basit Devingen Sanal Konaklar</title>
+
+ <p>Yukarıda <a href="#motivation">Amaç</a> bölümünde özetlenen sanal konak
+ düzenlemesinin <code>mod_vhost_alias</code> kullanarak daha soysal bir
+ tarzda gerçekleştirilmiş halini içeren <code>httpd.conf</code> bölümü
+ aşağıdadır.</p>
+
+<example>
+# sunucu ismini Host: başlığından elde edelim<br />
+UseCanonicalName Off<br />
+<br />
+# Bu günlükleme biçiminde ilk alana bakarak<br />
+# sanal konak günlükleri ayrıştırılabilir<br />
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
+CustomLog logs/access_log vcommon<br />
+<br />
+# istekleri yerine getirmek için kullanılacak<br />
+# dosya isimlerine sunucu ismini ekleyelim<br />
+VirtualDocumentRoot /siteler/%0/belgeler<br />
+VirtualScriptAlias /siteler/%0/cgi-bin
+</example>
+
+ <p>Bu yapılandırmayı IP’ye dayalı sanal konaklar için kullanmak isterseniz
+ <code>UseCanonicalName Off</code> yerine <code>UseCanonicalName
+ DNS</code> yazmanız yeterlidir. Böylece dosya ismine eklenecek konak
+ ismi sanal konağın IP adresinden türetilir.</p>
+
+</section>
+
+<section id="homepages"><title>Sanal Kişisel Sayfalar Sistemi</title>
+
+ <p>Bu sistem, yukarıdaki yapılandırmanın bir ISS’nin kişisel sayfalar
+ sunucusuna uyarlanmasından başka bir şey değildir. Biraz daha karmaşık
+ bir yapılandırma ile dosya isimlerine <code>/home/kullanıcı/</code>
+ dizinlerini ekleyebiliriz. Farklı olarak her sanal konak için bir tane
+ değil hepsi için bir tane <code>cgi-bin</code> olacaktır.</p>
+
+<example>
+# Son bölüm hariç yukarıdaki yapılandırma, burada...<br />
+<br />
+# sunucu ismine eklenecek dosya isimlerini oluşturalım<br />
+VirtualDocumentRoot /siteler/%2/belgeler<br />
+<br />
+# ortak cgi-bin dizini<br />
+ScriptAlias /cgi-bin/ /siteler/std-cgi/<br />
+</example>
+
+ <p><module>mod_vhost_alias</module> belgesinde daha karmaşık
+ <code>VirtualDocumentRoot</code> örnekleri vardır.</p>
+
+</section>
+
+<section id="combinations"><title>Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</title>
+
+ <p>Daha karmaşık ayarlamalar yaparak Apache’inin normal
+ <code><VirtualHost></code> bölümlerini farklı kitlesel sanal konak
+ yapılandırmaları için kullanabilirsiniz. Örneğin, bireysel
+ müşterileriniz için bir IP adresiniz, kurumsal müşterileriniz için de
+ başka bir IP adresiniz olsun. Her biri için ayrı ayrı sanal konaklar
+ ayarlamak yerine aşağıdaki gibi bir yapılandırma kullanabilirsiniz:</p>
+
+<example>
+UseCanonicalName Off<br />
+<br />
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
+<br />
+<Directory /siteler/kurumsal><br />
+<indent>
+ Options FollowSymLinks<br />
+ AllowOverride All<br />
+</indent>
+</Directory><br />
+<br />
+<Directory /siteler/bireysel><br />
+<indent>
+ Options FollowSymLinks<br />
+ AllowOverride None<br />
+</indent>
+</Directory><br />
+<br />
+<VirtualHost 111.22.33.44><br />
+<indent>
+ ServerName kurumsal.iss.dom<br />
+ <br />
+ CustomLog logs/access_log.kurumsal vcommon<br />
+ <br />
+ VirtualDocumentRoot /siteler/kurumsal/%0/belgeler<br />
+ VirtualScriptAlias /siteler/kurumsal/%0/cgi-bin<br />
+</indent>
+</VirtualHost><br />
+<br />
+<VirtualHost 111.22.33.45><br />
+<indent>
+ ServerName bireysel.iss.dom<br />
+ <br />
+ CustomLog logs/access_log.bireysel vcommon<br />
+ <br />
+ VirtualDocumentRoot /siteler/bireysel/%0/belgeler<br />
+ ScriptAlias /cgi-bin/ /siteler/std-cgi/<br />
+</indent>
+</VirtualHost>
+</example>
+
+ <note><title>Bilginize</title>
+ <p>Eğer ilk <code><VirtualHost></code> bölümü bir <directive
+ module="core">ServerName</directive> yönergesi içermezse ilgili IP
+ için ters DNS sorgusu yapılır. Eğer sorgudan elde edilen isim
+ sunucunun ismi değilse bu istenmeyen duruma bir çözüm olarak bir
+ bilgilendirme bölümü (<code>ServerName isimsiz.iss.dom</code>)
+ eklenebilir.</p>
+ </note>
+
+</section>
+
+<section id="ipbased"><title>IP’ye dayalı sanal konakları daha verimli kılmak</title>
+
+ <p><a href="#simple">İlk örnekte</a> IP’ye dayalı sanal konaklar için
+ kullanılmak istenirse yapılandırmada neyin nasıl değiştirileceği
+ belirtilmişti. Her istek için ayrı bir DNS sorgusu gerekeceğinden bu
+ başarım düşmesine yol açar. DNS sorgusu ihtiyacını ortadan kaldırmak
+ için, bir çözüm olarak dosya sistemi, konak isimleri yerine IP
+ adreslerine göre düzenlenebilir. Günlük kayıtları da IP adreslerine göre
+ ayrıştırılacak şekilde ayarlanabilir.</p>
+
+<example>
+# Sunucu ismini IP adresinden ters DNS sorgusu ile elde edelim<br />
+UseCanonicalName DNS<br />
+<br />
+# Günlük kayıtları IP adreslerine göre ayrıştırılabilsin<br />
+LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon<br />
+CustomLog logs/access_log vcommon<br />
+<br />
+# dosya isimleri IP adreslerini içersin<br />
+VirtualDocumentRootIP /siteler/%0/belgeler<br />
+VirtualScriptAliasIP /siteler/%0/cgi-bin<br />
+</example>
+
+</section>
+
+<section id="simple.rewrite"><title><code>mod_rewrite</code> ile Kurumsal Müşteriler Sistemi</title>
+
+ <p>Buradaki <code>httpd.conf</code> bölümü de <a href="#simple">ilk
+ örnekteki</a> gibi elde edilmiştir. İlk yarı, bazı değişiklikler dışında
+ yukarıdaki örneğe çok benzer. Bu değişiklikler yapılandırmanın
+ <code>mod_rewrite</code> bölümünün düzgün çalışması ve geriye doğru
+ uyumluluk için gereklidir. İkinci yarı, asıl işi yapan
+ <code>mod_rewrite</code> yapılandırmasını içerir.</p>
+
+ <p>Biraz uzmanlık gerektiren bazı kısımlar var: Öntanımlı olarak
+ <code>mod_rewrite</code> diğer (<code>mod_alias</code>, vs. gibi) URI
+ dönüşüm modüllerinden önce çalışır. Dolayısıyla bu modülleri kullanmak
+ isterseniz, <code>mod_rewrite</code>’ı bunlara izin verecek şekilde
+ yapılandırmalısınız. Ayrıca her devingen sanal konağa eşdeğer bir
+ <code>ScriptAlias</code> yapmak için de biraz büyü yapmak gerekir.</p>
+
+<example>
+# Sunucu ismini Host: başlığınıdan alalım.<br />
+UseCanonicalName Off<br />
+<br />
+# Günlük dosyasından bilgileri ayıklayabilelim.<br />
+LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon<br />
+CustomLog logs/access_log vcommon<br />
+<br />
+<Directory /siteler/hosts><br />
+<indent>
+ # ScriptAlias için yaptıklarımızla CGI betiklerini<br />
+ # çalışmaya zorlayamayacağımızdan ExecCGI burada gerekli.<br />
+ Options FollowSymLinks ExecCGI<br />
+</indent>
+</Directory><br />
+<br />
+# İşin zor yanına geldik.<br />
+<br />
+RewriteEngine On<br />
+<br />
+# Host: başlığından elde edilen sunucu isminde harf<br />
+# büyüklükleri çeşitli olabilir. Hepsini küçük harf yapalım.<br />
+RewriteMap lowercase int:tolower<br />
+<br />
+## önce normal belgelerle anlaşalım:<br />
+# Alias /icons/ çalışsın - diğer rumuzlar için yineleyelim<br />
+RewriteCond %{REQUEST_URI} !^/icons/<br />
+# CGI’ler de çalışsın.<br />
+RewriteCond %{REQUEST_URI} !^/cgi-bin/<br />
+# Biraz da büyü yapalım.<br />
+RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/belgeler/$1<br />
+<br />
+## Artık CGI’lerle anlaşabiliriz. - Bir eylemci isteyelim.<br />
+RewriteCond %{REQUEST_URI} ^/cgi-bin/<br />
+RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [H=cgi-script]<br />
+<br />
+# Bu kadar!
+</example>
+
+</section>
+
+<section id="homepages.rewrite"><title><code>mod_rewrite</code> ile Kişisel Sayfalar Sistemi</title>
+
+ <p>Burada da <a href="#homepages">ikinci örnekte</a> yaptıklarımızı
+ yapıyoruz.</p>
+
+<example>
+RewriteEngine on<br />
+<br />
+RewriteMap lowercase int:tolower<br />
+<br />
+# CGI’ler çalışsın.<br />
+RewriteCond %{REQUEST_URI} !^/cgi-bin/<br />
+<br />
+# konak ismi doğru mu bakalım yoksa RewriteRule çalışmaz.<br />
+RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.dom$<br />
+<br />
+# URI’nin başına sanal konak ismini ekleyelim.<br />
+# [C], bunu bitirdikten sonra, sonraki rewrite ile devam et demek.<br />
+RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]<br />
+<br />
+# Artık asıl dosya ismini oluşturabiliriz.<br />
+RewriteRule ^www\.([a-z-]+)\.isp\.dom/(.*) /home/$1/$2<br />
+<br />
+# Ortak CGI dizinini tanımlayalım.<br />
+ScriptAlias /cgi-bin/ /siteler/std-cgi/
+</example>
+
+</section>
+
+<section id="xtra-conf"><title>Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak</title>
+
+ <p>Burada, sanal konak isimlerinden belge kök dizini elde ederken
+ <module>mod_rewrite</module> modülünün daha gelişkin özelliklerinden
+ yararlanarak isimleri ayrı bir dosyadan okutacağız. Bu, esnekliği
+ artırır ama daha karmaşık bir yapılandırma gerekir.</p>
+
+ <p>Aşağıdaki içeriğe sahip bir <code>vhost.map</code>dosyamız olsun:</p>
+
+<example>
+musteri-1.dom /siteler/kurumsal/1<br />
+musteri-2.dom /siteler/kurumsal/2<br />
+# ...<br />
+musteri-N.dom /siteler/kurumsal/N<br />
+</example>
+
+ <p><code>httpd.conf</code> dosyamız da şunları içerecektir:</p>
+
+<example>
+RewriteEngine on<br />
+<br />
+RewriteMap lowercase int:tolower<br />
+<br />
+# Eşlem dosyasını tanımlayalım<br />
+RewriteMap vhost txt:/siteler/conf/vhost.map<br />
+<br />
+# Rumuzları yukarıdaki gibi halledelim.<br />
+RewriteCond %{REQUEST_URI} !^/icons/<br />
+RewriteCond %{REQUEST_URI} !^/cgi-bin/<br />
+RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$<br />
+# Eşlemeyi dosyalar için de yapalım.<br />
+RewriteCond ${vhost:%1} ^(/.*)$<br />
+RewriteRule ^/(.*)$ %1/belgeler/$1<br />
+<br />
+RewriteCond %{REQUEST_URI} ^/cgi-bin/<br />
+RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$<br />
+RewriteCond ${vhost:%1} ^(/.*)$<br />
+RewriteRule ^/(.*)$ %1/cgi-bin/$1 [H=cgi-script]
+</example>
+
+</section>
+</manualpage>