developer/                                                                                           40755       0       0            0 11256641270  10101  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         faq/                                                                                                 40755       0       0            0 11256641270   6663  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         howto/                                                                                               40755       0       0            0 11256641270   7254  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         images/                                                                                              40755       0       0            0 11256641270   7361  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         misc/                                                                                                40755       0       0            0 11256641270   7047  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         mod/                                                                                                 40755       0       0            0 11256641270   6673  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         platform/                                                                                            40755       0       0            0 11256641270   7740  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         programs/                                                                                            40755       0       0            0 11256641270   7746  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         rewrite/                                                                                             40755       0       0            0 11256641270   7575  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         ssl/                                                                                                 40755       0       0            0 11256641271   6716  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/                                                                                               40755       0       0            0 11256641271   7255  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/_generated/                                                                                    40755       0       0            0 11256641271  11352  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/css/                                                                                           40755       0       0            0 11256640756  10054  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/lang/                                                                                          40755       0       0            0 11256641271  10176  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/latex/                                                                                         40755       0       0            0 11256641271  10372  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/xsl/                                                                                           40755       0       0            0 11256641271  10063  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         style/xsl/util/                                                                                      40755       0       0            0 11256641271  11040  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         vhosts/                                                                                              40755       0       0            0 11256641271   7443  5                                                                                                    ustar                                                                        0       0                                                                                                                                                                         bind.html                                                                                           100644       0       0        22316 11256641267  10045  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Dinleme - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Dinleme</h1>


    <p>Apache’nin belli adresleri ve portları dinlemek üzere
    yapılandırılması.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#overview">Genel Bakış</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#ipv6">IPv6 Adreslerin Durumu</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Sanal Konaklarla Nasıl Çalışır?</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="vhosts/index.html">Sanal Konaklar</a></li><li><a href="dns-caveats.html">DNS Konuları</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Genel Bakış</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/core.html">core</a></code></li><li><code class="module"><a href="./mod/mpm_common.html">mpm_common</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code></li></ul></td></tr></table>


    <p>Apache başlatıldığında yerel makinedeki bazı adres ve portları kendine
      bağlar ve gelecek istekleri bekler. Öntanımlı olarak makine üzerindeki
      tüm adresleri dinler. Bununla birlikte, belli portları veya sadece
      seçilmiş bazı adresleri ya da her ikisini de dinlemesi için bunun
      belirtilmesi gerekebilir. Bu çoğunlukla, Apache’nin farklı IP
      adreslerine, konak isimlerine ve portlarına nasıl yanıt vereceğinin
      belirlendiği sanal konak özelliği ile birlikte yürür.</p>

    <p><code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesi sunucuya
      gelen istekleri sadece belli portlardan veya belli adres ve port
      birleşimlerinden kabul etmesini söyler. <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesinde sadece port
      numarası belirtilmişse sunucu tüm arabirimlerin belirtilen portunu
      dinleyecektir. Portla birlikte bir IP adresi de belirtilmişse sunucu
      belirtilen portu ve arabirimi dinleyecektir. Çok sayıda adres ve portu
      dinlemek için çok sayıda <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesi kullanılabilir. Sunucu
      böyle bir durumda belirtilen bütün adres ve portlardan gelen isteklere
      yanıt verecektir.</p>

    <p>Örneğin, sunucunun tüm arabirimlerin hem 80 portundan hem de 8000
      portundan gelen bağlantıları kabul etmesini sağlamak için,</p>

    <div class="example"><p><code>
      Listen 80<br />
      Listen 8000
    </code></p></div>

    <p>yapılandırmasını kullanabilirsiniz. Sunucunun 80 portuna gelen
      bağlantıları bir arabirimden 8000 portuna gelenleri ise başka bir
      arabirimden kabul etmesini sağlamak için ise,</p>

    <div class="example"><p><code>
      Listen 192.0.2.1:80<br />
      Listen 192.0.2.5:8000
    </code></p></div>

    <p>yapılandırmasını kullanabilirsiniz. IPv6 adresleri aşağıdaki örnekteki
      gibi köşeli ayraçlar içine alınarak belirtilmelidir:</p>

    <div class="example"><p><code>
      Listen [2001:db8::a00:20ff:fea7:ccea]:80
    </code></p></div>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="ipv6" id="ipv6">IPv6 Adreslerin Durumu</a></h2>
    

    <p>IPv6’yı gerçekleyen platformların sayısı giderek artmaktadır. Bu
      platformların çoğunda <a class="glossarylink" href="./glossary.html#apr" title="sözlüğe bakınız">APR</a>, Apache’nin IPv6
      soketleri ayırmasını mümkün kılarak IPv6’yı desteklemekte ve IPv6
      üzerinden gönderilmiş istekleri elde etmektedir.</p>

    <p>Apache yöneticilerinin kafasını karıştırıran tek şey IPv6 soketlerin
      hem IPv4 hem de IPv6 bağlantılarını kabul edip etmeyeceğidir. IPv4
      bağlantılarını kabul eden IPv6 soketleri IPv4 eşlemli IPv6 adresleri
      kullanırlar. Bu çoğu sistemde öntanımlı olarak böyleyken, FreeBSD,
      NetBSD ve OpenBSD’de sistem geneline uygulanan kurallar gereğince
      öntanımlı olarak buna izin verilmez; bu sistemlerde özel bir
      <code class="program"><a href="./programs/configure.html">configure</a></code> parametresi ile Apache’nin davranışı
      değiştirilebilir.</p>

    <p>Diğer taraftan, Linux ve Tru64 gibi bazı platformlarda hem IPv4 hem de
      IPv6 adresleri kabul etmenin <strong>tek yolu</strong> eşlemli adresler
      kullanmaktır. Apache’nin IPv4 ve IPv6 adresleri, IPv4 eşlemli IPv6
      adreslerin kullanımını gerektiren en az sayıda soketle kabul etmesini
      istiyorsanız, <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine
      <code>--enable-v4-mapped</code> seçeneğini belirtiniz.</p>

    <p><code>--enable-v4-mapped</code> seçeneği, FreeBSD, NetBSD ve OpenBSD
      hariç tüm platformlarda öntanımlıdır. Muhtemelen siz de Apache’nin
      böyle derlenmesini isterdiniz.</p>

    <p>Platformunuzun ve APR’nin neyi desteklediğine bakmaksızın Apache’nin
      sadece IPv4 adresleri kabul etmesini istiyorsanız, tüm <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergelerinde örnekteki gibi
      IPv4 adresleri belirtiniz:</p>

    <div class="example"><p><code>
      Listen 0.0.0.0:80<br />
      Listen 192.0.2.1:80
    </code></p></div>

    <p>Platformunuz IPv4 ve IPv6 adresleri ayrı soketlerden kabul ediyorsa ve
      Apache’nin de buna uygun davranmasını (yani IPv4 eşlemli IPv6
      adreslerin iptalini)  istiyorsanız <code class="program"><a href="./programs/configure.html">configure</a></code>
      betiğine <code>--disable-v4-mapped</code> seçeneğini belirtiniz. Bu
      seçenek FreeBSD, NetBSD ve OpenBSD’de öntanımlıdır.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="virtualhost" id="virtualhost">Sanal Konaklarla Nasıl Çalışır?</a></h2>
    

    <p><code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesi sanal
      konaklar için gerçeklenmemiştir; sadece ana sunucuya hangi adresleri ve
      portları dinleyeceğini söyler. Hiç <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> yönergesi kullanılmamışsa sunucu
      kabul edilen tüm isteklere aynı şekilde davranacaktır. Eğer bir veya
      daha fazla adres veya port için farklı bir davranış belirtmek
      istiyorsanız <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> kullanabilirsiniz. Bir sanal
      konağı gerçeklemek için önce sunucunun sanal konak için kullanacağı
      adres ve portu dinleyeceğini belirtmek gerekir. Bundan sonra bu sanal
      konağın davranışını ayarlamak üzere belirtilen adres ve port için bir
      <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü
      oluşturulmalıdır. Yalnız dikkat edin, eğer <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> için belirtilen adres ve port
      sunucu tarafından dinlenmiyorsa ona erişemezsiniz.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                  caching.html                                                                                        100644       0       0       123101 11256641267  10537  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Önbellek Kullanım Kılavuzu - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Önbellek Kullanım Kılavuzu</h1>


    <p>Bu belge <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
      <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>, <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code>,
      <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülleri ve <a href="programs/htcacheclean.html">htcacheclean</a> için bir başvuru
      kılavuzu niteliğindedir. HTTP sunucusu ve vekil olarak çalışmada
      işlemleri hızlandırmak için bilinen sorunlar ve yanlış
      yapılandırmalardan kaçınarak Apache’nin önbellekleme özelliklerinin
      nasıl kullanılacağı açıklanmıştır.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#overview">Önbelleklemeye Bir Bakış</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#filehandle">Dosya Tanıtıcı Önbelleklemesi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#inmemory">Sistem Belleğinde Önbellekleme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#disk">Disk Üzerinde Önbellekleme</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Giriş</a></h2>
    

    <p>Apache HTTP sunucusunun 2.2 sürümünden itibaren
      <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ve <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülleri
      deneysel olmaktan çıkarılmış ve üretim amaçlı kullanılabileceğine karar
      verilmiştir. Bu önbellekleme mimarileri gerek HTTP sunucusu gerekse
      vekili olarak çalışmada HTTP işlemlerini hızlandırmak anlamında sunucuya
      güç katarlar.</p>

    <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, ortam sağlayıcı modülleri olan
      <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> ve <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ile
      birlikte HTTP önbelleklemesini akıllıca yerine getirir. İçeriğin kendisi
      önbellekte saklanırken <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> içeriğin
      önbelleklenebilmesini denetim altında tutan HTTP başlıkları ve
      seçenekleri ile ilgilenir. Yerel ve vekalet edilen içeriğin her ikisinin
      de aynı anda işlem görmesi sağlanabilir. <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
      vekalet edilen içeriğe, devingen yerel içeriğe veya zamanla değişen
      yerel dosyalara erişimi hızlandırma ihtiyacına yönelik olarak hem basit
      hem de karmaşık önbellekleme yapılandırmalarını mümkün kılar.</p>

    <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> ise biraz daha temel ancak bazen daha
      kullanışlı olabilen bir önbellekleme şekli ile ilgilenir. URL’lerin
      önbelleklenebilmesini mümkün kılmanın karmaşıklığıyla boğuşmak yerine
      <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, dosyaların Apache’nin son başlatıldığı
      zamanki durumlarını saklamak için dosyaların belleğe eşlenmek üzere ele
      alınmasını sağlar. Böylelikle, <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, çok sık
      değişmeyen durağan yerel dosyalara erişim zamanını azaltmaya yardım
      eder.</p>

    <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> ve <code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergeleri ile ilgili
      bölümlerde anlatılanları saymazsak <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>, bu
      belgenin asıl konusu olan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekleme
      mimarisine göre daha basit bir önbellekleme gerçeklenimidir.</p>

    <p>Bu belgeden azami yararı sağlayabilmek için temel bir HTTP bilginizin
      olması ve <a href="urlmapping.html">URL’lerin Dosya Sistemine
      Eşlenmesi</a> ile <a href="content-negotiation.html">İçerik Uzlaşımı</a>
      belgelerini okumuş olmanız gerekir.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Önbelleklemeye Bir Bakış</a></h2>

    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code></li><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li><li><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code></li><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code></li><li><code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code></li></ul></td></tr></table>

    <p>Bir istek sonuçlanıncaya kadar <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> modülünde iki
      aşamadan geçer. İlkinde <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir URL eşleme modülü
      olarak çalışır ve URL önbellekteyse ve zaman aşımına uğramamışsa isteğin
      doğrudan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından sunulmasını sağlar.</p>

    <p>Yani isteğin sunumu sırasında, isteğin örneğin,
      <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> veya <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> tarafından
      ele alınması gerekse bile bu yapılmaz. Önbelleklenen içerik ilk alındığı
      haliyle sunulur.</p>

    <p>Eğer URL önbellekte yoksa, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> isteği bir  <a href="filter.html">süzgece</a> tabi tutar. Apache içeriğin varlığını
      saptamışsa içeriğin süzgeç tarafından sunulmasını sağladıktan sonra,
      süzgeç içeriğin önbelleklenebileceğini saptamışsa gelecekte sunmak üzere
      içeriği önbelleğe kaydeder.</p>

    <p>Eğer URL önbellekte bulunmuş fakat içeriğin zaman aşımına uğradığı
      anlaşılmışsa süzgeç yine de eklenir fakat bu kez
      <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbellekteki sürümün hala geçerli olup
      olmadığını saptamak için kaynağın bulunduğu sunucuya bir koşullu istek
      gönderir. Önbellekteki sürüm hala geçerliyse temel verileri güncellenir
      ve istek önbellekten sunulur. Önbellekteki sürüm artık geçerli değilse,
      önbellekteki sürüm silinir ve süzgeç güncel içeriği önbelleğe kaydeder
      ve isteği oradan sunar.</p>

    <h3>Önbelleğin Hızlandırılması</h3>
      

      <p>Yerel içerik önbelleklendiği takdirde <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesine <code>On</code>
        değeri atanmışsa önbellekten sunulan sayfa sayısında büyük bir artış
        olduduğu görülür. Bunun sebebi içeriği sunan sanal konağın isminin
        önbellek anahtarının bir parçası olarak kullanılmasıdır. Yönergeye
        <code>On</code> değerini atamak suretiyle çok isimli ve rumuzlu sanal
        konaklar için farklı önbellek girdileri oluşturulmaz, bunun yerine her
        meşru sanal konak için ayrı bir önbellek tutulur.</p>

      <p>Önbellekleme, URL’nin dosya ismine dönüştürülmesi aşamasında
        gerçekleştiğinden önbelleklenen belgeler sadece URL isteklerine bir
        yanıt olarak sunulurlar. <a href="howto/ssi.html">Sunucu Taraflı
        İçerikleri</a> kullanmazsanız genellikle bunun fazla bir önemi
        olmaz.</p>

      <div class="example"><p><code>
        &lt;!-- Bu içerik önbelleklenebilir. --&gt;<br />
        &lt;!--#include virtual="/dipnot.html" --&gt;<br />
        <br />
        &lt;!-- Bu içerik önbelleklenemez. --&gt;<br />
        &lt;!--#include file="/bir/yol/dipnot.html" --&gt;
      </code></p></div>

      <p>Sunucu Taraflı İçerikleri kullanıyorsanız ve önbelleklemenin
        sağladığı hız artışından da yaralanmak istiyorsanız içerik
        yerleştirmek için <code>virtual</code> içerik türünü kullanınız.</p>
    

    <h3>Zaman Aşımı Süreleri</h3>
      

      <p>Önbellekli öğeler için öntanımlı zaman aşımı süresi bir saat olmakla
        birlikte <code class="directive"><a href="./mod/mod_cache.html#cachedefaultexpire">CacheDefaultExpire</a></code>
        yönergesi kullanılarak bu değer kolaylıkla geçersiz kılınabilir. Bu
        öntanımlı değer sadece içeriğin özgün kaynağı bir zaman aşımı süresi
        veya son değişiklik tarihi belirtmediği takdirde kullanılır.</p>

      <p>Bir yanıt <code>Expires</code> başlığını değil de
        <code>Last-Modified</code> başlığını içeriyorsa
        <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> zaman aşımı süresini <code class="directive"><a href="./mod/mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></code> yönergesinin
        nasıl kullanıldığına bakarak saptar.</p>

      <p>Yerel içerik için, zaman aşımı süresini hassas olarak ayarlamak
        gerekirse <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanılabilir.</p>

      <p>Zaman aşımı süresinin üst sınırı <code class="directive"><a href="./mod/mod_cache.html#cachemaxexpire">CacheMaxExpire</a></code> yönergesi ile
        belirlenebilir.</p>

    

    <h3>Şartlı İstekler için Özlü Kılavuz</h3>
      

      <p>Önbellekteki içerik zaman aşımına uğrayıp, içerik sağlayıcıya veya
        arka sunucuya özgün isteği aktarmak yerine ayrı bir istek yapılması
        gereği Apache’nin şartlı bir istek yapması sonucunu doğurur.</p>

      <p>Bir istemcinin veya önbelleğin aynı içeriğin farklı sürümleri
        arasında ayrım yapabilmesi için HTTP protokolü bazı başlık alanları
        önerir. Örneğin, "Etag:" başlığıyla sunulan bir özkaynak için
        "If-None-Match:" başlığıyla bir şartlı istek yapmak mümkün olduğu gibi
        özkaynak "Last-Modified:" başlığıyla sunuluyorsa şartlı istek
        "If-Modified-Since:" başlığıyla yapılabilir, vesaire.</p>

      <p>Böyle bir şartlı istek yapıldığında yanıt koşulun içerikle eşleşip
        eşleşmediğine bağlı olarak farklı olur. Eğer istek bir
        "If-Modified-Since:" başlığıyla yapılmışsa ve içerik istekte
        belirtilen zamandan önce değiştirilmemişse kısa ve öz olarak bir "304
        Not Modified" (Bir değişiklik yok) iletisiyle yanıt verilir.</p>

      <p>Aksi takdirde  bir şartlı istek yapılmamış gibi içeriğin kendisi
        sunulur.</p>

      <p>Önbellekleme ile ilgili şartlı istekler çifte yarar sağlar. Birinci
        olarak, böyle bir istek arkadaki sunucuya yapılıyorsa ve iki içerik de
        aynıysa bunu saptamak kolay olur ve özkaynağın tamamını aktarma
        külfetinden kurtulunur.</p>

      <p>İkinci olarak, şartlı istekler arka sunucuda normalden daha az
        faaliyete sebep olur. Durağan dosyalar için bu genellikle
        <code>stat()</code> veya  benzeri bir sistem çağrısıyla dosya
        boyutları ve değişiklik zamanına bakmak şeklinde gerçekleşir.
        Böylelikle Apache yerel içeriği önbellekliyor olsa bile ve hatta
        içerik zaman aşımına da uğrasa önbellekteki dosyada bir değişiklik
        olmadığı takdirde içeriği önbellekten sunmak daha hızlı olacaktır.
        Çünkü dosyayı önbellekten okumak, arka sunucudan okumaktan daha
        hızlıdır (bu, bellekten okumayla diskten okumayı karşılaştırmak
        gibidir).</p>
    

    <h3>Neler Önbelleklenebilir?</h3>
      

      <p>Evvelce bahsedildiği gibi Apache’de iki tür önbellekleme yapılır ve
        bunlar farklı yöntemlerle çalışır. <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>
        önbelleklemesinde dosyalar Apache başlatıldığı zamanki içerikle
        saklanır. Bu modül tarafından önbelleğe alınmış bir dosya için istek
        geldiğinde isteğin yolu kesilip önbellekteki dosya sunulur.</p>

      <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önbelleklemesinde işler biraz daha
        karışıktır. Bir isteğe hizmet sunulurken istenen içerik evvelce
        önbelleklenmemişse önbellekleme modülü önce içeriğin
        önbelleklenebilirliğine bakar. Bir yanıtın önbelleklenebilirliğini
        belirleyen koşullar şunlardır:</p>

      <ol>
        <li>Önbellekleme bu URL ile etkin kılınabilmelidir. <code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code> ve <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code> yönergelerine bakınız.</li>

        <li>Yanıtın HTTP durum kodu 200, 203, 300, 301 veya 410 olmalıdır.</li>

        <li>İstek bir HTTP GET isteği olmalıdır.</li>

        <li>İstek bir "Authorization:" başlığı içeriyorsa yanıt önbelleğe
          alınmayacaktır.</li>

        <li>Eğer yanıt bir "Authorization:" başlığı içeriyorsa ayrıca
          "Cache-Control:" başlığında da "s-maxage", "must-revalidate" veya
          "public" değerlerinden birini içermelidir.</li>

        <li>Eğer URL (GET yöntemi kullanan bir HTML formunun yaptığı gibi) bir
          sorgu dizgesi içeriyorsa  yanıt, RFC2616’nın 13.9. bölümünde
          açıklandığı gibi bir "Expires:" başlığı içermedikçe yanıt içeriği
          önbelleğe alınmayacaktır.</li>

        <li><code class="directive"><a href="./mod/mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></code>
          yönergesinin kullanımını gerektiren bir durum olmadıkça 200 durum
          koduna sahip bir yanıtın "Etag", "Last-Modified" ve "Expires"
          başlıklarından en az birini içermesi gerekir.</li>

        <li><code class="directive"><a href="./mod/mod_cache.html#cachestoreprivate">CacheStorePrivate</a></code>
          yönergesinin kullanımını gerektiren bir durum olmadıkça yanıt
          "private" değerli bir "Cache-Control:" başlığı içerdiği takdirde
          yanıtın içeriği önbelleğe alınmayacaktır.</li>

        <li>Benzer şekilde, <code class="directive"><a href="./mod/mod_cache.html#cachestorenostore">CacheStoreNoStore</a></code> yönergesi kullanılmamışsa yanıt
          "no-store" değerli bir "Cache-Control:" başlığı içeriyorsa yanıt
          içeriği önbelleğe alınmayacaktır.</li>

        <li>Herşeyle eşleşen "*" değerli bir "Vary:" başlığı içeren bir
          yanıtın içeriği önbelleğe alınmaz.</li>
      </ol>
    

    <h3>Neler Önbelleklenmemeli?</h3>
      

      <p>Kısaca, istek zamana aşırı bağımlıysa ya da istek kısmen bile olsa
        HTTP uzlaşımıyla bağdaşmıyorsa önbelleğe alınmamalıdır.</p>

      <p>İçeriği istekçinin IP adresine bağlı olarak değişen veya her beş
        dakikada bir değişikliğe uğrayan bir devingen içeriğe sahipseniz böyle
        bir içerik asla önbelleğe alınmamalıdır.</p>

      <p>Diğer taraftan, içerik HTTP başlığındaki değerlere bağlı olarak
        değişiyorsa içeriğin bir "Vary" başlığı kullanılarak akıllıca
        önbelleklenmesi imkanı mevcuttur.</p>
    

    <h3>Değişken/Uzlaşımlı İçerik</h3>
      

      <p>"Vary" başlıklı bir yanıt arka sunucudan istenirken
        <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> tarafından alınmışsa akıllıca ele alınmaya
        çalışılacaktır. Mümkünse, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> gelecekte bu
        içerikle ilgili isteklerin "Vary" başlıklı yanıtları olacağını
        saptayacak ve önbellekten doğru içerikle yanıt verecektir.</p>

      <p>Örneğin, bir yanıt şöyle bir başlık ile alınmışsa,</p>

      <div class="example"><p><code>
        Vary: negotiate,accept-language,accept-charset
      </code></p></div>

      <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> sadece accept-language ve accept-charset
        başlıkları özgün istekle eşleşen önbellekli içeriği sunacaktır.</p>
    

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Kaygıları</a></h2>
    

    <h3>Erişim Denetimi ve Yetkilendirme</h3>
      

      <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> çoğunlukla bir karşı vekile sahip olmak
        amacıyla kullanılır. Arka sunucunun sorgulanmasını gerektirmeyen tüm
        istekler önbellekleme modülü tarafından karşılanacaktır. Yerel
        özkaynakların önbelleklenmesi söz konusu olduğunda Apache’nin güvenlik
        modeli büyükçe bir değişikliğe uğrar.</p>

      <p>Olası <code>.htaccess</code> dosyalarının dosya sisteminin tamamında
        taranması çok pahalı bir işlem olduğundan <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>,
        (işlemi hızlandırmak için) önbelleğe almanın temel amacını kısmen
        gözardı ederek, önbellekteki içeriğin sunumu için gerekli
        yetkilendirmenin olup olmadığı konusunda bir karar üretmez. Başka bir
        deyişle, eğer <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir kısım içeriği önbelleğe
        almışsa içerik zaman aşımına uğramadığı sürece bu içerik önbellekten
        sunulacaktır.</p>

      <p>Örneğin, yapılandırmanız bir özkaynağa IP adresine göre erişime izin
        veriyorsa bu içeriğin önbelleğe alınmayacağından emin olmalısınız.
        Bunu <code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code>
        yönergesini veya <code class="module"><a href="./mod/mod_expires.html">mod_expires</a></code> kullanarak
        yapabilirsiniz. Bunu yapmaz, olayı kendi haline bırakırsanız
        <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> bir karşı vekil gibi çalışarak sunulan her
        içeriği arabelleğe alacak ve hangi IP adresinden gelirse gelsin her
        istemciye bunu sunacaktır.</p>
    

    <h3>Yerel İstismarcılar</h3>
      

      <p>Son kullanıcılarıın isteklerine önbellekten hizmet sunulduğundan
        önbelleğin kendisi içerikle etkileşime geçmek isteyenlerin veya
        içeriği tahrif etmek isteyenlerin hedefi haline gelebilir. Apache’yi
        çalıştıran kullanıcı tarafından her zaman önbelleğe yazılabileceğini
        akıldan çıkarmamak önemlidir. Bu durumda alışılmışın tersine tüm
        içeriğin Apache kullanıcısı tarafından yazılamamasının sağlanması
        önerilir.</p>

      <p>Eğer Apache kullanıcısı, örneğin bir CGI sürecindeki açık nedeniyle
        tehlikeye atılırsa, önbellek hedef alınabilir.
        <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> kullanılırken önbellekteki bir öğeyi
        değiştirmek veya önbelleğe yeni bir öğe eklemek görece daha
        kolaydır.</p>

      <p>Bu risk, Apache kullanıcısını kullanan diğer saldırı türleriyle
        karşılaştırıldığında daha yüksektir. <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>
        kullanıyorsanız şunları aklınızdan çıkarmayın: (1) Apache güvenlik
        güncellemelerini takip edin ve sunucunuzu buna göre güncelleyin. (2)
        Mümkünse <a href="suexec.html">suEXEC</a> kullanarak CGI süreçlerini
        Apache kullanıcısı olmayan bir kullanıcının aidiyetinde çalıştırın.</p>

    

    <h3>Önbellek Zehirlenmeleri</h3>
      

      <p>Apache bir önbellekli vekil sunucu olarak çalıştığında önbellek
        zehirlenmesi adı verilen sorunla karşılaşılma olasılığı vardır.
        Önbellek zehirlenmesi, vekil sunucunun arka sunucudan yanlış (ve
        genellikle istenmeyen) içerik almasına sebep olan bir saldırı türünü
        betimlemek için yaygın olarak kullanılan bir terimdir.</p>

      <p>Örneğin Apache’nin çalıştığı sistemin kullandığı DNS sunucuları DNS
        önbellek zehirlenmesinden etkilenebilecek durumdaysa, bir saldırgan
        Apache’nin istekleri almak için başvuracağı kaynak sunucunun yerini
        değiştirebilir. Diğer bir örnek, HTTP istek kaçakçılığı adı verilen
        bir saldırı türüdür.</p>

      <p>Bu belge HTTP istek kaçakçılığını derinliğine incelenmesi için uygun
        yer değildir (böyle kaynaklara arama motorunuzla erişebilirsiniz).
        Bununla birlikte, vekil tarafından kaynak sunucudan alınan içeriği
        tamamen denetim altına almak amacıyla kaynak sunucudaki bir açığı
        istismar etmeye yönelik bir dizi istek yapılabileceğinin olasılık
        dahilinde olduğunu bilmenizde yarar vardır.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="filehandle" id="filehandle">Dosya Tanıtıcı Önbelleklemesi</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table>

    <p>Bir dosyanın açılması işlemi, özellikle de ağ dosya sistemlerinde
      bulunan dosyalar için önemli bir gecikme kaynağı olabilir. Önbellekte,
      çok sunulan dosyaların kendilerinin değil, açık dosya tanıtıcılarının
      saklanması Apache’yi bu tür gecikmelerden koruyabilir. Apache’de iki tür
      dosya tanıtıcı önbelleklemesi yapılabilmektedir.</p>

    <h3><code>CacheFile</code> yönergesi ile</h3>
      

      <p>Apache’de mevcut önbelleklemenin en temel şekli
        <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> tarafından sağlanan dosya tanıtıcı
        önbelleklemesidir. Bu önbellek türü dosyaların kendilerini değil açık
        dosya tanıtıcılarının bir listesini saklar. Dosyaların bu anlamda
        önbelleklenmesi, <code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi yapılandırma dosyasında belirtilerek
        sağlanabilir.</p>

      <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesi
        belirtilen dosyanın Apache başlatıldığında açılmasını ve dosya için
        yapılan sonraki her istekte bu dosya tanıtıcısının kullanılmasını
        sağlar.</p>

      <div class="example"><p><code>
        CacheFile /usr/local/apache2/htdocs/index.html
      </code></p></div>

      <p>Büyük miktarda dosyayı bu anlamda önbelleklemeyi tasarlıyorsanız
        işletim sisteminizin açık dosya tanıtıcılarının sayısı ile ilgili
        sınırlamasını uygun bir değere ayarlamanız gerekebilir.</p>

      <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesini
        kullandığınız takdirde dosya içeriğindeki değişiklikleri anında isteğe
        yansıtamazsınız. Apache dosyayı ilk başlatıldığındaki haliyle
        sunar.</p>

      <p>Eğer Apache çalışırken dosya silinmişse Apache ilk başlatıldığındaki
        haline ilişkin dosya tanıtıcıyı sağlamaya ve dolayısıyla dosya
        içeriğini sunmaya devam edecektir. Yani, dosya silinmiş ve artık dosya
        sisteminde görünmüyor olsa bile Apache durdurulup dosya tanıtıcıları
        kapanmadıkça dosyaların silinmesiyle açılan yer serbest
        kalmayacaktır.</p>
    

    <h3><code>CacheEnable</code> yönergesi ile</h3>
      

      <p><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülünün ayrıca, <code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code> yönergesi üzerinden etkin
        kılınabilen kendine özgü bir dosya tanıtıcı önbellekleme şeması
        vardır.</p>

      <div class="example"><p><code>
        CacheEnable fd /
      </code></p></div>

      <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>’nin devreye girdiği her işlemde olduğu
        gibi bu tür dosya tanıtıcı önbelleklemesi de akıllıca yapılır ve
        önbellekteki içerik zaman aşımına uğradığı halde sunulmaya devam
        edilmez.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="inmemory" id="inmemory">Sistem Belleğinde Önbellekleme</a></h2>
    

     <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code></li><li><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li><li><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code></li></ul></td></tr></table>

    <p>İçeriğin sistem belleğinden sunulması içerik sunmanın evrensel olarak
      en hızlı yoludur. Dosyaların bir disk denetleyiciden okunması ya da daha
      kötüsü uzak bir ağdan okunması bellekten okumayla karşılaştırılamayacak
      ölçüde yavaş işlemlerdir. Disk denetleyiciler genellikle fiziksel
      süreçleri denetlerler. Ağ erişimi ise band genişliği sınırlamalarından
      etkilenir. Halbuki bellek erişimi sadece nano saniyeler mertebesinde
      gerçekleşir.</p>

    <p>Sistem belleği en pahalı saklama ortamı olması sebebiyle en verimli
      şekilde kullanımı önemlidir. Dosyaları sistem belleğinde saklamakla
      sistemin kullanabileceği bellek miktarını azaltmış olursunuz. İşletim
      sistemi önbelleklemesinde göreceğiniz gibi bu öyle basit bir konu
      değildir. Apache’nin kendi kullandığı belleğin bir kısmını önbellek
      olarak ayırırken çok fazla bellek kullanmamak önemlidir. Aksi takdirde
      işletim sistemi belleğin yetmediği noktada belleği diske
      takaslayacağından istenen başarım artışı sağlanamayacaktır.</p>

    <h3>İşletim Sistemi Önbelleklemesi</h3>
      

      <p>Günümüz iştetim sistemlerinin hemen hemen tamamında bellek içi
        dosya/veri saklama işlemlerini çekirdek yönetir. Bu güçlü bir
        özelliktir ve işletim sistemlerinin büyük çoğunluğu bunu böyle yapar.
        Örneğin, Linux’ta bir dosyanın ilk defa okunduğunda ve ikinci kez
        okunduğunda işlemcinin ne kadar meşgul edildiğine bakalım:</p>

      <div class="example"><p><code>
        colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
        real    0m0.065s<br />
        user    0m0.000s<br />
        sys     0m0.001s<br />
        colm@coroebus:~$ time cat testfile &gt; /dev/null<br />
        real    0m0.003s<br />
        user    0m0.003s<br />
        sys     0m0.000s
      </code></p></div>

      <p>Küçük bir dosya için bile okuma süresi bakımından büyük fark ortaya
        çıkmaktadır. Bunun sebebi çekirdeğin dosya içeriğini bellek daha
        güncel amaçlar için lazım olana dek bellek içinde saklamasıdır.</p>

      <p>Sisteminizde yeterince yedek bellek olduğundan eminseniz, bu
        önbellekte daha fazla dosya saklanacağından emin olabilirsiniz.
        Bundan, önbelleğin sistem belleğinde verimli biçimde tutulması için
        Apache’de ek bir yapılandırmaya gidilmesinin gerekmediği sonucu
        çıkarılabilir.</p>

      <p>Bundan başka, işletim sistemi dosyaların değiştiği ve silindiği
        zamanları bildiğinden bu tür dosyaların içerikleri gerektiğinde
        önbellekten kendiliğinden silinmiş olur. Bellek içinde dosya saklarken
        dosyaların değiştirilme zamanlarını bilme olanağı olmadığından bu
        durum Apache’ye büyük yarar sağlar.</p>
    

    <p>İşletim sisteminin dosyaların önbelleklenmesi için sağladığı bunca
      yarara ve başarım artışına karşın bellek içinde dosya önbelleklemenin
      Apache tarafından yerine getirilmesinin daha iyi olacağı bazı durumlar
      vardır.</p>

    <p>Öncelikle, işletim sistemi sadece bildiği dosyaları önbellekler (veya
      önbelleklediği dosyaları bilir). Eğer Apache’yi bir vekil sunucu olarak
      çalıştırıyorsanız, önbelleklediğiniz dosyalar yerel olarak saklanmadan
      uzaktan sunulabilir. Ancak bellekiçi önbelleklemenin sağladığı hız
      artışının dayanılmaz çekiciliğine karşı koyamıyorsanız, Apache’nin kendi
      bellekiçi önbelleklemesine ihtiyacınız var demektir.</p>

    <h3><code>MMapFile</code> yönergesi ile</h3>
      

      <p><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code> modülü, bir durağan dosyanın
        içeriğini sunucunun başlatılması sırasında (mmap sistem çağrısıyla)
        belleğe eşlenmesini mümkün kılmak için <code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergesini sağlar.
        Apache bu dosyaya gelecek sonraki istekler için dosyanın bellekiçi
        içeriğini kullanacaktır.</p>

      <div class="example"><p><code>
        MMapFile /usr/local/apache2/htdocs/index.html
      </code></p></div>

      <p><code class="directive"><a href="./mod/mod_file_cache.html#cachefile">CacheFile</a></code> yönergesinde
        olduğu gibi bu dosyalarda Apache başlatıldıktan sonra yapılacak bir
        değişiklikten Apache’nin haberi olmayacaktır.</p>

      <p><code class="directive"><a href="./mod/mod_file_cache.html#mmapfile">MMapFile</a></code> yönergesi
        ayırdığı belleğin toplam miktarı ile ilgilenmez, dolayısıyla
        yönergenin aşırı kullanımından kaçınmalısınız. Apache’nin çocuk
        süreçlerinin her biri bu belleğin kendilerine ait birer kopyasını
        yapacağından belleğe eşlenen dosyaların çok yer kaplamaması büyük önem
        taşımaktadır; aksi takdirde işletim sistemi belleği diske
        takaslayacağından beklenen fayda sağlanamayacaktır.</p>
    

    <h3><code>mod_mem_cache</code> modülü ile</h3>
      

      <p><code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülü HTTP belirtimine uygun olarak
        bellekiçi önbelleklemeyi akıllıca uygular. Ayrıca yüksek belleği
        doğrudan kullanabildiğinden <var>MMap</var> desteği olmayan
        sistemlerde bile bellekiçi önbellekleme yapabilir.</p>

      <p>Bu tür önbellekleme şöyle etkin kılınabilir:</p>

      <div class="example"><p><code>
        # Bellekiçi önbelleklemeyi etkin kılalım<br />
        CacheEnable mem /<br />
        <br />
        # Önbellek 1 Megabayttan büyük olmasın<br />
        MCacheSize 1024
      </code></p></div>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="disk" id="disk">Disk Üzerinde Önbellekleme</a></h2>
    

     <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_cache.html#cacheenable">CacheEnable</a></code></li><li><code class="directive"><a href="./mod/mod_cache.html#cachedisable">CacheDisable</a></code></li></ul></td></tr></table>

    <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> modülü önbelleklemenin
      <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> için disk üzerinde yapılmasını mümkün kılar.
      <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modülünde olduğu gibi bu önbellekleme de
      akıllıca yapılır ve önbellekteki içerik sadece geçerli kabul edildiği
      sürece sunulabilir.</p>

    <p>Modül bu amaçla genelde şöyle kullanılır:</p>

    <div class="example"><p><code>
      CacheRoot   /var/cache/apache/<br />
      CacheEnable disk /<br />
      CacheDirLevels 2<br />
      CacheDirLength 1
    </code></p></div>

    <p>En önemlisi önbelleklenen dosyaların yerel olarak saklanması olup
      işletim sisteminin sağladığı bellekiçi önbelleklemeden de ayrıca
      faydalanılmış olur. Bu bakımdan, dosyalar disk üzerinde saklansa bile
      sıkça erişilen dosyalar işletim sistemi sayesinde aslında bellekten
      sunulmuş olacaklardır.</p>

    <h3>Önbellekte Saklamanın Anlamı</h3>
      

      <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> öğeleri önbellekte saklamak için
        istek yapılan URL’nin 22 karakterlik özetini oluşturur. Bu özet, çok
        sayıda URL’nin aynı özeti oluşturmaması için konak ismi, protokol,
        port ve varsa CGI argümanlarından oluşur.</p>

      <p>Özeti oluşturan karakterler 64 karakterlik bir karakter kümesinden
        seçildiğinden oluşturulması olası farklı özet sayısı 64^22’dir.
        Örneğin, bir URL’nin <code>xyTGxSMO2b68mBCykqkp1w</code> gibi bir
        özeti olabilir. Bu özet, bu URL ile erişilen dosyalar önbellek içinde
        saklanırken dosya ismi öneki olarak kullanılır. Ancak bununla
        yetinilmez ve içerik <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code> ve <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code> yönergelerinin
        değerlerine göre önce dizinlere ayrılır.</p>

      <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
        yönergesi kaç alt seviye dizin olacağını belirler. Örneğin, yukarıdaki
        özete sahip bir dosyanın isminin başına yukarıdaki yapılandırma
        örneğine uygun olarak
        <code>/var/cache/apache/x/y/TGxSMO2b68mBCykqkp1w</code> gibi bir önek
        getirilebilirdi.</p>

      <p>Bu tekniğin asıl amacı belli bir dizin içinde bulunabilecek
        dosyaların ve alt dizinlerin sayısını düşük tutmaktır. Bu sayının
        büyük olması çoğu işletim sisteminde başarımın düşmesine sebep olur.
        <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code>
        yönergesi "1" değeriyle kullanıldığında her dizin altında en fazla 64
        alt dizin veya dosya açılabilir. "2" değeriyle kullanıldığında ise bu
        sayı 64^2’ye yükselir ve böyle artarak gider. İyi bir sebebiniz
        olmadıkça <code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code> için değer olarak
        "1" belirtmenizi öneririz.</p>

      <p><code class="directive"><a href="./mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code>
        yönergesine atanacak değer önbellekte saklamayı düşündüğünüz olası
        dosya sayısı ile ilgilidir. Yukarıdaki örnekte olduğu gibi "2"
        değerini belirtirseniz, toplamda en fazla 4096 dizin oluşturulabilir.
        1 milyon dosyanın önbelleklendiği bir durumda bu, her dizinde yaklaşık
        olarak 245 önbelleklenmiş URL demektir.</p>

      <p>Her URL için önbellekte en az iki dosya saklanır. Biri genellikle URL
        hakkındaki temel verilerden oluşan ".header" dosyasıdır, diğeri ise
        sunulacak içeriğin bire bir kopyası olan ".data" dosyasıdır.</p>

      <p>"Vary" başlığı üzerinden içeriğin uzlaşıldığı durumda URL için bir
        ".vary" dizini oluşturulur. Bu dizin her biri farklı bir uzlaşıma ait
        çok sayıda ".data" dosyası içerebilir.</p>
    

    <h3>Disk Önbelleğinin Bakımı</h3>
      

      <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> zaman aşımına uğrayan önbellekli
        içeriği silse de önbelleğin toplam boyu ve ne kadar boş bellek kaldığı
        hakkında bilgi vermez.</p>

      <p>Bunun yerine Apache önbellek içeriğini düzenli aralıklarla
        temizleyebilmeniz için <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> adında bir araç
        içerir.  Önbellek için azami ne kadar yer kullanılacağının ve bunun
        üzerinde <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’i hangi sıklıkta
        çalıştırılacağının tespiti biraz karmaşık bir işlem olup uygun değerler
        genellikle deneme yanılma yoluyla bulunur.</p>

      <p><code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> iki işlem kipine sahiptir. Kalıcı bir
        artalan süreci olarak çalışabileceği gibi cron üzerinden belli
        aralıklarla da çalıştırılabilir. Çok büyük (onlarca GB) önbelleklerde
        <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in işini bitirmesi 1 saatten fazla
        sürebileceğinden, cron ile çalıştırma durumunda aynı anda birden fazla
        kopyanın çalışıyor durumda olmaması için
        <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in çalıştırılma aralığını iyi
        belirlemek gerekir.</p>

      <p class="figure">
      <img src="images/caching_fig1.tr.png" alt="" width="600" height="406" /><br />
      <a id="figure1" name="figure1"><dfn>Şekil 1</dfn></a>:
 Önbelleğin büyümesi ve düzenli aralıklarla temizlenmesi.</p>

      <p><code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ne kadar önbellek alanı kullandığı
        ile ilgili bir bilgi vermediğinden <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>’in
        bir temizlik sonrası yeterince büyük bir genişleme alanı kalacak
        şekilde yapılandırılması önemlidir.</p>
    

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                               configuring.html                                                                                    100644       0       0        27650 11256641267  11451  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Yapılandırma Dosyaları - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Yapılandırma Dosyaları</h1>


<p>Bu belgede Apache HTTP sunucusunu yapılandırmakta kullanılan dosyalar açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#main">Ana Yapılandırma Dosyaları</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#syntax">Yapılandırma Dosyalarının Sözdizimi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#modules">Modüller</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#scope">Yönergelerin Etki Alanı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#htaccess">.htaccess Dosyaları</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="main" id="main">Ana Yapılandırma Dosyaları</a></h2>
    
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#include">Include</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#typesconfig">TypesConfig</a></code></li></ul></td></tr></table>

    <p>Apache düz metin yapılandırma dosyalarına <a href="mod/directives.html">yönergeler</a> yerleştirilerek yapılandırılır. Ana yapılandırma dosyasının ismi normalde <code>httpd.conf</code>’tur. Bu dosyanın yeri derleme sırasında belirlenir, ancak çalıştırma sırasında <code>-f</code> komut satırı seçeneği ile başka bir yer belirtilebilir. Ayrıca, <code class="directive"><a href="./mod/core.html#include">Include</a></code> yönergesi kullanılarak başka yapılandırma dosyaları da eklenebilir ve bu dosyaların isimleri belirtilirken dosya ismi şablonları kullanılabilir. Bu dosyaların içine de ana yapılandırma dosyasında olduğu gibi her türlü yönerge yerleştirilebilir. Ana yapılandırma dosyalarındaki değişiklikler Apache tarafından sadece başlatma veya yeniden başlatma sırasında etkin kılınır.</p>

    <p>Sunucu ayrıca MIME belge türlerini içeren bir dosya daha okur; dosya ismi öntanımlı olarak <code>mime.types</code> olup <code class="directive"><a href="./mod/mod_mime.html#typesconfig">TypesConfig</a></code> yönergesi ile başka bir dosya belirtilebilir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="syntax" id="syntax">Yapılandırma Dosyalarının Sözdizimi</a></h2>
    

    <p>Apache yapılandırma dosyalarının her satırında sadece bir yönerge bulunur ve bir yönergenin birden fazla satıra yayılması daha iyi olacaksa satır katlanabilir; devamı bir alt satırda olan her satırın son karakteri “\” (tersbölü) olmalı, satırsonu karakteri ile bu tersbölü karakteri arasında başka karakter bulunmamalıdır.</p>

    <p>Yapılandırma dosyalarındaki yönergelerin isimleri harf büyüklüğüne duyarlı olduğu halde argümanları genellikle harf büyüklüğüne duyarlı değildir. Diyez (“#”) karakteri ile başlayan satırlar açıklama olarak ele alınır ve yok sayılırlar. Yapılandırma yönergesi içeren satırların ardına  açıklama yerleştirilemez. Yönerge isminden önce yer alan boşluklar ve boş satırlar yok sayılır; bu özellik, okunabilirliği sağlamak için yönergelerin girintilenebilmesi olanağını verir.</p>

    <p>Sunucuyu başlatmadan önce <code>apachectl configtest</code> ile veya <code>-t</code> komut satırı seçeneği ile yapılandırma dosyalarınızı sözdizimi hatalarına karşı sınayabilirsiniz.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="modules" id="modules">Modüller</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code></li><li><code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table>

    <p>Apache modüler yapıda bir sunucudur. Bu, çekirdek sunucunun sadece en temel işlevselliği içermesi demektir. Ek özellikler, Apache’ye <a href="mod/index.html">modüller</a> halinde yüklenebilir. Öntanımlı olarak, derleme sırasında sunucunun <a href="mod/module-dict.html#Status">temel</a> bir modül kümesi içermesi sağlanır. Eğer sunucu  <a href="dso.html">devingen yüklenen</a> modülleri kullanmak üzere yapılandırılarak derlenirse modüller ayrı olarak derlenip gerektiği zaman <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi kullanılarak yüklenebilir. Aksi takdirde, ek modülleri yükleyebilmek veya kaldırabilmek için Apache’nin yeniden derlenmesi gerekir. Yapılandırma yönergeleri belli bir modülün varlığına dayalı olarak bir <code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> bloku içine alınmak suretiyle sunucuya koşullu olarak eklenebilir.</p>

    <p>Sunucunun içinde derlenmiş modüllerin listesini görmek için <code>-l</code> komut satırı seçeneğini kullanabilirsiniz.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="scope" id="scope">Yönergelerin Etki Alanı</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li></ul></td></tr></table>

    <p>Ana yapılandırma dosyasına yerleştirilen yönergeler sunucunun tamamına uygulanır. Yapılandırmanızı sunucunun belli bir parçası için değiştirmek isterseniz yönergelerinizi <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code>, <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code>, <code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code>, <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> ve <code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> bölümleri içine yerleştirerek etki alanlarını değiştirebilirsiniz. Bu bölümler yönergelerin etkilediği alanları dosya sistemininin belli yerleri veya belli URL’lerle sınırlar. Yerine göre daha hassas ayarlamalar yapmak için bu bölgeler iç içe de kullanılabilir.</p>

    <p>Apache, çok sayıda farklı siteyi aynı anda sunabilecek yetenektedir. Buna <a href="vhosts/index.html">Sanal Konaklık</a> adı verilir. Yönergelerin etki alanları ayrıca <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümleri içine konarak da değiştirilebilir. Böylece belli bir siteden gelen isteklere farklı bir uygulama yapılabilir.</p>

    <p>Yönergelerin çoğu bu bölümlere yerleştirilebilirse de bazı yönergelerin bazı bağlamlarda bir etkisi olmaz. Örneğin, süreç oluşturmayı denetleyen yönergeler sadece ana sunucu bağlamına yerleştirilebilir. Hangi yönergenin hangi bağlama yerleştirilebileceğini bulmak için yönergenin <a href="mod/directive-dict.html#Context">bağlamına</a> bakınız. Bu konuda daha ayrıntılı bilgi edinmek için: <a href="sections.html">Directory, Location ve Files Bölümleri Nasıl Çalışır</a>.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="htaccess" id="htaccess">.htaccess Dosyaları</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code></li></ul></td></tr></table>

    <p>Apache yapılandırma sorumluluğunu dağıtmak için site ağaçları içine özel dosyalar yerleştirilmesine izin verir. Bu özel dosyalar normalde <code>.htaccess</code> dosyaları olmakla birlikte <code class="directive"><a href="./mod/core.html#accessfilename">AccessFileName</a></code> yönergesi kullanılarak rasgele bir isim belirtilebilir. <code>.htaccess</code> dosyalarına yerleştirilen yönergeler sadece dosyanın bulunduğu dizine ve alt dizinlerine uygulanır. <code>.htaccess</code> dosyalarında da ana yapılandırma dosyalarında geçerli sözdizimi kullanılır. <code>.htaccess</code> dosyaları her istek gelişinde yeniden okunduğundan bu dosyalarda yapılan değişiklikler hemen etkisini gösterir.</p>

    <p><code>.htaccess</code> dosyalarına hangi yönergelerin yerleştirilebileceğini bulmak için yönerge <a href="mod/directive-dict.html#Context">bağlamına</a> bakınız. Sunucunun yöneticisi <code>.htaccess</code> dosyalarına hangi yönergelerin yerleştirilebileceğini ana yapılandırma dosyalarında <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesini kullanarak belirleyebilir.</p>

    <p><code>.htaccess</code> dosyaları hakkında daha ayrıntılı bilgi edinmek için <a href="howto/htaccess.html">.htaccess öğreticisi</a>ne bakabilirsiniz.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                        content-negotiation.html                                                                            100644       0       0       102302 11256641267  13133  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>İçerik Uzlaşımı - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>İçerik Uzlaşımı</h1>



    <p>Apache, içerik uzlaşımını HTTP/1.1 belirtiminde bahsedildiği şekliyle
      destekler. Bir özkaynağın en iyi gösterimini, tarayıcının sağladığı
      karakter kodlaması, karakter kümesi, dil, ortam türü gibi kullanıcı
      tercihlerine bağlı olarak seçebilir. Ayrıca, tarayıcının kullanıcı
      tercihlerini tam yansıtamadığı durumlarda istekleri daha akıllıca ele
      alabilmeyi sağlayacak bir takım özelliklere de sahiptir.</p>

    <p>İçerik uzlaşımı öntanımlı olarak derlenen
      <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü tarafından sağlanır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#about">İçerik Uzlaşımı Hakkında</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#negotiation">Apache’de İçerik Uzlaşımı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#methods">Uzlaşım Yöntemleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#better">Üstünlük Değerleriyle Oynamak</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#caching">Arabellekler Hakkında</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="about" id="about">İçerik Uzlaşımı Hakkında</a></h2>

    <p>Bir özkaynağın bir çok farklı gösterimi olabilir. Örneğin, bir belgenin
      farklı ortam türleri ve/veya farklı diller için gösterimleri olabilir.
      En uygun seçimi yapmanın tek yolu kullanıcıya bir liste verip seçmesini
      istemektir. Bununla birlikte sunucunun bu seçimi kendiliğinden yapması
      da mümkündür. Tarayıcılar isteğin bir parçası olarak kullanıcı
      tercihlerini de gönderdiğinden bu istendiği gibi çalışır. Örneğin bir
      tarayıcı, kullanıcısınının mümkünse Fransızca içerik tercih ettiğini
      yoksa İngilizce içeriğe de razı olabileceğini belirtebilirdi.
      Tarayıcılar bu tercihleri başlıkta belirtirler. Tarayıcı sadece Türkçe
      içerik istendiğini şöyle belirtebilirdi:</p>

    <div class="example"><p><code>Accept-Language: tr</code></p></div>

    <p>Bu tercihin yerine getirilebilmesininin sadece, desteklenen diller
      arasında bu dilin varlığına ve istenen belgenin bu dilde bir
      gösteriminin bulunmasına bağlı oluşuna dikkat ediniz.</p>

    <p>Daha karmaşık bir istek örneği olarak, tarayıcının Fransızca ve
      İngilizce içerik kabul etmeye ayarlandığını fakat Fransızcayı tercih
      ettiğini ve çeşitli ortam türlerini kabul etmekle birlikte salt metin ve
      diğer metin türlerinden ziyade HTML tercih ettiğini, ayrıca, diğer ortam
      türleri üzerinde GIF veya JPEG tercih ettiğini fakat başka çare yoksa
      her ortam türüne de izin verdiğini belirtiyor olsun:</p>

    <div class="example"><p><code>
      Accept-Language: fr; q=1.0, en; q=0.5<br />
      Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg;
      q=0.6, image/*; q=0.5, */*; q=0.1
    </code></p></div>

    <p>Apache, HTTP/1.1 belirtiminde tanımlanan şekliyle ‘sunucu yönetiminde’
      içerik uzlaşımını destekler. <code>Accept</code>,
      <code>Accept-Language</code>, <code>Accept-Charset</code> ve
      <code>Accept-Encoding</code> istek başlıklarını tamamen destekler.
      Apache ayrıca, RFC 2295 ve RFC 2296’da tanımlanan bir deneysel uzlaşım
      olarak ‘şeffaf’ içerik uzlaşımını da destekler. Fakat ‘özellik
      uzlaşımını’ bu RFC’lerde tanımlandığı gibi desteklemez.</p>

    <p>Bir <strong>özkaynak</strong> bir URI (RFC 2396) tarafından betimlenen
      kavramsal bir öğedir. Apache gibi bir HTTP sunucusu, ortam türü,
      karakter kümesi, kodlama ve saire ile tanımlanmış bir bayt dizisi
      şeklindeki her gösterimiyle, özkaynaklara kendi isim alanları dahilinde
      erişim sağlar. Her özkaynağın aynı anda bir veya daha fazla gösterimi
      mevcut olabileceği gibi hiç mevcut olmayabilir de. Eğer çok sayıda
      gösterim mevcutsa, bu özkaynağın <strong>uzlaşılabilir</strong>
      olduğundan ve her gösteriminin  bir <strong>çeşitlilik</strong>
      oluşturduğundan bunun da uzlaşımın <strong>boyutlar</strong>ından
      kaynaklandığından bahsedilebilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="negotiation" id="negotiation">Apache’de İçerik Uzlaşımı</a></h2>

    <p>Bir özkaynak üzerinde uzlaşılırken gösterim çeşitlerinin her biri
      hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:</p>

    <ul>
      <li>Ya gösterim çeşitlerini içeren dosyaların isimleriyle eşleşmeyi
        sağlayan bir tür eşlemi kullanılır (bir <code>*.var</code> dosyası
        gibi).</li>

      <li>Ya da sunucu örtük bir dosya ismi kalıbı eşleşmesinin ardından
        sonuçlar arasından seçim yapar; buna ‘Çoklu Görünüm’ araması adı
        verilir.</li>
    </ul>

   <h3><a name="type-map" id="type-map">Bir türeşlem dosyası kullanmak</a></h3>

    <p>Bir türeşlem dosyası, <code>type-map</code> eylemcisi ile ilişkili bir
      belgedir (ya da eski Apache yapılandırmaları ile geriye uyumluluk için,
      <code>application/x-type-map</code> <a class="glossarylink" href="./glossary.html#mime türü" title="sözlüğe bakınız">MIME türü</a>nde
      bir belgedir). Bu özelliği kullanmak için, yapılandırmada bir tür
      eşleyici olarak her dosya ismi uzantısı için bir <code>type-map</code>
      eylemcisi tanımlamalısınız. Bu, sunucu yapılandırma dosyasında en iyi
      şöyle yapılabilir:</p>

    <div class="example"><p><code>AddHandler type-map .var</code></p></div>

    <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
      olmalı ve her gösterim çeşidi için bir girdi içermelidir; bu girdiler
      ardarda belirtilen HTTP biçem başlık satırlarından oluşur. Farklı
      gösterimlerin girdileri bir boş satırla diğerlerinden ayrılır. Aynı
      girdi içinde boş satır kullanılamaz. Bir eşlem dosyasını bir birleşik
      öğenin tamamı için bir girdi ile başlatmak adet olmuştur (ise de, bu
      gerekli değildir, hele yoksayılacaksa hiç gerekli değildir). Eşlem
      dosyası için aşağıda bir örnek verilmiştir. Dosya <code>misal</code>
      isimli bir özkaynak hakkında olduğundan dosyaya <code>misal.var</code>
      ismi verilebilir.</p>

    <div class="example"><p><code>
      URI: misal<br />
    <br />
      URI: misal.en.html<br />
      Content-type: text/html<br />
      Content-language: en<br />
    <br />
      URI: misal.fr.de.html<br />
      Content-type: text/html;charset=iso-8859-2<br />
      Content-language: fr, de<br />
    </code></p></div>

    <p>Ayrıca, <code>MultiViews</code> etkin olsa bile bir türeşlem dosyasının
      dosya ismi uzantılarının taranmasına göre öncelik alacağına dikkat
      ediniz. Eğer gösterimler bu örnekteki resim dosyasında olduğu gibi
      farklı kaynak üstünlüklerine sahipseler, ortam türünün <code>qs</code>
      parametresi kullanılarak kaynak üstünlükleri belirtilebilir: </p>

    <div class="example"><p><code>
      URI: misal<br />
    <br />
      URI: misal.jpeg<br />
      Content-type: image/jpeg; <strong>qs=0.8</strong><br />
    <br />
      URI: misal.gif<br />
      Content-type: image/gif; <strong>qs=0.5</strong><br />
    <br />
      URI: misal.txt<br />
      Content-type: text/plain; <strong>qs=0.01</strong><br />
    </code></p></div>

    <p><code>qs</code> değerleri 0.000-1.000 değer aralığı içinde
      belirtilebilir. 0.000 <code>qs</code> değerine sahip gösterimin asla
      seçilmeyeceğine dikkat ediniz. Bir <code>qs</code> değeri belirtilmeyen
      gösterimlerin kaynak üstünlüğü 1.000 kabul edilir. <code>qs</code>
      parametresinin belirttiği değer istemcinin yeteneklerinden bağımsız
      olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
      Örneğin bir fotoğraf sözkonusu olduğunda bir JPEG dosyasının kaynak
      üstünlüğü bir ASCII çiziminkinden yüksek olacaktır. Diğer taraftan özgün
      resim bir ASCII çizim olduğu takdirde, ASCII çizim, bir JPEG gösterimine
      göre öncelikli olacaktır. Bu nedenle <code>qs</code> değeri özkaynağın
      doğasına bakarak belirlenir.</p>

    <p>Tanınan başlıkların tam listesini <a href="mod/mod_negotiation.html#typemaps">mod_negotation</a> modülünün
      belgesinde bulabilirsiniz.</p>
  

  <h3><a name="multiviews" id="multiviews">Çoklu Görünümler</a></h3>

    <p><code>MultiViews</code>, <code>httpd.conf</code> dosyasındaki veya
      (<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesinin
      değerine bağlı olarak) <code>.htaccess</code> dosyalarındaki <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> veya <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> bölümleri içinde
      <code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergeleri ile
      belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
      <code>Options All</code> yaparak <code>MultiViews</code> seçeneğini
      etkin kılamazsınız; seçeneği ismiyle açıkça belirtmelisiniz.</p>

    <p><code>MultiViews</code> şöyle etki eder: Sunucudan,
      <code>MultiViews</code> seçeneğinin etkin olduğu <code>/bir/dizin</code>
      dizininden <code>filanca</code> dosyası için bir istekte bulunulmuşsa
      fakat dizinde bu dosya yoksa, sunucu dizin içeriğini
      <code>filanca.*</code> dosyaları için tarar ve bu dosyalar için
      istemcinin ismiyle talep ettiği ortam türlerini ve kodlamaları
      kullanarak bir türeşlem dosyası uydurup bu gösterimler arasından
      istemcinin gereksinimlerine en uygun gösterimi seçer.</p>

    <p><code>MultiViews</code> ayrıca, sunucunun bir dizin içeriğini
      listelemeye çalıştığı durumda <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> yönergesi ile belirtilen dosya için de bir
      arama tertipleyebilir. Eğer yapılandırma dosyalarında</p>

    <div class="example"><p><code>DirectoryIndex index</code></p></div>

    <p>şeklinde bir atama varsa ve dizinde <code>index.html</code> ve
      <code>index.html3</code> dosyaları varsa sunucu bunlar arasından hakem
      sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
      <code>index.cgi</code> mevcutsa sunucu sadece bu dosyayı
      çalıştıracaktır.</p>

    <p>Okunan dizinde bulunan dosyalar arasında <code>mod_mime</code>
      tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
      başlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
      sonuç <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>
      yönergesiyle yapılan tanıma bağlı olur. Bu yönerge hangi diğer dosya
      uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaşımla
      ilintileneceğini belirler.</p>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="methods" id="methods">Uzlaşım Yöntemleri</a></h2>

    <p>Apache’nin, bir türeşlem dosyası veya dizin içindeki bir dosya
      sayesinde belli bir özkaynağın gösterim çeşitlerinin bir listesini elde
      ettikten sonra ‘en uygun’ gösterime karar vermek için kullanabileceği
      iki yöntem vardır. Apache’nin içerik uzlaşım özelliklerinin kullanımı
      sırasında uzlaşımın nasıl yerine getirileceği ile ilgili ayrıntıları
      bilmek aslında gerekli değildir. Bununla birlikte belgenin kalanında bu
      konu açıklanmaya çalışılmıştır.</p>

    <p>İki uzlaşım yöntemi vardır:</p>

    <ol>
      <li>Normal durumda <strong>sunucu yönetiminde Apache uzlaşım
        algoritması</strong> kullanılır. Bu algoritma aşağıda ayrıntılı olarak
        açıklanmıştır. Bu algoritma kullanıldığı zaman, Apache, en iyi sonuca
        ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’.
        Apache’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha
        ayrıntılı açıklanmıştır.</li>

      <li>İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın
        kullanılmasını isterse <strong>şeffaf içerik uzlaşımı</strong>
        kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi
        konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç
        tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır.
        Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da
        tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın
        çalıştırılmasını Apache’den isteyebilir.</li>
    </ol>

  <h3><a name="dimensions" id="dimensions">Uzlaşımın Boyutları</a></h3>

    <table>
      
      <tr valign="top">
        <th>Boyut</th>

        <th>Açıklama</th>
      </tr>

      <tr valign="top">
        <td>Ortam Türü</td>

        <td>Tarayıcı ortam türü tercihlerini <code>Accept</code> başlık alanı
          ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüğüne
          (<code>qs</code> parametresi) sahip olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Dil</td>

        <td>Tarayıcı dil tercihlerini <code>Accept-Language</code> başlık
          alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir. Gösterimler bir kaç dilde olabileceği gibi hiç bir dille
          ilişkilendirimemiş de olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Kodlama</td>

        <td>Tarayıcı kodlama tercihlerini <code>Accept-Encoding</code> başlık
          alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Karakter Kümesi</td>

        <td>Tarayıcı karakter kümesi tercihlerini <code>Accept-Charset</code>
          başlık alanı ile belirtir. Her öğenin kendine özgü bir üstünlük
          katsayısı olabilir. Gösterim çeşitleri karakter kümesini ortam
          türünün bir parametresi olarak belirtebilirler.</td>
      </tr>
    </table>
  

  <h3><a name="algorithm" id="algorithm">Apache Uzlaşım Algoritması</a></h3>

    <p>Apache, tarayıcıya döndürülecek en uygun gösterim çeşidini (varsa)
      seçmek için aşağıdaki algoritmayı kullanabilir. Bu algoritma pek de
      yapılandırılabilir değildir. Şöyle çalışır:</p>

    <ol>
      <li>Önce her uzlaşım boyutu için ilgili <em>Accept*</em> başlık alanına
        bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer
        boyutlardan bazıları için ilgili <em>Accept*</em> başlığı
        uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim
        çeşidi kalmasza 4. adıma atlanır.</li>

      <li>‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç
        sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan
        geçemeyen bir gösterim çeşidi elenir.  Sınamaların bir aşamasında tek
        bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur
        ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki
        sınamaya geçilir.

        <ol>
          <li><code>Accept</code> başlığındaki üstünlük katsayısı ile
            gösterimin ortam türünde belirtilen kaynak üstünlüğünün çarpımı en
            büyük olan gösterim çeşidi seçilir.</li>

          <li>En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir.
          </li>

          <li>En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için
            önce varsa <code>Accept-Language</code> başlığındaki dil
            sıralamasına bakılır, aksi takdirde <code>LanguagePriority</code>
            yönergesi ile atanmışsa oradaki dil sıralamasına bakılır.</li>

          <li>En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü
            sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri
            seçilir.</li>

          <li><code>Accept-Charset</code> başlık satırında belirtilene bakarak
            en uygun karakter kümesine sahip gösterim çeşitleri seçilir.
            Alenen dışlanmadıkça ISO-8859-1 kabul edilebilir karakter
            kümesidir. <code>text/*</code> ortam türüne sahip gösterim
            çeşitlerinden belli bir karakter kümesi ile ilişkilendirilmemiş
            olanların karakter kümesinin ISO-8859-1 olduğu varsayılır.</li>

          <li>ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim
            çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler
            seçilir.</li>

          <li>En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı
            tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri
            varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim
            çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar
            seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da
            sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.</li>

          <li>En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.</li>

          <li>Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem
            dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden
            okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine
            sahip gösterimdir.</li>
        </ol>
      </li>

      <li>Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu
        artık yanıt olarak döndürülebilir. HTTP yanıt başlığı
        <code>Vary</code>’ye uzlaşım boyutları atanır (tarayıcı ve
        arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar)
        ve algoritma sonlandırılır.</li>

      <li>Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri
        tarayıcı tarafından kabul edilebilir bulunmadığından dolayı).
        Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406
        durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’).
        Ayrıca HTTP <code>Vary</code> başlığında gösterim çeşitliliğinin
        boyutları belirtilir.</li>
    </ol>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="better" id="better">Üstünlük Değerleriyle Oynamak</a></h2>

    <p>Apache bazen yukarıdaki Apache uzlaşım algoritmasının kesin sonucunun
      beklenenden farklı olması için üstünlük değerleriyle oynar. Bunu tam ve
      doğru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
      etmek amacıyla yapar. Bazen günümüzün en tanınmış tarayıcıları bile çoğu
      durumda yanlış bir seçimle sonuçlanmayacaksa <code>Accept</code> başlık
      bilgilerini göndermemektedir. Eğer tarayıcı eksiksiz ve doğru bilgi
      gönderirse Apache bu değerlerle oynamayacaktır.</p>

  <h3><a name="wildcards" id="wildcards">Ortam Türleri ve Dosyaismi Kalıpları</a></h3>

    <p><code>Accept:</code> istek başlığı ortam türü tercihlerini yansıtır.
      Ayrıca, * bir dizge ile eşleşmek üzere "image/*" veya  "*/*" gibi ortam
      türü kalıpları da içerebilir. Dolayısıyla şöyle bir istek,</p>

    <div class="example"><p><code>Accept: image/*, */*</code></p></div>

    <p>diğer türler gibi "image/" ile başlayan ortam türlerini kabul
      edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak
      elde etmek amacıyla hep bu tür kalıplar gönderirler. Örnek:</p>

    <div class="example"><p><code>
      Accept: text/html, text/plain, image/gif, image/jpeg, */*
    </code></p></div>

    <p>Bunun amacı, açıkça listelenmiş türlerin tercih edildiğini, fakat
      farklı gösterimler varsa onların da kabul edilebileceğini belirtmektir.
      Üstünlük değerlerini doğrudan kullanarak tarayıcılar gerçekte ne
      istediklerini şuna benzer şekilde belirtebilirler:</p>

    <div class="example"><p><code>
      Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
    </code></p></div>

    <p>Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiştir,
      dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduğu
      varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düşük bir öncelik
      belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden
      hiçbirinin bulunmaması halinde diğer türler eşleşecektir.</p>

    <p>Eğer <code>Accept:</code> başlığı <em>hiçbir</em> <code>q</code>
      katsayısı içermiyorsa ve başlıkta "*/*" belirtilmişse, Apache istenen
      davranışı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
      "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
      tercihli olur). Eğer  <code>Accept:</code> alanındaki her ortam türü bir
      <code>q</code> katsayısı içeriyorsa bu özel değerler uygulanmaz.
      Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
      istekler umulduğu gibi işlem görecektir.</p>
  

  <h3><a name="exceptions" id="exceptions">Dil Uzlaşımında İstisnalar</a></h3>

    <p>Apache 2.0’dan itibaren, uzlaşım algoritmasına, bir eşleşme bulmak
      konusunda algoritma başarılı olamadığı takdirde hoş bir son çareye izin
      vermek için bazı istisnalar eklenmiştir.</p>

    <p>İstemci sunucudan bir sayfa istediğinde, sunucu, tarayıcı tarafından
      gönderilen <code>Accept-language</code> başlığıyla eşleşen tek bir sayfa
      bulamadığı takdirde istemciye ya “Kabul edilebilir bir gösterim çeşidi
      yok” ya da “Çok sayıda seçim belirtilmiş” yanıtını döndürür. Bu hata
      iletilerinden kaçınmak için bu gibi durumlarda Apache
      <code>Accept-language</code> başlığını yoksaymaya ayarlanabilir. Böylece
      istemcinin isteğine tam olarak uymasa da bir belge sağlanır. Bu hata
      iletilerinin birini veya her ikisini de geçersiz kılmak için <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code> yönergesi
      kullanılabilir ve sunucunun kararını <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> yönergesine
      dayanarak vermesi sağlanabilir.</p>

    <p>Sunucu ayrıca, tam bir eşleşme bulunmadığı zaman lehçelerle de eşleşme
      arayabilir. Örneğin, bir istemci Britanya İngilizcesi
      (<code>en-GB</code>) ile yazılmış belgeler için istekte bulunursa,
      sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
      <code>en</code> olarak imlenmesine izin vermez. (Bir okuyucu Britanya
      İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
      <code>Accept-Language</code> başlığında <code>en</code>  değil de
      <code>en-GB</code>’yi belirtmesinin hemen hemen daima bir yapılandırma
      hatasına yol açacağına dikkat ediniz. Maalesef, mevcut istemcilerin çoğu
      öntanımlı yapılandırmalarında buna benzer şeyler yapmaktadır.) Bununla
      birlikte, başka bir dille eşleşme mümkün değilse ve sunucu “Kabul
      edilebilir bir gösterim çeşidi yok” hatasını döndürmeye hazırsa veya
      <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> son
      çaresine ayarlanmışsa alt küme belirtimini yok sayacak ve
      <code>en</code> belge isteklerine <code>en-GB</code> belgelerle yanıt
      verecektir. Apache, lehçenin üyesi olduğu anadili, istemcinin kabul
      edilebilir diller listesine örtük olarak düşük bir üstünlük değeri ile
      ekler. Yalnız şuna dikkat edin, eğer istemci tercihini "en-GB; q=0.9,
      fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
      varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
      uyumluluğu sağlamak ve düzgün yapılandırılmış istemcilerle gerektiği
      gibi çalışabilmek için bu gereklidir.</p>

    <p>Gelişmiş tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
      sırasında, kullanıcının tercih ettiği dili saptamak için Apache 2.0.47
      sürümünden beri <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü
      <code>prefer-language</code> <a href="env.html">ortam değişkenini</a>
      tanımaktadır. Değişken mevcutsa ve uygun bir dil yaftası içeriyorsa
      <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> uygun gösterimi seçmeyi deneyecektir.
      Böyle bir gösterim çeşidi mevcut değilse normal uzlaşım işlemi
      uygulanacaktır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
      Header append Vary cookie
    </code></p></div>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="extensions" id="extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></h2>
  

  <p>Apache, şeffaf içerik uzlaşımı protokolünü (RFC 2295) şöyle genişletir:
    Sadece içerik kodlamasına özgü olmak üzere gösterim çeşidi listelerinde
    gösterim çeşitlerini imlemek için yeni bir <code>{encoding ..}</code>
    elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
    listedeki kodlanmış gösterim çeşitlerini tanımak ve onları
    <code>Accept-Encoding</code> başlık alanıyla ilgili olarak kabul
    edilebilir kodlamalara aday gösterim çeşitleri olarak kullanmak üzere
    genişletilmiştir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeşidi
    seçiminin öncesinde hesaplanmış üstünlük katsayısını virgülden sonra beş
    haneye yuvarlamaz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="naming" id="naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></h2>

    <p>Eğer dil uzlaşımı kullanıyorsanız ve birden fazla dosya ismi uzantısına
      sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz
      düştüğü farklı isimlendirme yaklaşımlarında bulunabilirsiniz (ayrıntılar
      için <a href="mod/mod_mime.html#multipleext">mod_mime</a> belgesine
      bakınız).</p>

    <p>Bir MIME türü uzantısına sahip bir dosyanın (<code>html</code> gibi),
      kodlanmış bir gösterimi (<code>gz</code> gibi) mevcut olabilir. Bu
      dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
      (<code>en</code> gibi) olabilir.</p>

    <p>Örnekler:</p>

    <ul>
      <li>misal.en.html</li>

      <li>misal.html.en</li>

      <li>misal.en.html.gz</li>
    </ul>

    <p>Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:</p>

    <table class="bordered">
      
      <tr>
        <th>Dosya ismi</th>

        <th>Geçerli Hiperbağ</th>

        <th>Geçersiz Hiperbağ</th>
      </tr>

      <tr>
        <td><em>misal.html.en</em></td>

        <td>misal<br />
         misal.html</td>

        <td>-</td>
      </tr>

      <tr>
        <td><em>misal.en.html</em></td>

        <td>misal</td>

        <td>misal.html</td>
      </tr>

      <tr>
        <td><em>misal.html.en.gz</em></td>

        <td>misal<br />
         misal.html</td>

        <td>misal.gz<br />
         misal.html.gz</td>
      </tr>

      <tr>
        <td><em>misal.en.html.gz</em></td>

        <td>misal</td>

        <td>misal.html<br />
         misal.html.gz<br />
         misal.gz</td>
      </tr>

      <tr>
        <td><em>misal.gz.html.en</em></td>

        <td>misal<br />
         misal.gz<br />
         misal.gz.html</td>

        <td>misal.html</td>
      </tr>

      <tr>
        <td><em>misal.html.gz.en</em></td>

        <td>misal<br />
         misal.html<br />
         misal.html.gz</td>

        <td>misal.gz</td>
      </tr>
    </table>

    <p>Yukarıdaki tabloya bakarak hiperbağlarda bir dosya ismini uzantısız
      olarak (<code>misal</code> gibi) kullanmanın daima mümkün olduğunu
      farkedeceksiniz. Böylece br belgenin asıl türünü gizleyebilir ve
      sonradan bir hiperbağ değişikliği yapmaksızın örneğin
      <code>html</code>’den <code>shtml</code> veya <code>cgi</code>’ye
      geçebilirsiniz.</p>

    <p>Hiperbağlarda MIME türlerini (<code>misal.html</code> gibi) kullanmaya
      devam etmek istiyorsanız dil uzantısı MIME türü uzantısının sağında
      kalmalıdır (<code>misal.html.en</code> gibi).</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="caching" id="caching">Arabellekler Hakkında</a></h2>

    <p>Bir arabellek, bir gösterimi istek URL’si ile ilişkilendirerek saklar.
      Böylece, sonradan aynı URL için bir istek yapıldığında kaydettiği
      gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaşılan türdeyse
      arabelleğe ilk istenen çeşit saklanmış olacağından isteğe yanlış
      gösterimle yanıt verilmiş olacaktır. Bunun olmaması için Apache, normal
      olarak içerik uzlaşımının sonucu olarak döndürülen tüm yanıtları
      HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. Apache
      ayrıca, uzlaşımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1
      protokolünü de destekler.</p>

    <p>HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
      istekler için, uzlaşıma konu yanıtların arabelleklenmesini mümkün kılmak
      üzere <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> yönergesi kullanılabilir. Bu yönerge
      argümansızdır ve sunucu genelinde veya sanal konakların
      yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
      isteklere bir etkisi yoktur.</p>

    <p>HTTP/1.1 istemciler için, Apache, yanıtın uzlaşım boyutlarını göstermek
      üzere bir <code>Vary</code> HTTP yanıt başlığı gönderir. Arabellekler bu
      bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
      arabelleğin uzlaşım boyutlarına bakmaksızın yerel kopyasını kullanmaya
      teşvik etmek için <code>force-no-vary</code> <a href="env.html#special">ortam değişkenini</a> etkin kılabilirsiniz.</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                              custom-error.html                                                                                   100644       0       0        22070 11256641267  11567  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Hata Yanıtlarının Kişiselleştirilmesi - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Hata Yanıtlarının Kişiselleştirilmesi</h1>


    <p>Apache, bazı sorunlara ve hatalara karşılık vereceği yanıtların
      yapılandırabilmesini mümkün kılan ek bir işlevselliğe sahiptir.</p>

    <p>Site yöneticisi tarafından kişiselleştirilebilen bu tür yanıtlar,
      sunucu belli hatalar veya sorunlarla karşılaştığında etkin kılınmak
      üzere tanımlanabilir.</p>

    <p>Bir betik bir hata nedeniyle bir "500 Server Error" yanıtının
      verilmesine sebep olursa bu yanıt yerine başka bir adrese
      yönlendirilerek (dahili veya harici) veya doğrudan daha dostça bir
      metin sunulabilir.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#behavior">Davranış</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#configuration">Yapılandırma</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#custom">Özel Hata Yanıtları ve Yönlendirme</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="behavior" id="behavior">Davranış</a></h2>
    

    <h3>Eski Davranış</h3>
      

      <p>NCSA httpd 1.3, çoğunlukla kullanıcıya anlamsız gelen ve sebebiyle
        kavramsal bir bağ kurulamayan günlük kayıtları üreten, can sıkıcı
        bazı hata/sorun yanıtları döndürürdü.</p>
    

    <h3>Yeni Davranış</h3>
      

      <p>Sunucudan NCSA kodlu iletiler yerine</p>

      <ul>
        <li>başka bir metin göstermesi,</li>

        <li>istemciyi başka bir yerel adrese yönlendirmesi veya</li>

        <li>istemciyi bir harici adrese yönlendirmesi</li>
      </ul>

      <p>istenebilir. Başka bir adrese yönlendirme, hata veya sorunu daha iyi
        açıklamakta kullanılabilecek bazı bilgilerin aktarılması şartıyla
        oldukça kullanışlı olabilir.</p>

      <p>Apache, buna olanak vermek için CGI benzeri yeni ortam değişkenleri
        tanımlamıştır:</p>

      <div class="example"><p><code>
        REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap,
            image/jpeg<br />
        REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05
            9000/712)<br />
        REDIRECT_PATH=.:/bin:/usr/local/bin:/etc<br />
        REDIRECT_QUERY_STRING=<br />
        REDIRECT_REMOTE_ADDR=121.345.78.123<br />
        REDIRECT_REMOTE_HOST=ooh.ahhh.dom<br />
        REDIRECT_SERVER_NAME=batti.balik.yan.gider.edu<br />
        REDIRECT_SERVER_PORT=80<br />
        REDIRECT_SERVER_SOFTWARE=Apache/0.8.15<br />
        REDIRECT_URL=/cgi-bin/hatalar.pl
      </code></p></div>

      <p><code>REDIRECT_</code> önekine dikkat edin.</p>

      <p>Yeni adrese (hedefin bir CGI betiği veya SSI sayfası olduğu
        kabulüyle) en azından <code>REDIRECT_URL</code> ve
        <code>REDIRECT_QUERY_STRING</code> değişkenleri aktarılır. Diğer
        değişkenler ise sadece hata veya sorunun öncesinde mevcut oldukları
        takdirde aktarılacaklardır. Eğer <em>harici</em> yönlendirmeyi
        <code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> yönergesi
        üzerinden yapıyorsanız bunlara <strong>None</strong> değeri
        atanacaktır. (Yönlendirme adresi <code>http:</code> ile başlıyorsa
        adres aynı sunucuya ait olsa bile bu bir harici yönlendirme olarak
        ele alınır.)</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="configuration" id="configuration">Yapılandırma</a></h2>
    

    <p><code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> yönergesinin
      <code>.htaccess</code> dosyalarında kullanılması sadece <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesine uygun bir değer
      atanmışsa mümkündür.</p>

    <p>Bazı örnekler:</p>

    <div class="example"><p><code>
      ErrorDocument 500 /cgi-bin/hata-kurtarma <br />
      ErrorDocument 500 "Pardon, galiba bizim betik hata verdi." <br />
      ErrorDocument 500 http://xxx/ <br />
      ErrorDocument 404 /ozuru_kabahatinden_buyuk/yok.html <br />
      ErrorDocument 401 /Uyeler/NASIL_uye_olunur.html
    </code></p></div>

    <p>Burada sözdizimi şöyledir:</p>

    <div class="example"><p><code>
      ErrorDocument &lt;3-rakamlı-kod&gt; &lt;eylem&gt;
    </code></p></div>

    <p><code><em>eylem</em></code> şunlardan biri olabilir:</p>

    <ul>
      <li>Gösterilecek metin. Metin tırnak (") içine alınmalıdır.</li>

      <li>Yönlendirmenin yapılacağı harici adres.</li>

      <li>Yönlendirmenin yapılacağı dahili adres.</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="custom" id="custom">Özel Hata Yanıtları ve Yönlendirme</a></h2>
    

    <p>Apache’nin yönlendirme ile ilgili davranışı bir CGI betiği veya SSI
      sayfası sözkonusu olduğunda bazı ek ortam değişkenleri ile
      yapılandırılabilir.</p>

    <h3>Eski Davranış</h3>
      

      <p>Yönlendirme yapılan betikte standart CGI değişkenleri kullanılırdı.
        Yönlendirmenin kaynağı ile ilgili bir belirtiye rastlanmazdı.</p>
    

    <h3>Yeni Davranış</h3>
      

      <p>Yönlendirme yapılan betikte kullanılmak üzere özel olarak
        tanımlanmış ortam değişkenleri vardır. Her değişkenin ismi
        <code>REDIRECT_</code> ile başlar. <code>REDIRECT_</code> ortam
        değişkenleri, yönlendirme öncesinde tanımlanmış CGI ortam
        değişkenlerinin isimlerinin başına <code>REDIRECT_</code> öneki
        getirilerek oluşturulur. Yani, <code>HTTP_USER_AGENT</code> değişkeni
        <code>REDIRECT_HTTP_USER_AGENT</code> haline gelir. Bunlara ek
        olarak, betiğe olayın izini sürmekte yardımcı olması için
        <code>REDIRECT_URL</code> ve <code>REDIRECT_STATUS</code>
        değişkenleri tanımlanmıştır. Erişim günlüğüne özgün adresle birlikte
        yönlendirme adresi de kaydedilir.</p>

      <p>Eğer <code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> yönergesi
        bir yerel CGI betiğine yönlendirme belirtiyorsa, hatanın kaynağı
        hakkında istemciye bilgi vermek amacıyla betiğin çıktısında bir
        "<code>Status:</code>" başlık alanına yer verilmesi önerilir.
        Örneğin, bir Perl betiği şunları içerebilirdi:</p>

      <div class="example"><p><code>
        ... <br />
        print  "Content-type: text/html; charset=UTF-8\n"; <br />
        printf "Status: %s durumu saptandı.\n", $ENV{"REDIRECT_STATUS"}; <br />
        ...
      </code></p></div>

      <p>Eğer betik,  <code>404&nbsp;Not&nbsp;Found</code> gibi, belli bir
        hata durumunu ele almaya adanmışsa duruma özel kod ve hata metni
        kullanılabilir.</p>

      <p>Eğer yanıt, (istemci taraflı yönlendirme yapılırken) bir
        <code>Location:</code> başlığı da içeriyorsa betiğin çıktıya uygun
        bir <code>Status:</code> başlığı (<code>302&nbsp;Found</code> gibi)
        eklemesinin <em>gerekli</em> oluşuna dikkat ediniz. Aksi takdirde,
        <code>Location:</code> başlığı etkisiz olabilir.</p>
    
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        developer/API.html                                                                                  100644       0       0       172304 11256641267  11552  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache 1.3 API notes - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Apache 1.3 API notes</h1>


    <div class="warning"><h3>Warning</h3>
      <p>This document has not been updated to take into account changes made
      in the 2.0 version of the Apache HTTP Server. Some of the information may
      still be relevant, but please use it with care.</p>
    </div>

    <p>These are some notes on the Apache API and the data structures you have
    to deal with, <em>etc.</em> They are not yet nearly complete, but hopefully,
    they will help you get your bearings. Keep in mind that the API is still
    subject to change as we gain experience with it. (See the TODO file for
    what <em>might</em> be coming). However, it will be easy to adapt modules
    to any changes that are made. (We have more modules to adapt than you
    do).</p>

    <p>A few notes on general pedagogical style here. In the interest of
    conciseness, all structure declarations here are incomplete -- the real
    ones have more slots that I'm not telling you about. For the most part,
    these are reserved to one component of the server core or another, and
    should be altered by modules with caution. However, in some cases, they
    really are things I just haven't gotten around to yet. Welcome to the
    bleeding edge.</p>

    <p>Finally, here's an outline, to give you some bare idea of what's coming
    up, and in what order:</p>

    <ul>
      <li>
        <a href="#basics">Basic concepts.</a> 

        <ul>
          <li><a href="#HMR">Handlers, Modules, and
          Requests</a></li>

          <li><a href="#moduletour">A brief tour of a
          module</a></li>
        </ul>
      </li>

      <li>
        <a href="#handlers">How handlers work</a> 

        <ul>
          <li><a href="#req_tour">A brief tour of the
          <code>request_rec</code></a></li>

          <li><a href="#req_orig">Where request_rec structures come
          from</a></li>

          <li><a href="#req_return">Handling requests, declining,
          and returning error codes</a></li>

          <li><a href="#resp_handlers">Special considerations for
          response handlers</a></li>

          <li><a href="#auth_handlers">Special considerations for
          authentication handlers</a></li>

          <li><a href="#log_handlers">Special considerations for
          logging handlers</a></li>
        </ul>
      </li>

      <li><a href="#pools">Resource allocation and resource
      pools</a></li>

      <li>
        <a href="#config">Configuration, commands and the like</a> 

        <ul>
          <li><a href="#per-dir">Per-directory configuration
          structures</a></li>

          <li><a href="#commands">Command handling</a></li>

          <li><a href="#servconf">Side notes --- per-server
          configuration, virtual servers, <em>etc</em>.</a></li>
        </ul>
      </li>
    </ul>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#basics">Basic concepts</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#handlers">How handlers work</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#pools">Resource allocation and resource pools</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#config">Configuration, commands and the like</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="basics" id="basics">Basic concepts</a></h2>
    <p>We begin with an overview of the basic concepts behind the API, and how
    they are manifested in the code.</p>

    <h3><a name="HMR" id="HMR">Handlers, Modules, and Requests</a></h3>
      <p>Apache breaks down request handling into a series of steps, more or
      less the same way the Netscape server API does (although this API has a
      few more stages than NetSite does, as hooks for stuff I thought might be
      useful in the future). These are:</p>

      <ul>
      <li>URI -&gt; Filename translation</li>
      <li>Auth ID checking [is the user who they say they are?]</li>
      <li>Auth access checking [is the user authorized <em>here</em>?]</li>
      <li>Access checking other than auth</li>
      <li>Determining MIME type of the object requested</li>
      <li>`Fixups' -- there aren't any of these yet, but the phase is intended
      as a hook for possible extensions like <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code>, which don't really fit well elsewhere.</li>
      <li>Actually sending a response back to the client.</li>
      <li>Logging the request</li>
      </ul>

      <p>These phases are handled by looking at each of a succession of
      <em>modules</em>, looking to see if each of them has a handler for the
      phase, and attempting invoking it if so. The handler can typically do one
      of three things:</p>

      <ul>
      <li><em>Handle</em> the request, and indicate that it has done so by
      returning the magic constant <code>OK</code>.</li>

      <li><em>Decline</em> to handle the request, by returning the magic integer
      constant <code>DECLINED</code>. In this case, the server behaves in all
      respects as if the handler simply hadn't been there.</li>

      <li>Signal an error, by returning one of the HTTP error codes. This
      terminates normal handling of the request, although an ErrorDocument may
      be invoked to try to mop up, and it will be logged in any case.</li>
      </ul>

      <p>Most phases are terminated by the first module that handles them;
      however, for logging, `fixups', and non-access authentication checking,
      all handlers always run (barring an error). Also, the response phase is
      unique in that modules may declare multiple handlers for it, via a
      dispatch table keyed on the MIME type of the requested object. Modules may
      declare a response-phase handler which can handle <em>any</em> request,
      by giving it the key <code>*/*</code> (<em>i.e.</em>, a wildcard MIME type
      specification). However, wildcard handlers are only invoked if the server
      has already tried and failed to find a more specific response handler for
      the MIME type of the requested object (either none existed, or they all
      declined).</p>

      <p>The handlers themselves are functions of one argument (a
      <code>request_rec</code> structure. vide infra), which returns an integer,
      as above.</p>
    

    <h3><a name="moduletour" id="moduletour">A brief tour of a module</a></h3>
      <p>At this point, we need to explain the structure of a module. Our
      candidate will be one of the messier ones, the CGI module -- this handles
      both CGI scripts and the <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> config file command. It's actually a great deal
      more complicated than most modules, but if we're going to have only one
      example, it might as well be the one with its fingers in every place.</p>

      <p>Let's begin with handlers. In order to handle the CGI scripts, the
      module declares a response handler for them. Because of <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>, it also has handlers for the
      name translation phase (to recognize <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>ed URIs), the type-checking phase (any
      <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>ed request is typed
      as a CGI script).</p>

      <p>The module needs to maintain some per (virtual) server information,
      namely, the <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>es in
      effect; the module structure therefore contains pointers to a functions
      which builds these structures, and to another which combines two of them
      (in case the main server and a virtual server both have <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>es declared).</p>

      <p>Finally, this module contains code to handle the <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> command itself. This particular
      module only declares one command, but there could be more, so modules have
      <em>command tables</em> which declare their commands, and describe where
      they are permitted, and how they are to be invoked.</p>

      <p>A final note on the declared types of the arguments of some of these
      commands: a <code>pool</code> is a pointer to a <em>resource pool</em>
      structure; these are used by the server to keep track of the memory which
      has been allocated, files opened, <em>etc.</em>, either to service a
      particular request, or to handle the process of configuring itself. That
      way, when the request is over (or, for the configuration pool, when the
      server is restarting), the memory can be freed, and the files closed,
      <em>en masse</em>, without anyone having to write explicit code to track
      them all down and dispose of them. Also, a <code>cmd_parms</code>
      structure contains various information about the config file being read,
      and other status information, which is sometimes of use to the function
      which processes a config-file command (such as <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>). With no further ado, the
      module itself:</p>

      <div class="example"><p><code>
        /* Declarations of handlers. */<br />
        <br />
        int translate_scriptalias (request_rec *);<br />
        int type_scriptalias (request_rec *);<br />
        int cgi_handler (request_rec *);<br />
        <br />
        /* Subsidiary dispatch table for response-phase <br />
        &nbsp;* handlers, by MIME type */<br />
        <br />
        handler_rec cgi_handlers[] = {<br />
        <span class="indent">
          { "application/x-httpd-cgi", cgi_handler },<br />
          { NULL }<br />
        </span>
        };<br />
        <br />
        /* Declarations of routines to manipulate the <br />
        &nbsp;* module's configuration info.  Note that these are<br />
        &nbsp;* returned, and passed in, as void *'s; the server<br />
        &nbsp;* core keeps track of them, but it doesn't, and can't,<br />
        &nbsp;* know their internal structure.<br />
        &nbsp;*/<br />
        <br />
        void *make_cgi_server_config (pool *);<br />
        void *merge_cgi_server_config (pool *, void *, void *);<br />
        <br />
        /* Declarations of routines to handle config-file commands */<br />
        <br />
        extern char *script_alias(cmd_parms *, void *per_dir_config, char *fake,
                                  char *real);<br />
        <br />
        command_rec cgi_cmds[] = {<br />
        <span class="indent">
          { "ScriptAlias", script_alias, NULL, RSRC_CONF, TAKE2,<br />
          <span class="indent">"a fakename and a realname"},<br /></span>
          { NULL }<br />
        </span>
        };<br />
        <br />
        module cgi_module = {
</code></p><pre>  STANDARD_MODULE_STUFF,
  NULL,                     /* initializer */
  NULL,                     /* dir config creator */
  NULL,                     /* dir merger */
  make_cgi_server_config,   /* server config */
  merge_cgi_server_config,  /* merge server config */
  cgi_cmds,                 /* command table */
  cgi_handlers,             /* handlers */
  translate_scriptalias,    /* filename translation */
  NULL,                     /* check_user_id */
  NULL,                     /* check auth */
  NULL,                     /* check access */
  type_scriptalias,         /* type_checker */
  NULL,                     /* fixups */
  NULL,                     /* logger */
  NULL                      /* header parser */
};</pre></div>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="handlers" id="handlers">How handlers work</a></h2>
    <p>The sole argument to handlers is a <code>request_rec</code> structure.
    This structure describes a particular request which has been made to the
    server, on behalf of a client. In most cases, each connection to the
    client generates only one <code>request_rec</code> structure.</p>

    <h3><a name="req_tour" id="req_tour">A brief tour of the request_rec</a></h3>
      <p>The <code>request_rec</code> contains pointers to a resource pool
      which will be cleared when the server is finished handling the request;
      to structures containing per-server and per-connection information, and
      most importantly, information on the request itself.</p>

      <p>The most important such information is a small set of character strings
      describing attributes of the object being requested, including its URI,
      filename, content-type and content-encoding (these being filled in by the
      translation and type-check handlers which handle the request,
      respectively).</p>

      <p>Other commonly used data items are tables giving the MIME headers on
      the client's original request, MIME headers to be sent back with the
      response (which modules can add to at will), and environment variables for
      any subprocesses which are spawned off in the course of servicing the
      request. These tables are manipulated using the <code>ap_table_get</code>
      and <code>ap_table_set</code> routines.</p>

      <div class="note">
        <p>Note that the <code>Content-type</code> header value <em>cannot</em>
        be set by module content-handlers using the <code>ap_table_*()</code>
        routines. Rather, it is set by pointing the <code>content_type</code>
        field in the <code>request_rec</code> structure to an appropriate
        string. <em>e.g.</em>,</p>
        <div class="example"><p><code>
          r-&gt;content_type = "text/html";
        </code></p></div>
      </div>

      <p>Finally, there are pointers to two data structures which, in turn,
      point to per-module configuration structures. Specifically, these hold
      pointers to the data structures which the module has built to describe
      the way it has been configured to operate in a given directory (via
      <code>.htaccess</code> files or <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> sections), for private data it has built in the
      course of servicing the request (so modules' handlers for one phase can
      pass `notes' to their handlers for other phases). There is another such
      configuration vector in the <code>server_rec</code> data structure pointed
      to by the <code>request_rec</code>, which contains per (virtual) server
      configuration data.</p>

      <p>Here is an abridged declaration, giving the fields most commonly
      used:</p>

      <div class="example"><p><code>
        struct request_rec {<br />
        <br />
        pool *pool;<br />
        conn_rec *connection;<br />
        server_rec *server;<br />
        <br />
        /* What object is being requested */<br />
        <br />
        char *uri;<br />
        char *filename;<br />
        char *path_info;
</code></p><pre>char *args;           /* QUERY_ARGS, if any */
struct stat finfo;    /* Set by server core;
                       * st_mode set to zero if no such file */</pre><p><code>
        char *content_type;<br />
        char *content_encoding;<br />
        <br />
        /* MIME header environments, in and out. Also, <br />
        &nbsp;* an array containing environment variables to<br />
        &nbsp;* be passed to subprocesses, so people can write<br />
        &nbsp;* modules to add to that environment.<br />
        &nbsp;*<br />
        &nbsp;* The difference between headers_out and <br />
        &nbsp;* err_headers_out is that the latter are printed <br />
        &nbsp;* even on error, and persist across internal<br />
        &nbsp;* redirects (so the headers printed for <br />
        &nbsp;* <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> handlers will have
         them).<br />
        &nbsp;*/<br />
         <br />
        table *headers_in;<br />
        table *headers_out;<br />
        table *err_headers_out;<br />
        table *subprocess_env;<br />
        <br />
        /* Info about the request itself... */<br />
        <br />
</code></p><pre>int header_only;     /* HEAD request, as opposed to GET */
char *protocol;      /* Protocol, as given to us, or HTTP/0.9 */
char *method;        /* GET, HEAD, POST, <em>etc.</em> */
int method_number;   /* M_GET, M_POST, <em>etc.</em> */

</pre><p><code>
        /* Info for logging */<br />
        <br />
        char *the_request;<br />
        int bytes_sent;<br />
        <br />
        /* A flag which modules can set, to indicate that<br />
        &nbsp;* the data being returned is volatile, and clients<br />
        &nbsp;* should be told not to cache it.<br />
        &nbsp;*/<br />
        <br />
        int no_cache;<br />
        <br />
        /* Various other config info which may change<br />
        &nbsp;* with .htaccess files<br />
        &nbsp;* These are config vectors, with one void*<br />
        &nbsp;* pointer for each module (the thing pointed<br />
        &nbsp;* to being the module's business).<br />
        &nbsp;*/<br />
        <br />
</code></p><pre>void *per_dir_config;   /* Options set in config files, <em>etc.</em> */
void *request_config;   /* Notes on *this* request */</pre><p><code>
        <br />
        };
      </code></p></div>
    

    <h3><a name="req_orig" id="req_orig">Where request_rec structures come from</a></h3>
      <p>Most <code>request_rec</code> structures are built by reading an HTTP
      request from a client, and filling in the fields. However, there are a
      few exceptions:</p>

      <ul>
      <li>If the request is to an imagemap, a type map (<em>i.e.</em>, a
      <code>*.var</code> file), or a CGI script which returned a local
      `Location:', then the resource which the user requested is going to be
      ultimately located by some URI other than what the client originally
      supplied. In this case, the server does an <em>internal redirect</em>,
      constructing a new <code>request_rec</code> for the new URI, and
      processing it almost exactly as if the client had requested the new URI
      directly.</li>

      <li>If some handler signaled an error, and an <code>ErrorDocument</code>
      is in scope, the same internal redirect machinery comes into play.</li>

      <li><p>Finally, a handler occasionally needs to investigate `what would
      happen if' some other request were run. For instance, the directory
      indexing module needs to know what MIME type would be assigned to a
      request for each directory entry, in order to figure out what icon to
      use.</p>

      <p>Such handlers can construct a <em>sub-request</em>, using the
      functions <code>ap_sub_req_lookup_file</code>,
      <code>ap_sub_req_lookup_uri</code>, and <code>ap_sub_req_method_uri</code>;
      these construct a new <code>request_rec</code> structure and processes it
      as you would expect, up to but not including the point of actually sending
      a response. (These functions skip over the access checks if the
      sub-request is for a file in the same directory as the original
      request).</p>

      <p>(Server-side includes work by building sub-requests and then actually
      invoking the response handler for them, via the function
      <code>ap_run_sub_req</code>).</p>
      </li>
      </ul>
    

    <h3><a name="req_return" id="req_return">Handling requests, declining, and returning
    error codes</a></h3>
      <p>As discussed above, each handler, when invoked to handle a particular
      <code>request_rec</code>, has to return an <code>int</code> to indicate
      what happened. That can either be</p>

      <ul>
      <li><code>OK</code> -- the request was handled successfully. This may or
      may not terminate the phase.</li>

      <li><code>DECLINED</code> -- no erroneous condition exists, but the module
      declines to handle the phase; the server tries to find another.</li>

      <li>an HTTP error code, which aborts handling of the request.</li>
      </ul>

      <p>Note that if the error code returned is <code>REDIRECT</code>, then
      the module should put a <code>Location</code> in the request's
      <code>headers_out</code>, to indicate where the client should be
      redirected <em>to</em>.</p>
    

    <h3><a name="resp_handlers" id="resp_handlers">Special considerations for response
    handlers</a></h3>
      <p>Handlers for most phases do their work by simply setting a few fields
      in the <code>request_rec</code> structure (or, in the case of access
      checkers, simply by returning the correct error code). However, response
      handlers have to actually send a request back to the client.</p>

      <p>They should begin by sending an HTTP response header, using the
      function <code>ap_send_http_header</code>. (You don't have to do anything
      special to skip sending the header for HTTP/0.9 requests; the function
      figures out on its own that it shouldn't do anything). If the request is
      marked <code>header_only</code>, that's all they should do; they should
      return after that, without attempting any further output.</p>

      <p>Otherwise, they should produce a request body which responds to the
      client as appropriate. The primitives for this are <code>ap_rputc</code>
      and <code>ap_rprintf</code>, for internally generated output, and
      <code>ap_send_fd</code>, to copy the contents of some <code>FILE *</code>
      straight to the client.</p>

      <p>At this point, you should more or less understand the following piece
      of code, which is the handler which handles <code>GET</code> requests
      which have no more specific handler; it also shows how conditional
      <code>GET</code>s can be handled, if it's desirable to do so in a
      particular response handler -- <code>ap_set_last_modified</code> checks
      against the <code>If-modified-since</code> value supplied by the client,
      if any, and returns an appropriate code (which will, if nonzero, be
      USE_LOCAL_COPY). No similar considerations apply for
      <code>ap_set_content_length</code>, but it returns an error code for
      symmetry.</p>

      <div class="example"><p><code>
        int default_handler (request_rec *r)<br />
        {<br />
        <span class="indent">
          int errstatus;<br />
          FILE *f;<br />
          <br />
          if (r-&gt;method_number != M_GET) return DECLINED;<br />
          if (r-&gt;finfo.st_mode == 0) return NOT_FOUND;<br />
          <br />
          if ((errstatus = ap_set_content_length (r, r-&gt;finfo.st_size))<br />
          &nbsp;&nbsp;&nbsp;&nbsp;||
             (errstatus = ap_set_last_modified (r, r-&gt;finfo.st_mtime)))<br />
          return errstatus;<br />
          <br />
          f = fopen (r-&gt;filename, "r");<br />
          <br />
          if (f == NULL) {<br />
          <span class="indent">
            log_reason("file permissions deny server access", r-&gt;filename, r);<br />
            return FORBIDDEN;<br />
          </span>
          }<br />
          <br />
          register_timeout ("send", r);<br />
          ap_send_http_header (r);<br />
          <br />
          if (!r-&gt;header_only) send_fd (f, r);<br />
          ap_pfclose (r-&gt;pool, f);<br />
          return OK;<br />
        </span>
        }
      </code></p></div>

      <p>Finally, if all of this is too much of a challenge, there are a few
      ways out of it. First off, as shown above, a response handler which has
      not yet produced any output can simply return an error code, in which
      case the server will automatically produce an error response. Secondly,
      it can punt to some other handler by invoking
      <code>ap_internal_redirect</code>, which is how the internal redirection
      machinery discussed above is invoked. A response handler which has
      internally redirected should always return <code>OK</code>.</p>

      <p>(Invoking <code>ap_internal_redirect</code> from handlers which are
      <em>not</em> response handlers will lead to serious confusion).</p>
    

    <h3><a name="auth_handlers" id="auth_handlers">Special considerations for authentication
    handlers</a></h3>
      <p>Stuff that should be discussed here in detail:</p>

      <ul>
      <li>Authentication-phase handlers not invoked unless auth is
      configured for the directory.</li>

      <li>Common auth configuration stored in the core per-dir
      configuration; it has accessors <code>ap_auth_type</code>,
      <code>ap_auth_name</code>, and <code>ap_requires</code>.</li>

      <li>Common routines, to handle the protocol end of things, at
      least for HTTP basic authentication
      (<code>ap_get_basic_auth_pw</code>, which sets the
      <code>connection-&gt;user</code> structure field
      automatically, and <code>ap_note_basic_auth_failure</code>,
      which arranges for the proper <code>WWW-Authenticate:</code>
      header to be sent back).</li>
      </ul>
    

    <h3><a name="log_handlers" id="log_handlers">Special considerations for logging
    handlers</a></h3>
      <p>When a request has internally redirected, there is the question of
      what to log. Apache handles this by bundling the entire chain of redirects
      into a list of <code>request_rec</code> structures which are threaded
      through the <code>r-&gt;prev</code> and <code>r-&gt;next</code> pointers.
      The <code>request_rec</code> which is passed to the logging handlers in
      such cases is the one which was originally built for the initial request
      from the client; note that the <code>bytes_sent</code> field will only be
      correct in the last request in the chain (the one for which a response was
      actually sent).</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="pools" id="pools">Resource allocation and resource pools</a></h2>
    <p>One of the problems of writing and designing a server-pool server is
    that of preventing leakage, that is, allocating resources (memory, open
    files, <em>etc.</em>), without subsequently releasing them. The resource
    pool machinery is designed to make it easy to prevent this from happening,
    by allowing resource to be allocated in such a way that they are
    <em>automatically</em> released when the server is done with them.</p>

    <p>The way this works is as follows: the memory which is allocated, file
    opened, <em>etc.</em>, to deal with a particular request are tied to a
    <em>resource pool</em> which is allocated for the request. The pool is a
    data structure which itself tracks the resources in question.</p>

    <p>When the request has been processed, the pool is <em>cleared</em>. At
    that point, all the memory associated with it is released for reuse, all
    files associated with it are closed, and any other clean-up functions which
    are associated with the pool are run. When this is over, we can be confident
    that all the resource tied to the pool have been released, and that none of
    them have leaked.</p>

    <p>Server restarts, and allocation of memory and resources for per-server
    configuration, are handled in a similar way. There is a <em>configuration
    pool</em>, which keeps track of resources which were allocated while reading
    the server configuration files, and handling the commands therein (for
    instance, the memory that was allocated for per-server module configuration,
    log files and other files that were opened, and so forth). When the server
    restarts, and has to reread the configuration files, the configuration pool
    is cleared, and so the memory and file descriptors which were taken up by
    reading them the last time are made available for reuse.</p>

    <p>It should be noted that use of the pool machinery isn't generally
    obligatory, except for situations like logging handlers, where you really
    need to register cleanups to make sure that the log file gets closed when
    the server restarts (this is most easily done by using the function <code><a href="#pool-files">ap_pfopen</a></code>, which also arranges for the
    underlying file descriptor to be closed before any child processes, such as
    for CGI scripts, are <code>exec</code>ed), or in case you are using the
    timeout machinery (which isn't yet even documented here). However, there are
    two benefits to using it: resources allocated to a pool never leak (even if
    you allocate a scratch string, and just forget about it); also, for memory
    allocation, <code>ap_palloc</code> is generally faster than
    <code>malloc</code>.</p>

    <p>We begin here by describing how memory is allocated to pools, and then
    discuss how other resources are tracked by the resource pool machinery.</p>

    <h3>Allocation of memory in pools</h3>
      <p>Memory is allocated to pools by calling the function
      <code>ap_palloc</code>, which takes two arguments, one being a pointer to
      a resource pool structure, and the other being the amount of memory to
      allocate (in <code>char</code>s). Within handlers for handling requests,
      the most common way of getting a resource pool structure is by looking at
      the <code>pool</code> slot of the relevant <code>request_rec</code>; hence
      the repeated appearance of the following idiom in module code:</p>

      <div class="example"><p><code>
        int my_handler(request_rec *r)<br />
        {<br />
        <span class="indent">
          struct my_structure *foo;<br />
          ...<br />
          <br />
          foo = (foo *)ap_palloc (r-&gt;pool, sizeof(my_structure));<br />
        </span>
        }
      </code></p></div>

      <p>Note that <em>there is no <code>ap_pfree</code></em> --
      <code>ap_palloc</code>ed memory is freed only when the associated resource
      pool is cleared. This means that <code>ap_palloc</code> does not have to
      do as much accounting as <code>malloc()</code>; all it does in the typical
      case is to round up the size, bump a pointer, and do a range check.</p>

      <p>(It also raises the possibility that heavy use of
      <code>ap_palloc</code> could cause a server process to grow excessively
      large. There are two ways to deal with this, which are dealt with below;
      briefly, you can use <code>malloc</code>, and try to be sure that all of
      the memory gets explicitly <code>free</code>d, or you can allocate a
      sub-pool of the main pool, allocate your memory in the sub-pool, and clear
      it out periodically. The latter technique is discussed in the section
      on sub-pools below, and is used in the directory-indexing code, in order
      to avoid excessive storage allocation when listing directories with
      thousands of files).</p>
    

    <h3>Allocating initialized memory</h3>
      <p>There are functions which allocate initialized memory, and are
      frequently useful. The function <code>ap_pcalloc</code> has the same
      interface as <code>ap_palloc</code>, but clears out the memory it
      allocates before it returns it. The function <code>ap_pstrdup</code>
      takes a resource pool and a <code>char *</code> as arguments, and
      allocates memory for a copy of the string the pointer points to, returning
      a pointer to the copy. Finally <code>ap_pstrcat</code> is a varargs-style
      function, which takes a pointer to a resource pool, and at least two
      <code>char *</code> arguments, the last of which must be
      <code>NULL</code>. It allocates enough memory to fit copies of each of
      the strings, as a unit; for instance:</p>

      <div class="example"><p><code>
        ap_pstrcat (r-&gt;pool, "foo", "/", "bar", NULL);
      </code></p></div>

      <p>returns a pointer to 8 bytes worth of memory, initialized to
      <code>"foo/bar"</code>.</p>
    

    <h3><a name="pools-used" id="pools-used">Commonly-used pools in the Apache Web
    server</a></h3>
      <p>A pool is really defined by its lifetime more than anything else.
      There are some static pools in http_main which are passed to various
      non-http_main functions as arguments at opportune times. Here they
      are:</p>

      <dl>
      <dt><code>permanent_pool</code></dt>
      <dd>never passed to anything else, this is the ancestor of all pools</dd>

      <dt><code>pconf</code></dt>
      <dd>
        <ul>
          <li>subpool of permanent_pool</li>

          <li>created at the beginning of a config "cycle"; exists
          until the server is terminated or restarts; passed to all
          config-time routines, either via cmd-&gt;pool, or as the
          "pool *p" argument on those which don't take pools</li>

          <li>passed to the module init() functions</li>
        </ul>
      </dd>

      <dt><code>ptemp</code></dt>
      <dd>
        <ul>
          <li>sorry I lie, this pool isn't called this currently in
          1.3, I renamed it this in my pthreads development. I'm
          referring to the use of ptrans in the parent... contrast
          this with the later definition of ptrans in the
          child.</li>

          <li>subpool of permanent_pool</li>

          <li>created at the beginning of a config "cycle"; exists
          until the end of config parsing; passed to config-time
          routines <em>via</em> cmd-&gt;temp_pool. Somewhat of a
          "bastard child" because it isn't available everywhere.
          Used for temporary scratch space which may be needed by
          some config routines but which is deleted at the end of
          config.</li>
        </ul>
      </dd>

      <dt><code>pchild</code></dt>
      <dd>
        <ul>
          <li>subpool of permanent_pool</li>

          <li>created when a child is spawned (or a thread is
          created); lives until that child (thread) is
          destroyed</li>

          <li>passed to the module child_init functions</li>

          <li>destruction happens right after the child_exit
          functions are called... (which may explain why I think
          child_exit is redundant and unneeded)</li>
        </ul>
      </dd>

      <dt><code>ptrans</code></dt>
      <dd>
        <ul>
          <li>should be a subpool of pchild, but currently is a
          subpool of permanent_pool, see above</li>

          <li>cleared by the child before going into the accept()
          loop to receive a connection</li>

          <li>used as connection-&gt;pool</li>
        </ul>
      </dd>

      <dt><code>r-&gt;pool</code></dt>
      <dd>
        <ul>
          <li>for the main request this is a subpool of
          connection-&gt;pool; for subrequests it is a subpool of
          the parent request's pool.</li>

          <li>exists until the end of the request (<em>i.e.</em>,
          ap_destroy_sub_req, or in child_main after
          process_request has finished)</li>

          <li>note that r itself is allocated from r-&gt;pool;
          <em>i.e.</em>, r-&gt;pool is first created and then r is
          the first thing palloc()d from it</li>
        </ul>
      </dd>
      </dl>

      <p>For almost everything folks do, <code>r-&gt;pool</code> is the pool to
      use. But you can see how other lifetimes, such as pchild, are useful to
      some modules... such as modules that need to open a database connection
      once per child, and wish to clean it up when the child dies.</p>

      <p>You can also see how some bugs have manifested themself, such as
      setting <code>connection-&gt;user</code> to a value from
      <code>r-&gt;pool</code> -- in this case connection exists for the
      lifetime of <code>ptrans</code>, which is longer than
      <code>r-&gt;pool</code> (especially if <code>r-&gt;pool</code> is a
      subrequest!). So the correct thing to do is to allocate from
      <code>connection-&gt;pool</code>.</p>

      <p>And there was another interesting bug in <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
      / <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>. You'll see in those that they do this test
      to decide if they should use <code>r-&gt;pool</code> or
      <code>r-&gt;main-&gt;pool</code>. In this case the resource that they are
      registering for cleanup is a child process. If it were registered in
      <code>r-&gt;pool</code>, then the code would <code>wait()</code> for the
      child when the subrequest finishes. With <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> this
      could be any old <code>#include</code>, and the delay can be up to 3
      seconds... and happened quite frequently. Instead the subprocess is
      registered in <code>r-&gt;main-&gt;pool</code> which causes it to be
      cleaned up when the entire request is done -- <em>i.e.</em>, after the
      output has been sent to the client and logging has happened.</p>
    

    <h3><a name="pool-files" id="pool-files">Tracking open files, etc.</a></h3>
      <p>As indicated above, resource pools are also used to track other sorts
      of resources besides memory. The most common are open files. The routine
      which is typically used for this is <code>ap_pfopen</code>, which takes a
      resource pool and two strings as arguments; the strings are the same as
      the typical arguments to <code>fopen</code>, <em>e.g.</em>,</p>

      <div class="example"><p><code>
        ...<br />
        FILE *f = ap_pfopen (r-&gt;pool, r-&gt;filename, "r");<br />
        <br />
        if (f == NULL) { ... } else { ... }<br />
      </code></p></div>

      <p>There is also a <code>ap_popenf</code> routine, which parallels the
      lower-level <code>open</code> system call. Both of these routines arrange
      for the file to be closed when the resource pool in question is
      cleared.</p>

      <p>Unlike the case for memory, there <em>are</em> functions to close files
      allocated with <code>ap_pfopen</code>, and <code>ap_popenf</code>, namely
      <code>ap_pfclose</code> and <code>ap_pclosef</code>. (This is because, on
      many systems, the number of files which a single process can have open is
      quite limited). It is important to use these functions to close files
      allocated with <code>ap_pfopen</code> and <code>ap_popenf</code>, since to
      do otherwise could cause fatal errors on systems such as Linux, which
      react badly if the same <code>FILE*</code> is closed more than once.</p>

      <p>(Using the <code>close</code> functions is not mandatory, since the
      file will eventually be closed regardless, but you should consider it in
      cases where your module is opening, or could open, a lot of files).</p>
    

    <h3>Other sorts of resources -- cleanup functions</h3>
      <p>More text goes here. Describe the cleanup primitives in terms of
      which the file stuff is implemented; also, <code>spawn_process</code>.</p>

      <p>Pool cleanups live until <code>clear_pool()</code> is called:
      <code>clear_pool(a)</code> recursively calls <code>destroy_pool()</code>
      on all subpools of <code>a</code>; then calls all the cleanups for
      <code>a</code>; then releases all the memory for <code>a</code>.
      <code>destroy_pool(a)</code> calls <code>clear_pool(a)</code> and then
      releases the pool structure itself. <em>i.e.</em>,
      <code>clear_pool(a)</code> doesn't delete <code>a</code>, it just frees
      up all the resources and you can start using it again immediately.</p>
    

    <h3>Fine control -- creating and dealing with sub-pools, with
    a note on sub-requests</h3>
      <p>On rare occasions, too-free use of <code>ap_palloc()</code> and the
      associated primitives may result in undesirably profligate resource
      allocation. You can deal with such a case by creating a <em>sub-pool</em>,
      allocating within the sub-pool rather than the main pool, and clearing or
      destroying the sub-pool, which releases the resources which were
      associated with it. (This really <em>is</em> a rare situation; the only
      case in which it comes up in the standard module set is in case of listing
      directories, and then only with <em>very</em> large directories.
      Unnecessary use of the primitives discussed here can hair up your code
      quite a bit, with very little gain).</p>

      <p>The primitive for creating a sub-pool is <code>ap_make_sub_pool</code>,
      which takes another pool (the parent pool) as an argument. When the main
      pool is cleared, the sub-pool will be destroyed. The sub-pool may also be
      cleared or destroyed at any time, by calling the functions
      <code>ap_clear_pool</code> and <code>ap_destroy_pool</code>, respectively.
      (The difference is that <code>ap_clear_pool</code> frees resources
      associated with the pool, while <code>ap_destroy_pool</code> also
      deallocates the pool itself. In the former case, you can allocate new
      resources within the pool, and clear it again, and so forth; in the
      latter case, it is simply gone).</p>

      <p>One final note -- sub-requests have their own resource pools, which are
      sub-pools of the resource pool for the main request. The polite way to
      reclaim the resources associated with a sub request which you have
      allocated (using the <code>ap_sub_req_...</code> functions) is
      <code>ap_destroy_sub_req</code>, which frees the resource pool. Before
      calling this function, be sure to copy anything that you care about which
      might be allocated in the sub-request's resource pool into someplace a
      little less volatile (for instance, the filename in its
      <code>request_rec</code> structure).</p>

      <p>(Again, under most circumstances, you shouldn't feel obliged to call
      this function; only 2K of memory or so are allocated for a typical sub
      request, and it will be freed anyway when the main request pool is
      cleared. It is only when you are allocating many, many sub-requests for a
      single main request that you should seriously consider the
      <code>ap_destroy_...</code> functions).</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="config" id="config">Configuration, commands and the like</a></h2>
    <p>One of the design goals for this server was to maintain external
    compatibility with the NCSA 1.3 server --- that is, to read the same
    configuration files, to process all the directives therein correctly, and
    in general to be a drop-in replacement for NCSA. On the other hand, another
    design goal was to move as much of the server's functionality into modules
    which have as little as possible to do with the monolithic server core. The
    only way to reconcile these goals is to move the handling of most commands
    from the central server into the modules.</p>

    <p>However, just giving the modules command tables is not enough to divorce
    them completely from the server core. The server has to remember the
    commands in order to act on them later. That involves maintaining data which
    is private to the modules, and which can be either per-server, or
    per-directory. Most things are per-directory, including in particular access
    control and authorization information, but also information on how to
    determine file types from suffixes, which can be modified by
    <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> and <code class="directive"><a href="../mod/core.html#defaulttype">DefaultType</a></code> directives, and so forth. In general,
    the governing philosophy is that anything which <em>can</em> be made
    configurable by directory should be; per-server information is generally
    used in the standard set of modules for information like
    <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>es and <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code>s which come into play before the
    request is tied to a particular place in the underlying file system.</p>

    <p>Another requirement for emulating the NCSA server is being able to handle
    the per-directory configuration files, generally called
    <code>.htaccess</code> files, though even in the NCSA server they can
    contain directives which have nothing at all to do with access control.
    Accordingly, after URI -&gt; filename translation, but before performing any
    other phase, the server walks down the directory hierarchy of the underlying
    filesystem, following the translated pathname, to read any
    <code>.htaccess</code> files which might be present. The information which
    is read in then has to be <em>merged</em> with the applicable information
    from the server's own config files (either from the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> sections in
    <code>access.conf</code>, or from defaults in <code>srm.conf</code>, which
    actually behaves for most purposes almost exactly like <code>&lt;Directory
    /&gt;</code>).</p>

    <p>Finally, after having served a request which involved reading
    <code>.htaccess</code> files, we need to discard the storage allocated for
    handling them. That is solved the same way it is solved wherever else
    similar problems come up, by tying those structures to the per-transaction
    resource pool.</p>

    <h3><a name="per-dir" id="per-dir">Per-directory configuration structures</a></h3>
      <p>Let's look out how all of this plays out in <code>mod_mime.c</code>,
      which defines the file typing handler which emulates the NCSA server's
      behavior of determining file types from suffixes. What we'll be looking
      at, here, is the code which implements the <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> and <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code> commands. These commands can appear in
      <code>.htaccess</code> files, so they must be handled in the module's
      private per-directory data, which in fact, consists of two separate
      tables for MIME types and encoding information, and is declared as
      follows:</p>

      <div class="example"><pre>typedef struct {
    table *forced_types;      /* Additional AddTyped stuff */
    table *encoding_types;    /* Added with AddEncoding... */
} mime_dir_config;</pre></div>

      <p>When the server is reading a configuration file, or <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section, which includes
      one of the MIME module's commands, it needs to create a
      <code>mime_dir_config</code> structure, so those commands have something
      to act on. It does this by invoking the function it finds in the module's
      `create per-dir config slot', with two arguments: the name of the
      directory to which this configuration information applies (or
      <code>NULL</code> for <code>srm.conf</code>), and a pointer to a
      resource pool in which the allocation should happen.</p>

      <p>(If we are reading a <code>.htaccess</code> file, that resource pool
      is the per-request resource pool for the request; otherwise it is a
      resource pool which is used for configuration data, and cleared on
      restarts. Either way, it is important for the structure being created to
      vanish when the pool is cleared, by registering a cleanup on the pool if
      necessary).</p>

      <p>For the MIME module, the per-dir config creation function just
      <code>ap_palloc</code>s the structure above, and a creates a couple of
      tables to fill it. That looks like this:</p>

      <div class="example"><p><code>
        void *create_mime_dir_config (pool *p, char *dummy)<br />
        {<br />
        <span class="indent">
          mime_dir_config *new =<br />
          <span class="indent">
           (mime_dir_config *) ap_palloc (p, sizeof(mime_dir_config));<br />
          </span>
          <br />
          new-&gt;forced_types = ap_make_table (p, 4);<br />
          new-&gt;encoding_types = ap_make_table (p, 4);<br />
          <br />
          return new;<br />
        </span>
        }
      </code></p></div>

      <p>Now, suppose we've just read in a <code>.htaccess</code> file. We
      already have the per-directory configuration structure for the next
      directory up in the hierarchy. If the <code>.htaccess</code> file we just
      read in didn't have any <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code>
      or <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code> commands, its
      per-directory config structure for the MIME module is still valid, and we
      can just use it. Otherwise, we need to merge the two structures
      somehow.</p>

      <p>To do that, the server invokes the module's per-directory config merge
      function, if one is present. That function takes three arguments: the two
      structures being merged, and a resource pool in which to allocate the
      result. For the MIME module, all that needs to be done is overlay the
      tables from the new per-directory config structure with those from the
      parent:</p>

      <div class="example"><p><code>
        void *merge_mime_dir_configs (pool *p, void *parent_dirv, void *subdirv)<br />
        {<br />
        <span class="indent">
          mime_dir_config *parent_dir = (mime_dir_config *)parent_dirv;<br />
          mime_dir_config *subdir = (mime_dir_config *)subdirv;<br />
          mime_dir_config *new =<br />
          <span class="indent">
            (mime_dir_config *)ap_palloc (p, sizeof(mime_dir_config));<br />
          </span>
          <br />
          new-&gt;forced_types = ap_overlay_tables (p, subdir-&gt;forced_types,<br />
          <span class="indent">
            parent_dir-&gt;forced_types);<br />
          </span>
          new-&gt;encoding_types = ap_overlay_tables (p, subdir-&gt;encoding_types,<br />
          <span class="indent">
            parent_dir-&gt;encoding_types);<br />
          </span>
          <br />
          return new;<br />
        </span>
        }
      </code></p></div>

      <p>As a note -- if there is no per-directory merge function present, the
      server will just use the subdirectory's configuration info, and ignore
      the parent's. For some modules, that works just fine (<em>e.g.</em>, for
      the includes module, whose per-directory configuration information
      consists solely of the state of the <code>XBITHACK</code>), and for those
      modules, you can just not declare one, and leave the corresponding
      structure slot in the module itself <code>NULL</code>.</p>
    

    <h3><a name="commands" id="commands">Command handling</a></h3>
      <p>Now that we have these structures, we need to be able to figure out how
      to fill them. That involves processing the actual <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> and <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code> commands. To find commands, the server looks in
      the module's command table. That table contains information on how many
      arguments the commands take, and in what formats, where it is permitted,
      and so forth. That information is sufficient to allow the server to invoke
      most command-handling functions with pre-parsed arguments. Without further
      ado, let's look at the <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code>
      command handler, which looks like this (the <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code> command looks basically the same, and won't be
      shown here):</p>

      <div class="example"><p><code>
        char *add_type(cmd_parms *cmd, mime_dir_config *m, char *ct, char *ext)<br />
        {<br />
        <span class="indent">
          if (*ext == '.') ++ext;<br />
          ap_table_set (m-&gt;forced_types, ext, ct);<br />
          return NULL;<br />
        </span>
        }
      </code></p></div>

      <p>This command handler is unusually simple. As you can see, it takes
      four arguments, two of which are pre-parsed arguments, the third being the
      per-directory configuration structure for the module in question, and the
      fourth being a pointer to a <code>cmd_parms</code> structure. That
      structure contains a bunch of arguments which are frequently of use to
      some, but not all, commands, including a resource pool (from which memory
      can be allocated, and to which cleanups should be tied), and the (virtual)
      server being configured, from which the module's per-server configuration
      data can be obtained if required.</p>

      <p>Another way in which this particular command handler is unusually
      simple is that there are no error conditions which it can encounter. If
      there were, it could return an error message instead of <code>NULL</code>;
      this causes an error to be printed out on the server's
      <code>stderr</code>, followed by a quick exit, if it is in the main config
      files; for a <code>.htaccess</code> file, the syntax error is logged in
      the server error log (along with an indication of where it came from), and
      the request is bounced with a server error response (HTTP error status,
      code 500).</p>

      <p>The MIME module's command table has entries for these commands, which
      look like this:</p>

      <div class="example"><p><code>
        command_rec mime_cmds[] = {<br />
        <span class="indent">
          { "AddType", add_type, NULL, OR_FILEINFO, TAKE2,<br />
          <span class="indent">"a mime type followed by a file extension" },<br /></span>
          { "AddEncoding", add_encoding, NULL, OR_FILEINFO, TAKE2,<br />
          <span class="indent">
          "an encoding (<em>e.g.</em>, gzip), followed by a file extension" },<br />
          </span>
          { NULL }<br />
        </span>
        };
      </code></p></div>

      <p>The entries in these tables are:</p>
      <ul>
      <li>The name of the command</li>
      <li>The function which handles it</li>
      <li>a <code>(void *)</code> pointer, which is passed in the
      <code>cmd_parms</code> structure to the command handler ---
      this is useful in case many similar commands are handled by
      the same function.</li>

      <li>A bit mask indicating where the command may appear. There
      are mask bits corresponding to each
      <code>AllowOverride</code> option, and an additional mask
      bit, <code>RSRC_CONF</code>, indicating that the command may
      appear in the server's own config files, but <em>not</em> in
      any <code>.htaccess</code> file.</li>

      <li>A flag indicating how many arguments the command handler
      wants pre-parsed, and how they should be passed in.
      <code>TAKE2</code> indicates two pre-parsed arguments. Other
      options are <code>TAKE1</code>, which indicates one
      pre-parsed argument, <code>FLAG</code>, which indicates that
      the argument should be <code>On</code> or <code>Off</code>,
      and is passed in as a boolean flag, <code>RAW_ARGS</code>,
      which causes the server to give the command the raw, unparsed
      arguments (everything but the command name itself). There is
      also <code>ITERATE</code>, which means that the handler looks
      the same as <code>TAKE1</code>, but that if multiple
      arguments are present, it should be called multiple times,
      and finally <code>ITERATE2</code>, which indicates that the
      command handler looks like a <code>TAKE2</code>, but if more
      arguments are present, then it should be called multiple
      times, holding the first argument constant.</li>

      <li>Finally, we have a string which describes the arguments
      that should be present. If the arguments in the actual config
      file are not as required, this string will be used to help
      give a more specific error message. (You can safely leave
      this <code>NULL</code>).</li>
      </ul>

      <p>Finally, having set this all up, we have to use it. This is ultimately
      done in the module's handlers, specifically for its file-typing handler,
      which looks more or less like this; note that the per-directory
      configuration structure is extracted from the <code>request_rec</code>'s
      per-directory configuration vector by using the
      <code>ap_get_module_config</code> function.</p>

      <div class="example"><p><code>
        int find_ct(request_rec *r)<br />
        {<br />
        <span class="indent">
          int i;<br />
          char *fn = ap_pstrdup (r-&gt;pool, r-&gt;filename);<br />
          mime_dir_config *conf = (mime_dir_config *)<br />
          <span class="indent">
            ap_get_module_config(r-&gt;per_dir_config, &amp;mime_module);<br />
          </span>
          char *type;<br />
          <br />
          if (S_ISDIR(r-&gt;finfo.st_mode)) {<br />
          <span class="indent">
            r-&gt;content_type = DIR_MAGIC_TYPE;<br />
            return OK;<br />
          </span>
          }<br />
          <br />
          if((i=ap_rind(fn,'.')) &lt; 0) return DECLINED;<br />
          ++i;<br />
          <br />
          if ((type = ap_table_get (conf-&gt;encoding_types, &amp;fn[i])))<br />
          {<br />
          <span class="indent">
            r-&gt;content_encoding = type;<br />
            <br />
            /* go back to previous extension to try to use it as a type */<br />
            fn[i-1] = '\0';<br />
            if((i=ap_rind(fn,'.')) &lt; 0) return OK;<br />
            ++i;<br />
          </span>
          }<br />
          <br />
          if ((type = ap_table_get (conf-&gt;forced_types, &amp;fn[i])))<br />
          {<br />
          <span class="indent">
            r-&gt;content_type = type;<br />
          </span>
          }<br />
          <br />
          return OK;
        </span>
        }
      </code></p></div>
    

    <h3><a name="servconf" id="servconf">Side notes -- per-server configuration,
    virtual servers, <em>etc</em>.</a></h3>
      <p>The basic ideas behind per-server module configuration are basically
      the same as those for per-directory configuration; there is a creation
      function and a merge function, the latter being invoked where a virtual
      server has partially overridden the base server configuration, and a
      combined structure must be computed. (As with per-directory configuration,
      the default if no merge function is specified, and a module is configured
      in some virtual server, is that the base configuration is simply
      ignored).</p>

      <p>The only substantial difference is that when a command needs to
      configure the per-server private module data, it needs to go to the
      <code>cmd_parms</code> data to get at it. Here's an example, from the
      alias module, which also indicates how a syntax error can be returned
      (note that the per-directory configuration argument to the command
      handler is declared as a dummy, since the module doesn't actually have
      per-directory config data):</p>

      <div class="example"><p><code>
        char *add_redirect(cmd_parms *cmd, void *dummy, char *f, char *url)<br />
        {<br />
        <span class="indent">
          server_rec *s = cmd-&gt;server;<br />
          alias_server_conf *conf = (alias_server_conf *)<br />
          <span class="indent">
            ap_get_module_config(s-&gt;module_config,&amp;alias_module);<br />
          </span>
          alias_entry *new = ap_push_array (conf-&gt;redirects);<br />
          <br />
          if (!ap_is_url (url)) return "Redirect to non-URL";<br />
          <br />
          new-&gt;fake = f; new-&gt;real = url;<br />
          return NULL;<br />
        </span>
        }
      </code></p></div>
    
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                            developer/debugging.html                                                                            100644       0       0        21562 11256641267  13053  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Debugging Memory Allocation in APR - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Debugging Memory Allocation in APR</h1>


    <p>The allocation mechanisms within APR have a number of debugging modes
    that can be used to assist in finding memory problems. This document
    describes the modes available and gives instructions on activating
    them.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#options">Available debugging options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#combo">Allowable Combinations</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#howto">Activating Debugging Options</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Available debugging options</a></h2>
    <h3><a name="alloc_debug" id="alloc_debug">Allocation Debugging - ALLOC_DEBUG</a></h3>
    

      <div class="note">Debugging support: Define this to enable code which
      helps detect re-use of <code>free()</code>d memory and other such
      nonsense.</div>

      <p>The theory is simple. The <code>FILL_BYTE</code> (<code>0xa5</code>)
      is written over all <code>malloc</code>'d memory as we receive it, and
      is written over everything that we free up during a
      <code>clear_pool</code>. We check that blocks on the free list always
      have the <code>FILL_BYTE</code> in them, and we check during
      <code>palloc()</code> that the bytes still have <code>FILL_BYTE</code>
      in them. If you ever see garbage URLs or whatnot containing lots
      of <code>0xa5</code>s then you know something used data that's been
      freed or uninitialized.</p>
    

    <h3><a name="alloc_use_malloc" id="alloc_use_malloc">Malloc Support - ALLOC_USE_MALLOC</a></h3>
    

      <div class="note">If defined all allocations will be done with
      <code>malloc()</code> and <code>free()</code>d appropriately at the
      end.</div>

      <p>This is intended to be used with something like Electric
      Fence or Purify to help detect memory problems. Note that if
      you're using efence then you should also add in <code>ALLOC_DEBUG</code>.
      But don't add in <code>ALLOC_DEBUG</code> if you're using Purify because
      <code>ALLOC_DEBUG</code> would hide all the uninitialized read errors
      that Purify can diagnose.</p>
    

    <h3><a name="pool_debug" id="pool_debug">Pool Debugging - POOL_DEBUG</a></h3>
      <div class="note">This is intended to detect cases where the wrong pool is
      used when assigning data to an object in another pool.</div>

      <p>In particular, it causes the <code>table_{set,add,merge}n</code>
      routines to check that their arguments are safe for the
      <code>apr_table_t</code> they're being placed in. It currently only works
      with the unix multiprocess model, but could be extended to others.</p>
    

    <h3><a name="make_table_profile" id="make_table_profile">Table Debugging - MAKE_TABLE_PROFILE</a></h3>
    

      <div class="note">Provide diagnostic information about make_table() calls
      which are possibly too small.</div>

      <p>This requires a recent gcc which supports
      <code>__builtin_return_address()</code>. The error_log output will be a
      message such as:</p>
      <div class="example"><p><code>
        table_push: apr_table_t created by 0x804d874 hit limit of 10
      </code></p></div>

      <p>Use <code>l *0x804d874</code> to find the
      source that corresponds to. It indicates that a <code>apr_table_t</code>
      allocated by a call at that address has possibly too small an
      initial <code>apr_table_t</code> size guess.</p>
    

    <h3><a name="alloc_stats" id="alloc_stats">Allocation Statistics -  ALLOC_STATS</a></h3>
    

      <div class="note">Provide some statistics on the cost of allocations.</div>

      <p>This requires a bit of an understanding of how <code>alloc.c</code>
      works.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="combo" id="combo">Allowable Combinations</a></h2>

    <p>Not all the options outlined above can be activated at the
    same time. the following table gives more information.</p>

    <table class="bordered"><tr class="header"><th />
        <th>ALLOC DEBUG</th>
        <th>ALLOC USE MALLOC</th>
        <th>POOL DEBUG</th>
        <th>MAKE TABLE PROFILE</th>
        <th>ALLOC STATS</th></tr>
<tr><th>ALLOC DEBUG</th>
        <td>-</td><td>No</td><td>Yes</td><td>Yes</td><td>Yes</td></tr>
<tr class="odd"><th>ALLOC USE MALLOC</th>
        <td>No</td><td>-</td><td>No</td><td>No</td><td>No</td></tr>
<tr><th>POOL DEBUG</th>
        <td>Yes</td><td>No</td><td>-</td><td>Yes</td><td>Yes</td></tr>
<tr class="odd"><th>MAKE TABLE PROFILE</th>
        <td>Yes</td><td>No</td><td>Yes</td><td>-</td><td>Yes</td></tr>
<tr><th>ALLOC STATS</th>
        <td>Yes</td><td>No</td><td>Yes</td><td>Yes</td><td>-</td></tr>
</table>

    <p>Additionally the debugging options are not suitable for
    multi-threaded versions of the server. When trying to debug
    with these options the server should be started in single
    process mode.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="howto" id="howto">Activating Debugging Options</a></h2>

    <p>The various options for debugging memory are now enabled in
    the <code>apr_general.h</code> header file in APR. The various options are
    enabled by uncommenting the define for the option you wish to
    use. The section of the code currently looks like this
    (<em>contained in srclib/apr/include/apr_pools.h</em>)</p>

    <div class="example"><p><code>
      /*<br />
      #define ALLOC_DEBUG<br />
      #define POOL_DEBUG<br />
      #define ALLOC_USE_MALLOC<br />
      #define MAKE_TABLE_PROFILE<br />
      #define ALLOC_STATS<br />
      */<br />
      <br />
      typedef struct ap_pool_t {<br />
      <span class="indent">
        union block_hdr *first;<br />
        union block_hdr *last;<br />
        struct cleanup *cleanups;<br />
        struct process_chain *subprocesses;<br />
        struct ap_pool_t *sub_pools;<br />
        struct ap_pool_t *sub_next;<br />
        struct ap_pool_t *sub_prev;<br />
        struct ap_pool_t *parent;<br />
        char *free_first_avail;<br />
      </span>
      #ifdef ALLOC_USE_MALLOC<br />
      <span class="indent">
        void *allocation_list;<br />
      </span>
      #endif<br />
      #ifdef POOL_DEBUG<br />
      <span class="indent">
        struct ap_pool_t *joined;<br />
      </span>
      #endif<br />
      <span class="indent">
        int (*apr_abort)(int retcode);<br />
        struct datastruct *prog_data;<br />
      </span>
      } ap_pool_t;
    </code></p></div>

    <p>To enable allocation debugging simply move the <code>#define
    ALLOC_DEBUG</code> above the start of the comments block and rebuild
    the server.</p>

    <div class="note"><h3>Note</h3>
    <p>In order to use the various options the server <strong>must</strong>
    be rebuilt after editing the header file.</p>
    </div>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                              developer/documenting.html                                                                          100644       0       0        10130 11256641267  13421  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Documenting Apache 2.0 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Documenting Apache 2.0</h1>


    <p>Apache 2.0 uses <a href="http://www.doxygen.org/">Doxygen</a> to
    document the APIs and global variables in the code. This will explain
    the basics of how to document using Doxygen.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="brief" id="brief">Brief Description</a></h2>
    <p>To start a documentation block, use <code>/**</code><br />
    To end a documentation block, use <code>*/</code></p>

    <p>In the middle of the block, there are multiple tags we can
    use:</p>

    <div class="example"><p><code>
      Description of this functions purpose<br />
      @param parameter_name description<br />
      @return description<br />
      @deffunc signature of the function<br />
    </code></p></div>
      
    <p>The <code>deffunc</code> is not always necessary. DoxyGen does not
    have a full parser  in it, so any prototype that use a macro in the
    return type declaration is too complex for scandoc. Those functions
    require a <code>deffunc</code>. An example (using &amp;gt; rather
    than &gt;):</p>

    <div class="example"><p><code>
      /**<br />
 &nbsp;* return the final element of the pathname<br />
 &nbsp;* @param pathname The path to get the final element of<br />
 &nbsp;* @return the final element of the path<br />
 &nbsp;* @tip Examples:<br />
 &nbsp;* &lt;pre&gt;<br />
 &nbsp;*                 "/foo/bar/gum"   -&amp;gt; "gum"<br />
 &nbsp;*                 "/foo/bar/gum/"  -&amp;gt; ""<br />
 &nbsp;*                 "gum"            -&amp;gt; "gum"<br />
 &nbsp;*                 "wi\\n32\\stuff" -&amp;gt; "stuff"<br />
 &nbsp;* &lt;/pre&gt;<br />
 &nbsp;* @deffunc const char * ap_filename_of_pathname(const char *pathname)<br />
 &nbsp;*/
    </code></p></div>

    <p>At the top of the header file, always include:</p>
    <div class="example"><p><code>
      /**<br />
 &nbsp;* @package Name of library header<br />
 &nbsp;*/
    </code></p></div>

    <p>Doxygen uses a new HTML file for each package. The HTML files are named
    {Name_of_library_header}.html, so try to be concise with your names.</p>

    <p>For a further discussion of the possibilities please refer to
    <a href="http://www.doxygen.org/">the Doxygen site</a>.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                        developer/filters.html                                                                              100644       0       0        27634 11256641267  12576  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>How filters work in Apache 2.0 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>How filters work in Apache 2.0</h1>


    <div class="warning"><h3>Warning</h3>
      <p>This is a cut 'n paste job from an email
      (&lt;022501c1c529$f63a9550$7f00000a@KOJ&gt;) and only reformatted for
      better readability. It's not up to date but may be a good start for
      further research.</p>
    </div>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#types">Filter Types</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#howinserted">How are filters inserted?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#asis">Asis</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Explanations</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="types" id="types">Filter Types</a></h2>
    <p>There are three basic filter types (each of these is actually broken
    down into two categories, but that comes later).</p>

    <dl>
    <dt><code>CONNECTION</code></dt>
    <dd>Filters of this type are valid for the lifetime of this connection.
    (<code>AP_FTYPE_CONNECTION</code>, <code>AP_FTYPE_NETWORK</code>)</dd>

    <dt><code>PROTOCOL</code></dt>
    <dd>Filters of this type are valid for the lifetime of this request from
    the point of view of the client, this means that the request is valid
    from the time that the request is sent until the time that the response
    is received. (<code>AP_FTYPE_PROTOCOL</code>,
    <code>AP_FTYPE_TRANSCODE</code>)</dd>

    <dt><code>RESOURCE</code></dt>
    <dd>Filters of this type are valid for the time that this content is used
    to satisfy a request.  For simple requests, this is identical to
    <code>PROTOCOL</code>, but internal redirects and sub-requests can change
    the content without ending the request. (<code>AP_FTYPE_RESOURCE</code>,
    <code>AP_FTYPE_CONTENT_SET</code>)</dd>
    </dl>

    <p>It is important to make the distinction between a protocol and a
    resource filter.  A resource filter is tied to a specific resource, it
    may also be tied to header information, but the main binding is to a
    resource.  If you are writing a filter and you want to know if it is
    resource or protocol, the correct question to ask is:  "Can this filter
    be removed if the request is redirected to a different resource?"  If
    the answer is yes, then it is a resource filter.  If it is no, then it
    is most likely a protocol or connection filter.  I won't go into
    connection filters, because they seem to be well understood. With this
    definition, a few examples might help:</p>

    <dl>
    <dt>Byterange</dt>
    <dd>We have coded it to be inserted for all requests, and it is removed
    if not used.  Because this filter is active at the beginning of all
    requests, it can not be removed if it is redirected, so this is a
    protocol filter.</dd>

    <dt>http_header</dt>
    <dd>This filter actually writes the headers to the network.  This is
    obviously a required filter (except in the asis case which is special
    and will be dealt with below) and so it is a protocol filter.</dd>

    <dt>Deflate</dt>
    <dd>The administrator configures this filter based on which file has been
    requested.  If we do an internal redirect from an autoindex page to an
    index.html page, the deflate filter may be added or removed based on
    config, so this is a resource filter.</dd>
    </dl>

    <p>The further breakdown of each category into two more filter types is
    strictly for ordering.  We could remove it, and only allow for one
    filter type, but the order would tend to be wrong, and we would need to
    hack things to make it work.  Currently, the <code>RESOURCE</code> filters
    only have one filter type, but that should change.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="howinserted" id="howinserted">How are filters inserted?</a></h2>
    <p>This is actually rather simple in theory, but the code is
    complex.  First of all, it is important that everybody realize that
    there are three filter lists for each request, but they are all
    concatenated together.  So, the first list is
    <code>r-&gt;output_filters</code>, then <code>r-&gt;proto_output_filters</code>,
    and finally <code>r-&gt;connection-&gt;output_filters</code>. These correspond
    to the <code>RESOURCE</code>, <code>PROTOCOL</code>, and
    <code>CONNECTION</code> filters respectively. The problem previously, was
    that we used a singly linked list to create the filter stack, and we
    started from the "correct" location.  This means that if I had a
    <code>RESOURCE</code> filter on the stack, and I added a
    <code>CONNECTION</code> filter, the <code>CONNECTION</code> filter would
    be ignored. This should make sense, because we would insert the connection
    filter at the top of the <code>c-&gt;output_filters</code> list, but the end
    of <code>r-&gt;output_filters</code> pointed to the filter that used to be
    at the front of <code>c-&gt;output_filters</code>. This is obviously wrong.
    The new insertion code uses a doubly linked list. This has the advantage
    that we never lose a filter that has been inserted. Unfortunately, it comes
    with a separate set of headaches.</p>

    <p>The problem is that we have two different cases were we use subrequests.
    The first is to insert more data into a response. The second is to
    replace the existing response with an internal redirect. These are two
    different cases and need to be treated as such.</p>

    <p>In the first case, we are creating the subrequest from within a handler
    or filter.  This means that the next filter should be passed to
    <code>make_sub_request</code> function, and the last resource filter in the
    sub-request will point to the next filter in the main request.  This
    makes sense, because the sub-request's data needs to flow through the
    same set of filters as the main request.  A graphical representation
    might help:</p>

<div class="example"><pre>
Default_handler --&gt; includes_filter --&gt; byterange --&gt; ...
</pre></div>

    <p>If the includes filter creates a sub request, then we don't want the
    data from that sub-request to go through the includes filter, because it
    might not be SSI data.  So, the subrequest adds the following:</p>

<div class="example"><pre>    
Default_handler --&gt; includes_filter -/-&gt; byterange --&gt; ...
                                    /
Default_handler --&gt; sub_request_core
</pre></div>

    <p>What happens if the subrequest is SSI data?  Well, that's easy, the
    <code>includes_filter</code> is a resource filter, so it will be added to
    the sub request in between the <code>Default_handler</code> and the
    <code>sub_request_core</code> filter.</p>

    <p>The second case for sub-requests is when one sub-request is going to
    become the real request.  This happens whenever a sub-request is created
    outside of a handler or filter, and NULL is passed as the next filter to
    the <code>make_sub_request</code> function.</p>

    <p>In this case, the resource filters no longer make sense for the new
    request, because the resource has changed.  So, instead of starting from
    scratch, we simply point the front of the resource filters for the
    sub-request to the front of the protocol filters for the old request.
    This means that we won't lose any of the protocol filters, neither will
    we try to send this data through a filter that shouldn't see it.</p>

    <p>The problem is that we are using a doubly-linked list for our filter
    stacks now. But, you should notice that it is possible for two lists to
    intersect in this model.  So, you do you handle the previous pointer?
    This is a very difficult question to answer, because there is no "right"
    answer, either method is equally valid.  I looked at why we use the
    previous pointer.  The only reason for it is to allow for easier
    addition of new servers.  With that being said, the solution I chose was
    to make the previous pointer always stay on the original request.</p>

    <p>This causes some more complex logic, but it works for all cases.  My
    concern in having it move to the sub-request, is that for the more
    common case (where a sub-request is used to add data to a response), the
    main filter chain would be wrong.  That didn't seem like a good idea to
    me.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="asis" id="asis">Asis</a></h2>
    <p>The final topic.  :-)  Mod_Asis is a bit of a hack, but the
    handler needs to remove all filters except for connection filters, and
    send the data.  If you are using <code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code>, all other
    bets are off.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="conclusion" id="conclusion">Explanations</a></h2>
    <p>The absolutely last point is that the reason this code was so hard to
    get right, was because we had hacked so much to force it to work.  I
    wrote most of the hacks originally, so I am very much to blame.
    However, now that the code is right, I have started to remove some
    hacks.  Most people should have seen that the <code>reset_filters</code>
    and <code>add_required_filters</code> functions are gone.  Those inserted
    protocol level filters for error conditions, in fact, both functions did
    the same thing, one after the other, it was really strange. Because we
    don't lose protocol filters for error cases any more, those hacks went away.
    The <code>HTTP_HEADER</code>, <code>Content-length</code>, and
    <code>Byterange</code> filters are all added in the
    <code>insert_filters</code> phase, because if they were added earlier, we
    had some interesting interactions.  Now, those could all be moved to be
    inserted with the <code>HTTP_IN</code>, <code>CORE</code>, and
    <code>CORE_IN</code> filters.  That would make the code easier to
    follow.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                    developer/hooks.html                                                                                100644       0       0        24603 11256641267  12242  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache 2.0 Hook Functions - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Apache 2.0 Hook Functions</h1>


    <div class="warning"><h3>Warning</h3>
      <p>This document is still in development and may be partially out of
      date.</p>
    </div>

    <p>In general, a hook function is one that Apache will call at
    some point during the processing of a request. Modules can
    provide functions that are called, and specify when they get
    called in comparison to other modules.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#create">Creating a hook function</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#hooking">Hooking the hook</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="create" id="create">Creating a hook function</a></h2>
    <p>In order to create a new hook, four things need to be
    done:</p>

    <h3><a name="create-declare" id="create-declare">Declare the hook function</a></h3>
      <p>Use the <code>AP_DECLARE_HOOK</code> macro, which needs to be given
      the return type of the hook function, the name of the hook, and the
      arguments. For example, if the hook returns an <code>int</code> and
      takes a <code>request_rec *</code> and an <code>int</code> and is
      called <code>do_something</code>, then declare it like this:</p>
      <div class="example"><p><code>
        AP_DECLARE_HOOK(int, do_something, (request_rec *r, int n))
      </code></p></div>

      <p>This should go in a header which modules will include if
      they want to use the hook.</p>
    

    <h3><a name="create-create" id="create-create">Create the hook structure</a></h3>
      <p>Each source file that exports a hook has a private structure
      which is used to record the module functions that use the hook.
      This is declared as follows:</p>

      <div class="example"><p><code>
        APR_HOOK_STRUCT(<br />
        <span class="indent">
          APR_HOOK_LINK(do_something)<br />
          ...<br />
        </span>
        )
      </code></p></div>
    

    <h3><a name="create-implement" id="create-implement">Implement the hook caller</a></h3>
      <p>The source file that exports the hook has to implement a
      function that will call the hook. There are currently three
      possible ways to do this. In all cases, the calling function is
      called <code>ap_run_<var>hookname</var>()</code>.</p>

      <h4>Void hooks</h4>
        <p>If the return value of a hook is <code>void</code>, then all the
        hooks are called, and the caller is implemented like this:</p>

        <div class="example"><p><code>
          AP_IMPLEMENT_HOOK_VOID(do_something, (request_rec *r, int n), (r, n))
        </code></p></div>

        <p>The second and third arguments are the dummy argument
        declaration and the dummy arguments as they will be used when
        calling the hook. In other words, this macro expands to
        something like this:</p>

        <div class="example"><p><code>
          void ap_run_do_something(request_rec *r, int n)<br />
          {<br />
          <span class="indent">
            ...<br />
            do_something(r, n);<br />
          </span>
          }
        </code></p></div>
      

      <h4>Hooks that return a value</h4>
        <p>If the hook returns a value, then it can either be run until
        the first hook that does something interesting, like so:</p>

        <div class="example"><p><code>
          AP_IMPLEMENT_HOOK_RUN_FIRST(int, do_something, (request_rec *r, int n), (r, n), DECLINED)
        </code></p></div>

        <p>The first hook that does <em>not</em> return <code>DECLINED</code>
        stops the loop and its return value is returned from the hook
        caller. Note that <code>DECLINED</code> is the tradition Apache
        hook return meaning "I didn't do anything", but it can be
        whatever suits you.</p>

        <p>Alternatively, all hooks can be run until an error occurs.
        This boils down to permitting <em>two</em> return values, one of
        which means "I did something, and it was OK" and the other
        meaning "I did nothing". The first function that returns a
        value other than one of those two stops the loop, and its
        return is the return value. Declare these like so:</p>

        <div class="example"><p><code>
          AP_IMPLEMENT_HOOK_RUN_ALL(int, do_something, (request_rec *r, int n), (r, n), OK, DECLINED)
        </code></p></div>

        <p>Again, <code>OK</code> and <code>DECLINED</code> are the traditional
        values. You can use what you want.</p>
      
    

    <h3><a name="create-call" id="create-call">Call the hook callers</a></h3>
      <p>At appropriate moments in the code, call the hook caller,
      like so:</p>

      <div class="example"><p><code>
        int n, ret;<br />
        request_rec *r;<br />
        <br />
        ret=ap_run_do_something(r, n);
      </code></p></div>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="hooking" id="hooking">Hooking the hook</a></h2>
    <p>A module that wants a hook to be called needs to do two
    things.</p>

    <h3><a name="hooking-implement" id="hooking-implement">Implement the hook function</a></h3>
      <p>Include the appropriate header, and define a static function
      of the correct type:</p>

      <div class="example"><p><code>
        static int my_something_doer(request_rec *r, int n)<br />
        {<br />
        <span class="indent">
          ...<br />
          return OK;<br />
        </span>
        }
      </code></p></div>
    

    <h3><a name="hooking-add" id="hooking-add">Add a hook registering function</a></h3>
      <p>During initialisation, Apache will call each modules hook
      registering function, which is included in the module
      structure:</p>

      <div class="example"><p><code>
        static void my_register_hooks()<br />
        {<br />
        <span class="indent">
          ap_hook_do_something(my_something_doer, NULL, NULL, APR_HOOK_MIDDLE);<br />
        </span>
        }<br />
        <br />
        mode MODULE_VAR_EXPORT my_module =<br />
        {<br />
        <span class="indent">
          ...<br />
          my_register_hooks       /* register hooks */<br />
        </span>
        };
      </code></p></div>
    

    <h3><a name="hooking-order" id="hooking-order">Controlling hook calling order</a></h3>
      <p>In the example above, we didn't use the three arguments in
      the hook registration function that control calling order.
      There are two mechanisms for doing this. The first, rather
      crude, method, allows us to specify roughly where the hook is
      run relative to other modules. The final argument control this.
      There are three possible values: <code>APR_HOOK_FIRST</code>,
      <code>APR_HOOK_MIDDLE</code> and <code>APR_HOOK_LAST</code>.</p>

      <p>All modules using any particular value may be run in any
      order relative to each other, but, of course, all modules using
      <code>APR_HOOK_FIRST</code> will be run before <code>APR_HOOK_MIDDLE</code>
      which are before <code>APR_HOOK_LAST</code>. Modules that don't care
      when they are run should use <code>APR_HOOK_MIDDLE</code>. <em>(I spaced
      these out so people could do stuff like <code>APR_HOOK_FIRST-2</code>
      to get in slightly earlier, but is this wise? - Ben)</em></p>

      <p>Note that there are two more values,
      <code>APR_HOOK_REALLY_FIRST</code> and <code>APR_HOOK_REALLY_LAST</code>. These
      should only be used by the hook exporter.</p>

      <p>The other method allows finer control. When a module knows
      that it must be run before (or after) some other modules, it
      can specify them by name. The second (third) argument is a
      NULL-terminated array of strings consisting of the names of
      modules that must be run before (after) the current module. For
      example, suppose we want "mod_xyz.c" and "mod_abc.c" to run
      before we do, then we'd hook as follows:</p>

      <div class="example"><p><code>
        static void register_hooks()<br />
        {<br />
        <span class="indent">
          static const char * const aszPre[] = { "mod_xyz.c", "mod_abc.c", NULL };<br />
          <br />
          ap_hook_do_something(my_something_doer, aszPre, NULL, APR_HOOK_MIDDLE);<br />
        </span>
        }
      </code></p></div>

      <p>Note that the sort used to achieve this is stable, so
      ordering set by <code>APR_HOOK_<var>ORDER</var></code> is preserved, as far
      as is possible.</p>

      <p class="cite"><cite>Ben Laurie</cite>, 15th August 1999</p>
    
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                             developer/index.html                                                                                100644       0       0        11314 11256641267  12221  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Developer Documentation for Apache 2.0 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>Developer Documentation for Apache 2.0</h1>


    <p>Many of the documents on these Developer pages are lifted
    from Apache 1.3's documentation. While they are all being
    updated to Apache 2.0, they are in different stages of
    progress. Please be patient, and point out any discrepancies or
    errors on the developer/ pages directly to the
    <a href="http://httpd.apache.org/lists.html#http-dev">dev@httpd.apache.org</a> mailing list.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#topics">Topics</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#external">External Resources</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="topics" id="topics">Topics</a></h2>
    <ul>
      <li><a href="API.html">Apache 1.3 API Notes</a></li>
      <li><a href="hooks.html">Apache 2.0 Hook Functions</a></li>
      <li><a href="request.html">Request Processing in Apache 2.0</a></li>
      <li><a href="filters.html">How filters work in Apache 2.0</a></li>
      <li><a href="modules.html">Converting Modules from Apache 1.3 to Apache 2.0</a></li>
      <li><a href="debugging.html">Debugging Memory Allocation in APR</a></li>
      <li><a href="documenting.html">Documenting Apache 2.0</a></li>
      <li><a href="thread_safety.html">Apache 2.0 Thread Safety Issues</a></li>
    </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="external" id="external">External Resources</a></h2>
    <ul>
      <li>Tools provided by Ian Holsman:
      <ul>
        <li><a href="http://lxr.webperf.org/">Apache 2 cross reference</a></li>
        <li><a href="http://docx.webperf.org/">Autogenerated Apache 2 code documentation</a></li>
      </ul></li>

      <li>Module Development Tutorials by Kevin O'Donnell
      <ul>
        <li><a href="http://threebit.net/tutorials/apache2_modules/tut1/tutorial1.html">Integrating a module into the Apache build system</a></li>

        <li><a href="http://threebit.net/tutorials/apache2_modules/tut2/tutorial2.html">Handling configuration directives</a></li>
      </ul></li>

      <li><a href="http://www.onlamp.com/pub/ct/38">Some notes on 
      Apache module development by Ryan Bloom</a></li>

      <li>Developer articles at <a href="http://www.apachetutor.org/">apachetutor</a> include:
      <ul>
        <li><a href="http://www.apachetutor.org/dev/request">Request Processing in Apache</a></li>
        <li><a href="http://www.apachetutor.org/dev/config">Configuration for Modules</a></li>
        <li><a href="http://www.apachetutor.org/dev/pools">Resource Management in Apache</a></li>
        <li><a href="http://www.apachetutor.org/dev/reslist">Connection Pooling in Apache</a></li>
        <li><a href="http://www.apachetutor.org/dev/brigades">Introduction to Buckets and Brigades</a></li>
      </ul></li>
    </ul>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                    developer/modules.html                                                                              100644       0       0        26307 11256641267  12572  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Converting Modules from Apache 1.3 to Apache 2.0 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Converting Modules from Apache 1.3 to Apache 2.0</h1>


    <p>This is a first attempt at writing the lessons I learned
    when trying to convert the <code>mod_mmap_static</code> module to Apache
    2.0. It's by no means definitive and probably won't even be
    correct in some ways, but it's a start.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#easy">The easier changes ...</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#messy">The messier changes...</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="easy" id="easy">The easier changes ...</a></h2>

    <h3><a name="cleanup" id="cleanup">Cleanup Routines</a></h3>
      <p>These now need to be of type <code>apr_status_t</code> and return a
      value of that type. Normally the return value will be
      <code>APR_SUCCESS</code> unless there is some need to signal an error in
      the cleanup. Be aware that even though you signal an error not all code
      yet checks and acts upon the error.</p>
    

    <h3><a name="init" id="init">Initialisation Routines</a></h3>
      <p>These should now be renamed to better signify where they sit
      in the overall process. So the name gets a small change from
      <code>mmap_init</code> to <code>mmap_post_config</code>. The arguments
      passed have undergone a radical change and now look like</p>

      <ul>
        <li><code>apr_pool_t *p</code></li>
        <li><code>apr_pool_t *plog</code></li>
        <li><code>apr_pool_t *ptemp</code></li>
        <li><code>server_rec *s</code></li>
      </ul>
    

    <h3><a name="datatypes" id="datatypes">Data Types</a></h3>
      <p>A lot of the data types have been moved into the <a href="http://apr.apache.org/">APR</a>. This means that some have had
      a name change, such as the one shown above. The following is a brief
      list of some of the changes that you are likely to have to make.</p>

      <ul>
        <li><code>pool</code> becomes <code>apr_pool_t</code></li>
        <li><code>table</code> becomes <code>apr_table_t</code></li>
      </ul>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="messy" id="messy">The messier changes...</a></h2>

    <h3><a name="register-hooks" id="register-hooks">Register Hooks</a></h3>
      <p>The new architecture uses a series of hooks to provide for
      calling your functions. These you'll need to add to your module
      by way of a new function, <code>static void register_hooks(void)</code>.
      The function is really reasonably straightforward once you
      understand what needs to be done. Each function that needs
      calling at some stage in the processing of a request needs to
      be registered, handlers do not. There are a number of phases
      where functions can be added, and for each you can specify with
      a high degree of control the relative order that the function
      will be called in.</p>

      <p>This is the code that was added to <code>mod_mmap_static</code>:</p>
      <div class="example"><pre>
static void register_hooks(void)
{
    static const char * const aszPre[]={ "http_core.c",NULL };
    ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE);
    ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST);
};</pre></div>

      <p>This registers 2 functions that need to be called, one in
      the <code>post_config</code> stage (virtually every module will need this
      one) and one for the <code>translate_name</code> phase. note that while
      there are different function names the format of each is
      identical. So what is the format?</p>

      <div class="example"><p><code>
        ap_hook_<var>phase_name</var>(<var>function_name</var>,
        <var>predecessors</var>, <var>successors</var>, <var>position</var>);
      </code></p></div>

      <p>There are 3 hook positions defined...</p>

      <ul>
        <li><code>HOOK_FIRST</code></li>
        <li><code>HOOK_MIDDLE</code></li>
        <li><code>HOOK_LAST</code></li>
      </ul>

      <p>To define the position you use the position and then modify
      it with the predecessors and successors. Each of the modifiers
      can be a list of functions that should be called, either before
      the function is run (predecessors) or after the function has
      run (successors).</p>

      <p>In the <code>mod_mmap_static</code> case I didn't care about the
      <code>post_config</code> stage, but the <code>mmap_static_xlat</code>
      <strong>must</strong> be called after the core module had done it's name
      translation, hence the use of the aszPre to define a modifier to the
      position <code>HOOK_LAST</code>.</p>
    

    <h3><a name="moddef" id="moddef">Module Definition</a></h3>
      <p>There are now a lot fewer stages to worry about when
      creating your module definition. The old defintion looked
      like</p>

      <div class="example"><pre>
module MODULE_VAR_EXPORT <var>module_name</var>_module =
{
    STANDARD_MODULE_STUFF,
    /* initializer */
    /* dir config creater */
    /* dir merger --- default is to override */
    /* server config */
    /* merge server config */
    /* command handlers */
    /* handlers */
    /* filename translation */
    /* check_user_id */
    /* check auth */
    /* check access */
    /* type_checker */
    /* fixups */
    /* logger */
    /* header parser */
    /* child_init */
    /* child_exit */
    /* post read-request */
};</pre></div>

      <p>The new structure is a great deal simpler...</p>
      <div class="example"><pre>
module MODULE_VAR_EXPORT <var>module_name</var>_module =
{
    STANDARD20_MODULE_STUFF,
    /* create per-directory config structures */
    /* merge per-directory config structures  */
    /* create per-server config structures    */
    /* merge per-server config structures     */
    /* command handlers */
    /* handlers */
    /* register hooks */
};</pre></div>

      <p>Some of these read directly across, some don't. I'll try to
      summarise what should be done below.</p>

      <p>The stages that read directly across :</p>

      <dl>
        <dt><code>/* dir config creater */</code></dt>
        <dd><code>/* create per-directory config structures */</code></dd>

        <dt><code>/* server config */</code></dt>
        <dd><code>/* create per-server config structures */</code></dd>

        <dt><code>/* dir merger */</code></dt>
        <dd><code>/* merge per-directory config structures */</code></dd>

        <dt><code>/* merge server config */</code></dt>
        <dd><code>/* merge per-server config structures */</code></dd>

        <dt><code>/* command table */</code></dt>
        <dd><code>/* command apr_table_t */</code></dd>

        <dt><code>/* handlers */</code></dt>
        <dd><code>/* handlers */</code></dd>
      </dl>

      <p>The remainder of the old functions should be registered as
      hooks. There are the following hook stages defined so
      far...</p>

      <dl>
        <dt><code>ap_hook_post_config</code></dt>
        <dd>this is where the old <code>_init</code> routines get
        registered</dd>

        <dt><code>ap_hook_http_method</code></dt>
        <dd>retrieve the http method from a request. (legacy)</dd>

        <dt><code>ap_hook_open_logs</code></dt>
        <dd>open any specified logs</dd>

        <dt><code>ap_hook_auth_checker</code></dt>
        <dd>check if the resource requires authorization</dd>

        <dt><code>ap_hook_access_checker</code></dt>
        <dd>check for module-specific restrictions</dd>

        <dt><code>ap_hook_check_user_id</code></dt>
        <dd>check the user-id and password</dd>

        <dt><code>ap_hook_default_port</code></dt>
        <dd>retrieve the default port for the server</dd>

        <dt><code>ap_hook_pre_connection</code></dt>
        <dd>do any setup required just before processing, but after
        accepting</dd>

        <dt><code>ap_hook_process_connection</code></dt>
        <dd>run the correct protocol</dd>

        <dt><code>ap_hook_child_init</code></dt>
        <dd>call as soon as the child is started</dd>

        <dt><code>ap_hook_create_request</code></dt>
        <dd>??</dd>

        <dt><code>ap_hook_fixups</code></dt>
        <dd>last chance to modify things before generating content</dd>

        <dt><code>ap_hook_handler</code></dt>
        <dd>generate the content</dd>

        <dt><code>ap_hook_header_parser</code></dt>
        <dd>lets modules look at the headers, not used by most modules, because
        they use <code>post_read_request</code> for this</dd>

        <dt><code>ap_hook_insert_filter</code></dt>
        <dd>to insert filters into the filter chain</dd>

        <dt><code>ap_hook_log_transaction</code></dt>
        <dd>log information about the request</dd>

        <dt><code>ap_hook_optional_fn_retrieve</code></dt>
        <dd>retrieve any functions registered as optional</dd>

        <dt><code>ap_hook_post_read_request</code></dt>
        <dd>called after reading the request, before any other phase</dd>

        <dt><code>ap_hook_quick_handler</code></dt>
        <dd>called before any request processing, used by cache modules.</dd>

        <dt><code>ap_hook_translate_name</code></dt>
        <dd>translate the URI into a filename</dd>

        <dt><code>ap_hook_type_checker</code></dt>
        <dd>determine and/or set the doc type</dd>
      </dl>
    
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                         developer/request.html                                                                              100644       0       0        33157 11256641267  12613  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Request Processing in Apache 2.0 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Request Processing in Apache 2.0</h1>


    <div class="warning"><h3>Warning</h3>
      <p>Warning - this is a first (fast) draft that needs further
      revision!</p>
    </div>

    <p>Several changes in Apache 2.0 affect the internal request
    processing mechanics. Module authors need to be aware of these
    changes so they may take advantage of the optimizations and
    security enhancements.</p>

    <p>The first major change is to the subrequest and redirect
    mechanisms. There were a number of different code paths in
    Apache 1.3 to attempt to optimize subrequest or redirect
    behavior. As patches were introduced to 2.0, these
    optimizations (and the server behavior) were quickly broken due
    to this duplication of code. All duplicate code has been folded
    back into <code>ap_process_request_internal()</code> to prevent
    the code from falling out of sync again.</p>

    <p>This means that much of the existing code was 'unoptimized'.
    It is the Apache HTTP Project's first goal to create a robust
    and correct implementation of the HTTP server RFC. Additional
    goals include security, scalability and optimization. New
    methods were sought to optimize the server (beyond the
    performance of Apache 1.3) without introducing fragile or
    insecure code.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#processing">The Request Processing Cycle</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#parsing">The Request Parsing Phase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">The Security Phase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#preparation">The Preparation Phase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#handler">The Handler Phase</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="processing" id="processing">The Request Processing Cycle</a></h2>
    <p>All requests pass through <code>ap_process_request_internal()</code>
    in <code>request.c</code>, including subrequests and redirects. If a module
    doesn't pass generated requests through this code, the author is cautioned
    that the module may be broken by future changes to request
    processing.</p>

    <p>To streamline requests, the module author can take advantage
    of the hooks offered to drop out of the request cycle early, or
    to bypass core Apache hooks which are irrelevant (and costly in
    terms of CPU.)</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="parsing" id="parsing">The Request Parsing Phase</a></h2>
    <h3><a name="unescape" id="unescape">Unescapes the URL</a></h3>
      <p>The request's <code>parsed_uri</code> path is unescaped, once and only
      once, at the beginning of internal request processing.</p>

      <p>This step is bypassed if the proxyreq flag is set, or the
      <code>parsed_uri.path</code> element is unset. The module has no further
      control of this one-time unescape operation, either failing to
      unescape or multiply unescaping the URL leads to security
      reprecussions.</p>
    

    <h3><a name="strip" id="strip">Strips Parent and This Elements from the
    URI</a></h3>
      <p>All <code>/../</code> and <code>/./</code> elements are
      removed by <code>ap_getparents()</code>. This helps to ensure
      the path is (nearly) absolute before the request processing
      continues.</p>

      <p>This step cannot be bypassed.</p>
    

    <h3><a name="inital-location-walk" id="inital-location-walk">Initial URI Location Walk</a></h3>
      <p>Every request is subject to an
      <code>ap_location_walk()</code> call. This ensures that
      <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> sections
      are consistently enforced for all requests. If the request is an internal
      redirect or a sub-request, it may borrow some or all of the processing
      from the previous or parent request's ap_location_walk, so this step
      is generally very efficient after processing the main request.</p>
    

    <h3><a name="translate_name" id="translate_name">translate_name</a></h3>
      <p>Modules can determine the file name, or alter the given URI
      in this step. For example, <code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> will
      translate the URI's path into the configured virtual host,
      <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> will translate the path to an alias path,
      and if the request falls back on the core, the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> is prepended to the request resource.</p>

      <p>If all modules <code>DECLINE</code> this phase, an error 500 is
      returned to the browser, and a "couldn't translate name" error is logged
      automatically.</p>
    

    <h3><a name="map_to_storage" id="map_to_storage">Hook: map_to_storage</a></h3>
      <p>After the file or correct URI was determined, the
      appropriate per-dir configurations are merged together. For
      example, <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> compares and merges the appropriate
      <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> sections.
      If the URI is nothing more than a local (non-proxy) <code>TRACE</code>
      request, the core handles the request and returns <code>DONE</code>.
      If no module answers this hook with <code>OK</code> or <code>DONE</code>,
      the core will run the request filename against the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> and <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code> sections. If the request
      'filename' isn't an absolute, legal filename, a note is set for
      later termination.</p>
    

    <h3><a name="location-walk" id="location-walk">URI Location Walk</a></h3>
      <p>Every request is hardened by a second
      <code>ap_location_walk()</code> call. This reassures that a
      translated request is still subjected to the configured
      <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> sections.
      The request again borrows some or all of the processing from its previous
      <code>location_walk</code> above, so this step is almost always very
      efficient unless the translated URI mapped to a substantially different
      path or Virtual Host.</p>
    

    <h3><a name="header_parser" id="header_parser">Hook: header_parser</a></h3>
      <p>The main request then parses the client's headers. This
      prepares the remaining request processing steps to better serve
      the client's request.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">The Security Phase</a></h2>
    <p>Needs Documentation. Code is:</p>

    <div class="example"><pre>
switch (ap_satisfies(r)) {
case SATISFY_ALL:
case SATISFY_NOSPEC:
    if ((access_status = ap_run_access_checker(r)) != 0) {
        return decl_die(access_status, "check access", r);
    }

    if (ap_some_auth_required(r)) {
        if (((access_status = ap_run_check_user_id(r)) != 0)
            || !ap_auth_type(r)) {
            return decl_die(access_status, ap_auth_type(r)
                          ? "check user.  No user file?"
                          : "perform authentication. AuthType not set!",
                          r);
        }

        if (((access_status = ap_run_auth_checker(r)) != 0)
            || !ap_auth_type(r)) {
            return decl_die(access_status, ap_auth_type(r)
                          ? "check access.  No groups file?"
                          : "perform authentication. AuthType not set!",
                          r);
        }
    }
    break;

case SATISFY_ANY:
    if (((access_status = ap_run_access_checker(r)) != 0)) {
        if (!ap_some_auth_required(r)) {
            return decl_die(access_status, "check access", r);
        }

        if (((access_status = ap_run_check_user_id(r)) != 0)
            || !ap_auth_type(r)) {
            return decl_die(access_status, ap_auth_type(r)
                          ? "check user.  No user file?"
                          : "perform authentication. AuthType not set!",
                          r);
        }

        if (((access_status = ap_run_auth_checker(r)) != 0)
            || !ap_auth_type(r)) {
            return decl_die(access_status, ap_auth_type(r)
                          ? "check access.  No groups file?"
                          : "perform authentication. AuthType not set!",
                          r);
        }
    }
    break;
}</pre></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="preparation" id="preparation">The Preparation Phase</a></h2>
    <h3><a name="type_checker" id="type_checker">Hook: type_checker</a></h3>
      <p>The modules have an opportunity to test the URI or filename
      against the target resource, and set mime information for the
      request. Both <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> and
      <code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code> use this phase to compare the file
      name or contents against the administrator's configuration and set the
      content type, language, character set and request handler. Some modules
      may set up their filters or other request handling parameters at this
      time.</p>

      <p>If all modules <code>DECLINE</code> this phase, an error 500 is
      returned to the browser, and a "couldn't find types" error is logged
      automatically.</p>
    

    <h3><a name="fixups" id="fixups">Hook: fixups</a></h3>
      <p>Many modules are 'trounced' by some phase above. The fixups
      phase is used by modules to 'reassert' their ownership or force
      the request's fields to their appropriate values. It isn't
      always the cleanest mechanism, but occasionally it's the only
      option.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="handler" id="handler">The Handler Phase</a></h2>
    <p>This phase is <strong>not</strong> part of the processing in
    <code>ap_process_request_internal()</code>. Many
    modules prepare one or more subrequests prior to creating any
    content at all. After the core, or a module calls
    <code>ap_process_request_internal()</code> it then calls
    <code>ap_invoke_handler()</code> to generate the request.</p>

    <h3><a name="insert_filter" id="insert_filter">Hook: insert_filter</a></h3>
      <p>Modules that transform the content in some way can insert
      their values and override existing filters, such that if the
      user configured a more advanced filter out-of-order, then the
      module can move its order as need be.  There is no result code,
      so actions in this hook better be trusted to always succeed.</p>
    

    <h3><a name="hook_handler" id="hook_handler">Hook: handler</a></h3>
      <p>The module finally has a chance to serve the request in its
      handler hook. Note that not every prepared request is sent to
      the handler hook. Many modules, such as <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>,
      will create subrequests for a given URI, and then never serve the
      subrequest, but simply lists it for the user. Remember not to
      put required teardown from the hooks above into this module,
      but register pool cleanups against the request pool to free
      resources as required.</p>
    
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                 developer/thread_safety.html                                                                        100644       0       0        35615 11256641267  13746  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache 2.0 Thread Safety Issues - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>Apache 2.0 Thread Safety Issues</h1>


    <p>When using any of the threaded mpms in Apache 2.0 it is important
    that every function called from Apache be thread safe.  When linking in 3rd
    party extensions it can be difficult to determine whether the resulting
    server will be thread safe.  Casual testing generally won't tell you this
    either as thread safety problems can lead to subtle race conditons that
    may only show up in certain conditions under heavy load.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#variables">Global and static variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#errno">errno</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#functions">Common standard troublesome functions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#commonlibs">Common 3rd Party Libraries</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#liblist">Library List</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="variables" id="variables">Global and static variables</a></h2>
    <p>When writing your module or when trying to determine if a module or
    3rd party library is thread safe there are some common things to keep in
    mind.</p>

    <p>First, you need to recognize that in a threaded model each individual
    thread has its own program counter, stack and registers.  Local variables
    live on the stack, so those are fine.  You need to watch out for any
    static or global variables.  This doesn't mean that you are absolutely not
    allowed to use static or global variables.  There are times when you
    actually want something to affect all threads, but generally you need to
    avoid using them if you want your code to be thread safe.</p>
   
    <p>In the case where you have a global variable that needs to be global and
    accessed by all threads, be very careful when you update it.  If, for
    example, it is an incrementing counter, you need to atomically increment
    it to avoid race conditions with other threads.  You do this using a mutex
    (mutual exclusion). Lock the mutex, read the current value, increment it
    and write it back and then unlock the mutex.  Any other thread that wants
    to modify the value has to first check the mutex and block until it is
    cleared.</p>

    <p>If you are using <a href="http://apr.apache.org/">APR</a>, have a look
    at the <code>apr_atomic_<var>*</var></code> functions and the
    <code>apr_thread_mutex_<var>*</var></code> functions.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="errno" id="errno">errno</a></h2>
    <p>This is a common global variable that holds the error number of the
    last error that occurred. If one thread calls a low-level function that
    sets errno and then another thread checks it, we are bleeding error
    numbers from one thread into another.  To solve this, make sure your
    module or library defines <code>_REENTRANT</code> or is compiled with
    <code>-D_REENTRANT</code>. This will make errno a per-thread variable
    and should hopefully be transparent to the code. It does this by doing
    something like this:</p>

    <div class="example"><p><code>
      #define errno (*(__errno_location()))
    </code></p></div>

    <p>which means that accessing errno will call
    <code>__errno_location()</code> which is provided by the libc. Setting
    <code>_REENTRANT</code> also forces redefinition of some other functions
    to their <code><var>*</var>_r</code> equivalents and sometimes changes
    the common <code>getc</code>/<code>putc</code> macros into safer function
    calls.  Check your libc documentation for specifics.  Instead of, or in
    addition to <code>_REENTRANT</code> the symbols that may affect this are 
    <code>_POSIX_C_SOURCE</code>, <code>_THREAD_SAFE</code>,
    <code>_SVID_SOURCE</code>, and <code>_BSD_SOURCE</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="functions" id="functions">Common standard troublesome functions</a></h2>
    <p>Not only do things have to be thread safe, but they also have to be
    reentrant. <code>strtok()</code> is an obvious one. You call it the first
    time with your delimiter which it then remembers and on each subsequent
    call it returns the next token.  Obviously if multiple threads are
    calling it you will have a problem.  Most systems have a reentrant version
    of of the function called <code>strtok_r()</code> where you pass in an
    extra argument which contains an allocated <code>char *</code> which the
    function will use instead of its own static storage for maintaining
    the tokenizing state. If you are using <a href="http://apr.apache.org/">APR</a> you can use <code>apr_strtok()</code>.</p>

    <p><code>crypt()</code> is another function that tends to not be reentrant,
    so if you run across calls to that function in a library, watch out. On
    some systems it is reentrant though, so it is not always a problem. If
    your system has <code>crypt_r()</code> chances are you should be using
    that, or if possible simply avoid the whole mess by using md5 instead.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="commonlibs" id="commonlibs">Common 3rd Party Libraries</a></h2>
    <p>The following is a list of common libraries that are used by 3rd party
    Apache modules.  You can check to see if your module is using a potentially
    unsafe library by using tools such as <code>ldd(1)</code> and
    <code>nm(1)</code>. For <a href="http://www.php.net/">PHP</a>, for example,
    try this:</p>

    <div class="example"><p><code>
      % ldd libphp4.so<br />
      libsablot.so.0 =&gt; /usr/local/lib/libsablot.so.0 (0x401f6000)<br />
      libexpat.so.0 =&gt; /usr/lib/libexpat.so.0 (0x402da000)<br />
      libsnmp.so.0 =&gt; /usr/lib/libsnmp.so.0 (0x402f9000)<br />
      libpdf.so.1 =&gt; /usr/local/lib/libpdf.so.1 (0x40353000)<br />
      libz.so.1 =&gt; /usr/lib/libz.so.1 (0x403e2000)<br />
      libpng.so.2 =&gt; /usr/lib/libpng.so.2 (0x403f0000)<br />
      libmysqlclient.so.11 =&gt; /usr/lib/libmysqlclient.so.11 (0x40411000)<br />
      libming.so =&gt; /usr/lib/libming.so (0x40449000)<br />
      libm.so.6 =&gt; /lib/libm.so.6 (0x40487000)<br />
      libfreetype.so.6 =&gt; /usr/lib/libfreetype.so.6 (0x404a8000)<br />
      libjpeg.so.62 =&gt; /usr/lib/libjpeg.so.62 (0x404e7000)<br />
      libcrypt.so.1 =&gt; /lib/libcrypt.so.1 (0x40505000)<br />
      libssl.so.2 =&gt; /lib/libssl.so.2 (0x40532000)<br />
      libcrypto.so.2 =&gt; /lib/libcrypto.so.2 (0x40560000)<br />
      libresolv.so.2 =&gt; /lib/libresolv.so.2 (0x40624000)<br />
      libdl.so.2 =&gt; /lib/libdl.so.2 (0x40634000)<br />
      libnsl.so.1 =&gt; /lib/libnsl.so.1 (0x40637000)<br />
      libc.so.6 =&gt; /lib/libc.so.6 (0x4064b000)<br />
      /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x80000000)
    </code></p></div>

    <p>In addition to these libraries you will need to have a look at any
    libraries linked statically into the module. You can use <code>nm(1)</code>
    to look for individual symbols in the module.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="liblist" id="liblist">Library List</a></h2>
    <p>Please drop a note to <a href="http://httpd.apache.org/lists.html#http-dev">dev@httpd.apache.org</a>
    if you have additions or corrections to this list.</p>

    <table class="bordered"><tr class="header"><th>Library</th><th>Version</th><th>Thread Safe?</th><th>Notes</th></tr>
<tr><td><a href="http://aspell.sourceforge.net/">ASpell/PSpell</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://www.sleepycat.com/">Berkeley DB</a></td>
        <td>3.x, 4.x</td>
        <td>Yes</td>
        <td>Be careful about sharing a connection across threads.</td></tr>
<tr><td><a href="http://sources.redhat.com/bzip2/index.html">bzip2</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Both low-level and high-level APIs are thread-safe. However,
        high-level API requires thread-safe access to errno.</td></tr>
<tr class="odd"><td><a href="http://cr.yp.to/cdb.html">cdb</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.washington.edu/imap/">C-Client</a></td>
        <td> </td>
        <td>Perhaps</td>
        <td>c-client uses <code>strtok()</code> and
        <code>gethostbyname()</code> which are not thread-safe on most C
        library implementations.  c-client's static data is meant to be shared
        across threads. If <code>strtok()</code> and
        <code>gethostbyname()</code> are thread-safe on your OS, c-client
        <em>may</em> be thread-safe.</td></tr>
<tr class="odd"><td><a href="http://www.ijg.org/files/">libcrypt</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://expat.sourceforge.net/">Expat</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Need a separate parser instance per thread</td></tr>
<tr class="odd"><td><a href="http://www.freetds.org/">FreeTDS</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.freetype.org/">FreeType</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://www.boutell.com/gd/">GD 1.8.x</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.boutell.com/gd/">GD 2.0.x</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://www.gnu.org/software/gdbm/gdbm.html">gdbm</a></td>
        <td> </td>
        <td>No</td>
        <td>Errors returned via a static <code>gdbm_error</code>
        variable</td></tr>
<tr><td><a href="http://www.imagemagick.org/">ImageMagick</a></td>
        <td>5.2.2</td>
        <td>Yes</td>
        <td>ImageMagick docs claim it is thread safe since version 5.2.2 (see <a href="http://www.imagemagick.com/www/changelog.html">Change log</a>).
        </td></tr>
<tr class="odd"><td><a href="http://www.enlightenment.org/p.php?p=about/efl&amp;l=en">Imlib2</a></td>
        <td> </td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.ijg.org/files/">libjpeg</a></td>
        <td>v6b</td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://mysql.com">libmysqlclient</a></td>
        <td> </td>
        <td>Yes</td>
        <td>Use mysqlclient_r library variant to ensure thread-safety.  For
            more information, please read <a href="http://dev.mysql.com/doc/mysql/en/Threaded_clients.html">http://dev.mysql.com/doc/mysql/en/Threaded_clients.html</a>.</td></tr>
<tr><td><a href="http://www.opaque.net/ming/">Ming</a></td>
        <td>0.2a</td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://net-snmp.sourceforge.net/">Net-SNMP</a></td>
        <td>5.0.x</td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.openldap.org/">OpenLDAP</a></td>
        <td>2.1.x</td>
        <td>Yes</td>
        <td>Use <code>ldap_r</code> library variant to ensure
        thread-safety.</td></tr>
<tr class="odd"><td><a href="http://www.openssl.org/">OpenSSL</a></td>
        <td>0.9.6g</td>
        <td>Yes</td>
        <td>Requires proper usage of <code>CRYPTO_num_locks</code>,
        <code>CRYPTO_set_locking_callback</code>,
        <code>CRYPTO_set_id_callback</code></td></tr>
<tr><td><a href="http://www.oracle.com/">liboci8 (Oracle 8+)</a></td>
        <td>8.x,9.x</td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://pdflib.com/">pdflib</a></td>
        <td>5.0.x</td>
        <td>Yes</td>
        <td>PDFLib docs claim it is thread safe; changes.txt indicates it
            has been partially thread-safe since V1.91: <a href="http://www.pdflib.com/products/pdflib-family/pdflib/">http://www.pdflib.com/products/pdflib-family/pdflib/</a>.</td></tr>
<tr><td><a href="http://www.libpng.org/pub/png/libpng.html">libpng</a></td>
        <td>1.0.x</td>
        <td>?</td>
        <td> </td></tr>
<tr class="odd"><td><a href="http://www.libpng.org/pub/png/libpng.html">libpng</a></td>
        <td>1.2.x</td>
        <td>?</td>
        <td> </td></tr>
<tr><td><a href="http://www.postgresql.org/docs/8.4/static/libpq-threading.html">libpq (PostgreSQL)</a></td>
        <td>8.x</td>
        <td>Yes</td>
        <td>Don't share connections across threads and watch out for
        <code>crypt()</code> calls</td></tr>
<tr class="odd"><td><a href="http://www.gingerall.com/charlie/ga/xml/p_sab.xml">Sablotron</a></td>
        <td>0.95</td>
        <td>?</td>
        <td /></tr>
<tr><td><a href="http://www.gzip.org/zlib/">zlib</a></td>
        <td>1.1.4</td>
        <td>Yes</td>
        <td>Relies upon thread-safe zalloc and zfree functions  Default is to
        use libc's calloc/free which are thread-safe.</td></tr>
</table>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                   dns-caveats.html                                                                                    100644       0       0        31123 11256641267  11335  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache ve DNS ile ilgili Konular - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache ve DNS ile ilgili Konular</h1>


    <p>Bu sayfanın konusu şöyle özetlenebilirdi: Yapılandırma dosyalarınızda
      DNS sorguları yapılmasını gerektirecek ayarlamalardan kaçınınız. Eğer
      yapılandırma dosyalarınızda DNS sorgusu yapılarak çözümlenebilecek
      adresler bulunursa sunucunuz beklenmedik davranışlar (hiç
      başlamayabilir) gösterebileceği gibi hizmet reddi veya hizmet
      hırsızlığı (bazı kullanıcıların diğerlerine giden sayfaları çalma
      olasılığı dahil) saldırılarına açık hale gelebilir.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#example">Basit Bir Örnek</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#denial">Hizmet Reddi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#main">"Ana Sunucu" Adresi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#tips">Bu Sorunlardan Kaçınmak için İpuçları</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#appendix">Ek: Ufuk Turu</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Basit Bir Örnek</a></h2>
    

    <div class="example"><p><code>
      &lt;VirtualHost falan.fesmekan.dom&gt;
      <span class="indent">
        ServerAdmin filanca@fesmekan.dom <br />
        DocumentRoot /siteler/fesmekan
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Apache’nin beklendiği gibi işlemesi için her sanal konak için iki
      veriye mutlaka ihtiyacı vardır: <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> ve sunucunun bağlantı kabul edip hizmet
      sunacağı en az bir IP adresi. Yukarıdaki örnekte IP adresi
      bulunmamaktadır, dolayısıyla Apache, <code>falan.fesmekan.dom</code>
      adresi için bir DNS sorgusu yapmak zorundadır. Eğer sunucu,
      yapılandırma dosyasını çözümlediği sırada bir sebeple DNS sunucusuna
      erişemezse bu sanal konak <em>yapılandırılmayacak</em> (hApache 1.2
      öncesinde sunucu hiç başlatılmazdı) ve bu sanal konağa yapılan
      isteklere yanıt verilemeyecektir.</p>

    <p><code>falan.fesmekan.dom</code>’un 192.168.2.1 IP adresine sahip
      olduğunu varsayarsak yapılandırma şöyle olurdu:</p>

    <div class="example"><p><code>
      &lt;VirtualHost 192.168.2.1&gt; <br />
      <span class="indent">
        ServerAdmin filanca@fesmekan.dom <br />
        DocumentRoot /siteler/fesmekan
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Ancak, bu sefer de bu sanal konağın sunucu ismini öğrenmek için
      Apache’nin bir ters DNS sorgusu yapması gerekecektir. Eğer bu sorgu
      başarısız olursa kısmi bir yapılandırmaya gidilir (Apache 1.2 öncesinde
      sunucu hiç başlatılmazdı). Eğer sanal konak isme dayalı ise sanal konak
      kısmen bile yapılandırılmaz. IP’ye dayalı sanal konaklar büyük oranda
      çalışır, fakat sunucu ismini içeren tam bir adres üretilmesini
      gerektiren bir durumda, sunucu geçerli bir adres üretemez.</p>

    <p>Her iki sorunu da çözen yapılandırma şöyle olurdu:</p>

    <div class="example"><p><code>
      &lt;VirtualHost 192.168.2.1&gt; <br />
      <span class="indent">
        ServerName falan.fesmekan.dom <br />
        ServerAdmin filanca@fesmekan.dom <br />
        DocumentRoot /siteler/fesmekan
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="denial" id="denial">Hizmet Reddi</a></h2>
    

    <p>Hizmet reddinin meydana gelebilecek (en az) iki türü vardır.
      Apache’nin 1.2 öncesi bir sürümünü kullanıyorsanız sanal
      konaklarınızdan herhangi biri için yukarıdaki iki sorgudan biri
      başarısız olursa sunucunuzu asla başlatamazsınız. Bazı durumlarda, DNS
      sorgularından alınacak yanıtlar sizin denetiminizde olmayabilir;
      örneğin <code>fesmekan.dom</code> müşterilerinizden birine aitse ve
      kendi DNS sunucuları varsa <code>falan.fesmekan.dom</code> kaydını
      silerek sunucunuzun hiç başlatılamamasına (1.2 öncesi) sebep
      olabilirler.</p>

    <p>Diğer türü biraz daha sinsidir. Şöyle bir yapılandırmanız olsun:</p>

    <div class="example"><p><code>
      &lt;VirtualHost falan.fesmekan.dom&gt;<br />
      <span class="indent">
        ServerAdmin filanca@fesmekan.dom <br />
        DocumentRoot /siteler/fesmekan
      </span>
      &lt;/VirtualHost&gt;<br />
      <br />
      &lt;VirtualHost misal.mesela.dom&gt;<br />
      <span class="indent">
        ServerAdmin falanca@mesela.dom<br />
        DocumentRoot /siteler/mesela<br />
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p><code>falan.fesmekan.dom</code>’a 192.168.2.1,
      <code>misal.mesela.dom</code>’a 192.168.2.2 atadığınızı fakat,
      <code>mesela.dom</code>’un DNS kaydının sizin denetiminizde olmadığını
      varsayalım. Bu yapılandırmayla, <code>mesela.dom</code>’u
      <code>fesmekan.dom</code>’a giden tüm trafiği çalabilecek duruma
      getirirsiniz. Bunu gerçekleştirmek için DNS kaydında
      <code>misal.mesela.dom</code>’a 192.168.2.1 adresinin atanması
      yeterlidir. Kendi DNS’lerine sahip olduklarından dolayı
      <code>misal.mesela.dom</code>’a istedikleri IP adresini atamaktan
      onları alıkoyamazsınız.</p>

    <p>192.168.2.1’e gelen isteklerin hepsine
      (<code>http://falan.fesmekan.dom/biryer</code> şeklinde yazılan
      adresler dahil) <code>mesela.dom</code> sanal konağınca hizmet
      sunulacaktır. Apache’nin gelen istekleri sunduğu sanal konaklarla nasıl
      eşleştirdiğini bilirseniz bunun sebebini kolayca anlarsınız. Bunu
      kabataslak açıklayan  <a href="vhosts/details.html">bir belgemiz
      mevcuttur</a>.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="main" id="main">"Ana Sunucu" Adresi</a></h2>
    

    <p>Apache 1.1’de <a href="vhosts/name-based.html">isme dayalı sanal konak
      desteği</a>ne ek olarak, Apache’nin, <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin
      çalıştığı makinenin IP adres(ler)ini de bilmeye ihtiyacı vardır. Bu
      adresi elde etmek için sunucu, ya sunucu genelinde geçerli <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> yönergesine bakar ya da bir C
      işlevi olan <code>gethostname</code>’i kullanır (işlev, komut
      isteminden <code>hostname</code> komutuna dönen yanıtın aynısını
      döndürür) ve ardından bu adresle ilgili olarak bir DNS sorgusu yapar.
      Bu sorgudan kaçınmanın henüz bir yolu yoktur.</p>

    <p>Eğer bu sorgunun (DNS sunucusunun çökmüş olması gibi bir nedenle)
      başarısız olabileceğinden korkuyorsanız, makine ismini ve IP adresini
      <code>/etc/hosts</code> dosyanıza yazabilirsiniz (Makinenizin düzgün
      olarak açılabilmesi için zaten bu kaydı yapmış olmanız gerekir).
      Kullandığınız işletim sistemine bağlı olarak bu kaydın
      <code>/etc/resolv.conf</code> veya <code>/etc/nsswitch.conf</code>
      dosyasında bulunması gerekebilir.</p>

    <p>Herhangi bir nedenle sunucunuz bir DNS sorgusu yapmıyorsa veya
      yapmamalıysa, Apache’yi <code>HOSTRESORDER</code> ortam değişkenine
      "<code>local</code>" değerini atadıktan sonra çalıştırabilirsiniz. Bu
      tamamen işletim sistemine ve kullandığınız çözümleyici kütüphanelere
      bağlıdır. Ayrıca, ortamı denetlemek için <code class="module"><a href="./mod/mod_env.html">mod_env</a></code>
      kullanmıyorsanız, CGI’ler de bundan etkilenir. En iyisi işletim
      sisteminizin SSS belgelerini ve kılavuz sayfalarını okumaktır.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="tips" id="tips">Bu Sorunlardan Kaçınmak için İpuçları</a></h2>
    

    <ul>
      <li><code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> yönergelerinizde
        IP adresleri kullanınız.</li>

      <li><code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergelerinizde
        IP adresleri kullanınız.</li>

      <li>Tüm sanal konakların ayrı birer <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> yönergesi olsun.</li>

      <li>Hiçbir sayfa sunulmayan bir <code>&lt;VirtualHost
        _default_:*&gt;</code> sanal konağınız olsun.</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="appendix" id="appendix">Ek: Ufuk Turu</a></h2>
    

    <p>DNS ile ilgili durum hiç de arzu edildiği gibi değildir. Apache 1.2
      için, DNS sorguları başarısız olsa bile sunucunun başlatılabilmesini
      sağlamaya çalıştık, fakat belki yapabildiğimizden daha da iyisi
      mümkündür. Günümüz Genel Ağ’ında IP adresleri sık sık değiştiğinden
      yapılandırma dosyasına doğrudan IP adresini yazma gerekliliği asla arzu
      edilen davranış değildir.</p>

    <p>Yukarıda nasıl yapıldığı açıklanan hizmet hırsızlığı saldırısına karşı
      önlem olarak, normal sorgudan dönen IP adresine bir ters DNS sorgusu
      yapıp bu iki sonucu karşılaştırmak ve eşleşmeme durumunda sanal konağı
      iptal etmek bir çözüm olabilir. Fakat bunun mümkün olabilmesi için
      uygun bir ters DNS kaydına ihtiyaç vardır. (FTP sunucuları ve TCP
      sarmalayıcılar tarafından yapılan çifte ters DNS sorgusu kullanımından
      dolayı çoğu ağ yöneticisi bu konuda zaten bilgi sahibidir.)</p>

    <p>Her halükarda, IP adreslerinin kullanılmaması nedeniyle yapılan DNS
      sorgularının başarısız olması durumunda sanal konaklı bir sunucuyu
      düzgün bir şekilde başlatmak olası görünmektedir. Yapılandırmayı kısmen
      iptal etmek gibi kısmi çözümler, sunucudan beklentinizin ne olduğuna
      bağlı olarak sunucuyu hiç başlatmamaktan daha iyi olabilir.</p>

    <p>HTTP/1.1’de belirtildiği gibi <code>Host</code> başlığını göndererek
      işlem yapabilen tarayıcılar ve vekiller IP’ye dayalı sanal konak
      kullanımını tamamen ortadan kaldırmanın mümkün olabileceğini
      göstermektedir. Bu durumda yapılandırmanın çözümlenmesi aşamasında DNS
      sorgusu yapma gereği kalmayacaktır. Fakat 1997 Mart’ından beri önemli
      sunucular üzerinde bunların yeterince geniş bir uygulama alanı
      bulmadığı görülmektedir.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                             dso.html                                                                                            100644       0       0        45103 11256641267   7715  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Devingen Paylaşımlı Nesne Desteği - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Devingen Paylaşımlı Nesne Desteği</h1>


    <p>Apache HTTP Sunucusu modüler bir program olup, yönetici sadece bir
      grup modül seçerek sunucuya işlevsellik ekleyebilir. Modüller sunucunun
      derlenmesi sırasında doğrudan <code class="program"><a href="./programs/httpd.html">httpd</a></code> programının
      içinde derlenebileceği gibi Devingen Paylaşımlı Nesneler (DSO - Dynamic
      Shared Object) halinde <code class="program"><a href="./programs/httpd.html">httpd</a></code> programından ayrı
      olarak da derlenebilir. DSO modülleri sunucunun derlenmesi sırasında
      derlenebileceği gibi ayrı olarak derlenip daha sonra Apache Eklenti
      Aracı (Apache Extension Tool) <code class="program"><a href="./programs/apxs.html">apxs</a></code> programı
      kullanılarak sunucuya eklenebilir.</p>

    <p>Bu belgede DSO modüllerinin kullanımının yanında teorisine de
      değinilecektir.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">Gerçeklenim</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#usage">Kullanıcı Özeti</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#background">Artalan Bilgisi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#advantages">Getiriler ve Götürüler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="implementation" id="implementation">Gerçeklenim</a></h2>

<table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table>

    <p>Apache modüllerini yüklemek için DSO desteği, Apache çekirdeğine
      durağan olarak ilintilenerek derlenmiş olan <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>
      adında bir modül tarafından sağlanır. <code class="module"><a href="./mod/core.html">core</a></code> modülünden
      başka, bir DSO modülü olamayan tek modül <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>
      modülüdür. Hemen hemen tüm diğer Apache modülleri <a href="install.html">kurulum belgesinde</a> de açıklandığı gibi
      <code class="program"><a href="./programs/configure.html">configure</a></code> betiğinin
      <code>--enable-<em>modül</em>=shared</code> seçeneği her modül için ayrı
      ayrı belirtilerek birer DSO modülü olarak derlenebilir. Derlenmiş
      modüller <code>mod_filanca.so</code> biçeminde birer DSO ismi alırlar ve
      her biri istenirse <code>httpd.conf</code> dosyasında
      <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> modülünün <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesiyle belirtilerek sunucu başlatılırken
      veya yeniden başlatılırken sunucuya yüklenebilir.</p>

    <p>Apache modülleri için (özellikle üçüncü parti modüller için) DSO
      dosyası üretimini kolaylaştırmak amacıyla <code class="program"><a href="./programs/apxs.html">apxs</a></code>
      (<dfn>APache eXtenSion</dfn>) adında yeni bir destek programı
      kullanılmaktadır. Bu program Apache modüllerini Apache kaynak ağacından
      ayrı olarak derlemek için kullanılabilir. Fikir basittir: Apache
      derlenirken DSO dosyalarını derlemek için platforma bağımlı
      derleyici ve ilintileyici seçenekleri <code class="program"><a href="./programs/apxs.html">apxs</a></code>
      programının içine konur ve Apache’nin <code>make install</code> ile
      kurulumu sırasında Apache C başlık dosyaları da kurulur. Böylece
      kullanıcı Apache dağıtımının kaynak ağacına ihtiyaç duymadan ve
      platforma bağımlı derleyici ve ilintileyici seçeneklerini bilmek zorunda
      kalmadan istediği Apache modülünü <code class="program"><a href="./programs/apxs.html">apxs</a></code> programını
      kullanarak derleyebilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="usage" id="usage">Kullanıcı Özeti</a></h2>

    <p>Apache 2.x’in DSO özelliklerine bir giriş olarak burada kısaca bir
      bilgi vermekle yetinilecektir:</p>

    <ol>
      <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
        <em>özgün</em> Apache modülünü <code>mod_filanca.so</code> isminde bir
        DSO modülü olarak derlemek ve kurmak için şöyle yapılır:

<div class="example"><p><code>
  $ ./configure --prefix=/kurulum/yeri --enable-filanca=shared<br />
  $ make install
</code></p></div>
      </li>

      <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
        <em>üçüncü parti</em> Apache modülünü <code>mod_filanca.so</code>
        isminde bir DSO modülü olarak derlemek ve kurmak için şöyle yapılır:

<div class="example"><p><code>
$ ./configure --add-module=<var>modül-türü</var>:/bir/kurulum/yeri/mod_filanca.c \<br />
<span class="indent">
  --enable-filanca=shared<br />
</span>
$ make install
</code></p></div>
      </li>

      <li>Paylaşımlı modülleri <em>sonradan kurmak için</em> Apache şöyle
        yapılandırılır:

<div class="example"><p><code>
$ ./configure --enable-so<br />
$ make install
</code></p></div>
      </li>

      <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
        <em>üçüncü parti</em> Apache modülü <code>mod_filanca.so</code>
        isminde bir DSO modülü olarak Apache kaynak ağacının dışında
        <code class="program"><a href="./programs/apxs.html">apxs</a></code> kullanarak derlemek ve kurmak için şöyle
        yapılır:

<div class="example"><p><code>
$ cd /bir/kurulum/yeri<br />
$ apxs -c mod_filanca.c<br />
$ apxs -i -a -n filanca mod_filanca.la
</code></p></div>
      </li>
    </ol>

    <p>Tüm durumlarda derlenen paylaşımlı modülü Apache’nin etkin kılabilmesi
      için <code>httpd.conf</code> dosyasında o modül için bir <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi bulunmalıdır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="background" id="background">Artalan Bilgisi</a></h2>

    <p>Günümüzün Unix türevlerinde var olan şık bir mekanizma sayesinde
      çalıştırılabilir bir programın adres uzayına çalışma anında yüklenmek
      veya ilintilenmek üzere <em>Devingen Paylaşımlı Nesneler</em> (DSO -
      Dynamic Shared Object) adı verilen, özel bir biçem kullanarak kodlanmış
      program parçaları oluşturulabilir.</p>

    <p>Bu yükleme normalde iki yolla yapılabilir: Ya çalıştırılabilir
      programın başlatılması sırasında yüklenen <code>ld.so</code> adlı bir
      sistem programınının devingen olarak yüklenmesi ile ya da
      çalıştırılabilir programın içinden Unix yükleyicisine programsal sistem
      arayüzü sağlayan <code>dlopen()/dlsym()</code> sistem çağrılarının elle
      yapılması suretiyle.</p>

    <p>İlk yöntemde kullanılan DSO’lara genelde <em>paylaşımlı
      kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir ve
      bunların dosyaları <code>libfilanca.so</code> veya
      <code>libfilanca.so.1.2</code> biçiminde isimlendirilir. Belli bir
      sistem dizininde (normalde <code>/usr/lib</code>) bulunurlar ve derleme
      sırasında ilintileyici komutuna <code>-lfilanca</code> şeklinde
      belirtilerek çalıştırılabilir programla ilintilenirler. Doğrudan
      çalıştırılabilir koda eklenen bu kodlar Unix yükleyicisinin programın
      başlatılması sırasında kütüphaneyi <code>/usr/lib</code> altında
      <code>libfilanca.so</code> adıyla bulabilmesini sağlar. Kütüphanelerin
      aranacağı yerler ya <code>-R</code> gibi bir ilintileyici seçeneği ile
      koda eklenir ya da arama yolları <code>LD_LIBRARY_PATH</code> ortam
      değişkeni aracılığıyla yapılandırılır. Böylece çalıştırılabilir
      programda henüz çözümlenmemiş simgeler DSO içinde bulunarak
      çözümlenebilir.</p>

    <p>Çalıştırılabilir program içindeki simgelere normalde DSO içinden
      atıfta bulunulmaz (genel kod kütüphanesinin başka programlarca da
      kullanılması nedeniyle). Bu bakımdan DSO tarafında böyle bir çözümleme
      yapılmaz. Çalıştırılabilir program da DSO’daki simgeleri kendisi
      çözümlemeye uğraşmaz, bu işlemlerden tamamen Unix yükleyicisi
      (<code>ld.so</code>) sorumludur. (Aslında, <code>ld.so</code>’yu
      çağıracak kod, her çalıştırılabilir programın içine ilintilenmiş
      (durağan değil) başlatma kodunun bir parçasıdır.) Programlar tarafından
      ortaklaşa kullanılan kütüphanelerin devingen olarak yüklenmesinin sebebi
      basittir: Kütüphane kodu <code>libc.so</code> gibi bir sistem
      kütüphanesine bir kere kaydedilip disk alanından yer kazanılmış
      olur.</p>

    <p>İkinci yöntemde kullanılan DSO’lara yine <em>paylaşımlı
      kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir fakat
      bunların dosyaları geçerli kabule göre <code>filanca.so</code> gibi
      isimlendirilse de genelde keyfi olarak seçilen bir dosya uzantısı
      kullanılarak isimlendirilirler. Bu dosyalar genellikle programa özel bir
      dizinde dururlar ve bu dosyaları kullanacak olan çalıştırılabilir
      programla aralarında özdevimli olarak bağ kurulmamıştır. Bunun yerine,
      çalıştırılabilir program DSO’yu çalışma anında <code>dlopen()</code>
      sayesinde kendi adres uzayına ekler. Çalıştırılabilir program için
      DSO’daki simgeler bu sırada çözümlenmez. Özdevimli olarak devreye
      giren Unix yükleyicisi, (varsa) artakalan simgeleri, çalıştırılabilir
      ihraç edilen simge kümelerini (ve özellikle her yerde hazır ve nazır
      <code>libc.so</code> içindeki tüm simgeleri) kullanarak çözümler. Bu
      yolla DSO, çalıştırılabilir programın simge kümesi bilgilerini sanki
      kendisine baştan durağan olarak ilintilenmiş gibi ulaşabilir.</p>

    <p>Son olarak, DSO’nun programlama arayüzünün getirilerinden yararlanmak
      amacıyla çalıştırılabilir program, daha sonra dağıtım tabloları vb.
      yerlerde kullanmak üzere <code>dlsym()</code> üzerinden DSO’daki belli
      simgeleri çözümlemek zorundadır. Başka bir deyişle: Çalıştırılabilir
      program ihtiyaç duyduğu her simgeyi kullanmak için kendisi çözümleme
      yapmak zorundadır. Böyle bir mekanizmanın getirisi, programın isteğe
      bağlı parçalarının gerekli olana kadar yüklenmemesidir (böylece daha az
      bellek alanı kullanılır). Gerektiği zaman programın işlevselliğini
      arttırmak amacıyla bu parçalar devingen olarak programa
      yüklenebilir.</p>

    <p>DSO mekanizmasının bu basit gibi görünen işleyişinde zorluk içeren bir
      adım şudur (başkaları da olabilir): Bir programın işlevselliğini
      genişletmek için DSO kullanılırken (ikinci yöntem) çalıştırılabilir
      programdan DSO için simgelerin çözümlenmesi.  Zorluğun sebebi,
      "tersine çözümleme" yapılmasıdır; çalıştırılabilir programın simge
      kümesindeki DSO simgeleri kütüphane tasarımına aykırı bir şekilde
      çözümlenir ve bu uygulama tüm platformlarda hazır olarak
      desteklenmediği gibi standartlaşmış da değildir. Geçer uygulamada
      çalıştırılabilir programın evrensel simgeleri çoğunlukla yeniden dışa
      verilmez ve bu bakımdan bir DSO içinde kullanılmaları uygun değildir.
      Esas sorun, çalıştırılabilir bir programın işlevselliğini çalışma
      anında genişletmek için DSO kullanımı sırasında ilintileyicinin tüm
      evrensel simgeleri dışa vermesini zorlamanın bir yolunu bulmaktır.</p>

    <p>Paylaşımlı kütüphane yaklaşımı bu bakımdan türünün tek örneğidir,
      çünkü DSO mekanizması özellikle bunun için tasarlanmıştır, dolayısıyla
      işletim sisteminin sağladığı hemen hemen tüm kütüphaneler için
      kullanılabilir. Diğer taraftan, bir programın işlevselliğini
      genişletmek için paylaşımlı nesne kullanımı çoğu program tarafından
      kullanılan bir şey değildir.</p>

    <p>1998 itibariyle, DSO nesneleriyle çalışma anında çalıştırılabilir
      program işlevselliğini genişleten başlıca birkaç yazılım paketi vardır:
      Perl 5 (XS mekanizması ve DynaLoader modülü üzerinden), Netscape
      Sunucusu, vd. 1.3 sürümünden itibaren Apache de bu gruba katıldı. Çünkü
      Apache, modül kavramını zaten program işlevselliğini genişletmek için
      kullanıyordu ve temel işlevselliğine dış modülleri ilintilemek için
      dahili olarak dağıtım listesine dayalı bir yaklaşım kullanmaktaydı.
      Dolayısıyla Apache, modüllerini çalışma anında yüklemek için DSO
      kullanmaya baştan yazgılıydı.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="advantages" id="advantages">Getiriler ve Götürüler</a></h2>

    <p>Yukarıda bahsedilen DSO’ya dayalı özelliklerin getirileri
      şunlardır:</p>

    <ul>
      <li>Sunucu paketi çalışma anında daha esnektir çünkü, asıl sunucuyu
        oluşturan parçalar derleme sırasında <code class="program"><a href="./programs/configure.html">configure</a></code>
        seçenekleriyle birleştirilmek yerine <code>httpd.conf</code> içinde
        <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergeleri
        sayesinde çalışma anında birleştirilebilmektedir. Bu yolla, örneğin
        tek bir Apache kurulumuyla birbirinden farklı yapılandırmalara sahip
        çok sayıda sunucu çalıştırmak mümkündür. (standart veya SSL sürümü;
        basitleştirilmiş veya güçlendirilmiş sürümü [mod_perl, PHP3],
        vs.)</li>

      <li>Sunucu paketi kurulumdan sonra bile üçüncü parti modüllerle kolayca
        genişletilebilir. Bu özellikle, bir Apache temel paketinin yanında
        PHP3, mod_perl, mod_fastcgi gibi ek paketler oluşturan paket
        dağıtıcılarına büyük yarar sağlar.</li>

      <li>Yeni Apache modülleri için daha kolay prototip geliştirilebilir:
        Modül kaynak kodunu DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> çifti sayesinde
        Apache kaynak ağacının dışında derleyip modülün yeni bir sürümünü bir
        <code>apxs -i</code> komutunun ardından <code>apachectl
        restart</code> yaparak çalışan bir Apache sunucusunda denemek daha
        kolay hale getirilmiştir.</li>
    </ul>

    <p>DSO kullanımının götürüleri ise şunlardır:</p>

    <ul>
      <li>Her platformda hazır olarak desteklenmeme: Tüm işletim sistemleri
        bir programa devingen olarak kod yükleme becerisine sahip
        olmadığından DSO mekanizması her platformda kullanılamaz.</li>

      <li>İlk yüklemede %20 yavaşlama: Unix yükleyicisi simgeleri çözümlemek
        zorunda olduğundan sunucu ilk başlatılırken yaklaşık %20 daha yavaş
        faaliyete geçer.</li>

      <li>Çalışma sırasında % 5 yavaşlama: Konumdan bağımsız kodun (PIC -
        Position Independent Code) göreli adresleme için karmaşık oyunlara
        girmesi ve bunun mutlak adresleme kadar hızlı olmaması nedeniyle
        sunucu bazı platformlarda çalışma anında yaklaşık %5 daha yavaş
        çalışabilir.</li>

      <li>DSO'nun tüm modüller için uygun olmaması: DSO modülleri bazı
        platformlarda diğer DSO temelli kütüphanelerle ilintilenemediğinden
        (<code>ld -lfilanca</code>) DSO mekanizmasını tüm modül türleri için
        kullanamazsınız (örneğin a.out temelli platformlar bu işlevselliği
        ELF temelli platformlar kadar iyi sağlamaz). Başka bir deyişle, DSO
        dosyaları olarak derlenmiş modüllerin kullanabileceği simgeler ya
        Apache temel kodunda vardır ya Apache temel kodunun kullandığı C
        kütüphanesinde (<code>libc</code>) ve diğer durağan ve devingen
        kütüphanelerde vardır ya da konumdan bağımsız kodu içeren
        durağan kütüphane arşivlerinde (<code>libfilanca.a</code>)
        vardır. Diğer modülleri kullanmak için tek şansınız ya Apache
        çekirdeğinin modüle bir atıf içermesini sağlamak ya da modül kodunu
        <code>dlopen()</code> vasıtasıyla yüklemektir.</li>
    </ul>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                             env.html                                                                                            100644       0       0        64366 11256641267   7734  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache’de Ortam Değişkenleri - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache’de Ortam Değişkenleri</h1>


    <p>Apache HTTP Sunucusunda bilgiyi değişkenlerde saklamak için <em>ortam
      değişkenleri</em> adı verilen bir mekanizma bulunur. Saklanan bu bilgi
      erişim denetimi, günlük kaydı gibi çeşitli işlemleri denetlemekte
      kullanılabilir. Değişkenler ayrıca, CGI betikleri gibi harici
      uygulamalarla iletişim mekanizması olarak da kullanılabilir. Bu belgede
      bu değişkenler üzerindeki işlemlere ve kullanım şekillerine
      değinilmiştir.</p>

    <p>Bu değişkenlere <em>ortam değişkenleri</em> dense de işletim sisteminin
      ortam değişkenleri gibi değillerdir. Bunlar sadece Apache ortamında
      geçerli değişkenler olup işletim sisteminin bu değişkenlerden haberi
      olmaz. Sadece CGI betikleri ve SSI sayfaları gibi harici uygulamalar
      tarafından üretilen ortam değişkenleri sistem ortamının değişkenleri
      haline gelirler. İşletim sistemi ortamına çalışmakta olan sunucudan
      müdahale etmek isterseniz işletim sisteminizin kabuğu tarafından sağlanan
      standart ortam müdahale mekanizmalarını kullanmalısınız.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#setting">Ortam Değişkenlerinin Atanması</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#using">Ortam Değişkenlerinin Kullanımı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#special">Özel Amaçlı Ortam Değişkenleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#examples">Örnekler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="setting" id="setting">Ortam Değişkenlerinin Atanması</a></h2>
    
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>

    <h3><a name="basic-manipulation" id="basic-manipulation">Temel Ortamda Değişiklik</a></h3>
        

        <p>Apache ortamında bir ortam değişkenine müdahale etmenin en temel
          yolu hiçbir koşula tabi olmayan <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> yönergesini kullanmaktır. Bu değişkenleri Apache
          başlatılırken sistem ortam değişkenleri haline getirmek için
          <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> yönergesi
          kullanılabilir.</p>

    
    <h3><a name="conditional" id="conditional">İsteğe Bağlı Şartlı Atamalar</a></h3>
        

        <p>Esnekliği arttırmak için, <code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> modülü ile
          isteğin özelliklerine uygun olarak her isteğe özel değişkenler
          atayabilmek mümkün kılınmıştır. Örneğin, bir değişken sadece isteği
          yapan tarayıcıya özgü bir değerle veya sadece belli bir başlık
          alanınına bağlı olarak atanabilir. Daha da esnek bir mekanizma,
          ortam değişkeni atamak için <code>[E=...]</code> seçeneğinin
          kullanıldığı <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> modülünün <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> yönergesi ile
          sağlanmıştır.</p>

    
    <h3><a name="unique-identifiers" id="unique-identifiers">Eşsiz Betimleyiciler</a></h3>
        

        <p>Son olarak, <code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code> <code>UNIQUE_ID</code>
          ortam değişkenine her istek için o isteğin çok özel koşullar altında
          tüm diğer istekler arasında eşsizliğini garanti edecek bir değer
          atar.</p>

    
    <h3><a name="standard-cgi" id="standard-cgi">Standart CGI Değişkenleri</a></h3>
        

        <p>Apache yapılandırmasıyla atanan ve kabuğa aktarılan ortam
          değişkenlerinden başka <a href="http://www.w3.org/CGI/">CGI
          Belirtimi</a>nin gerektirdiği istekler hakkında temel bilgileri
          içeren ortam değişkenlerinin CGI betikleri ve SSI sayfalarınca
          atanabilmesi sağlanmıştır.</p>

    
    <h3><a name="caveats" id="caveats">Bazı Yetersizlikler</a></h3>
        

        <ul>
          <li>Standart CGI değişkenlerini ortam değişkenlerine müdahale
            yönergelerini kullanarak değiştirmek veya geçersiz kılmak mümkün
            değildir.</li>

          <li>CGI betiklerini çalıştırmak için <code class="program"><a href="./programs/suexec.html">suexec</a></code>
            kullanıldığında ortam, CGI betikleri çalıştırılmadan önce
            <em>güvenilir</em> değişkenler kalacak şekilde temizlenir.
            <em>Güvenilir</em> değişken listesi <code>suexec.c</code> içinde
            derleme sırasında tanımlanır.</li>

          <li>Taşınabilirlik adına, ortam değişkenlerinin isimleri sadece
            harfler, rakamlar ve alt çizgi imlerini içerebilir. Bunlara ek
            olarak ismin ilk karakteri bir rakam olmamalıdır. Değişkenler CGI
            betiklerine ve SSI sayfalarına aktarılırken bu sınırlamalara uygun
            olmayan karakterlerin yerlerine alt çizgi imleri konur.</li>

          <li>İsteklerin işleme konması sırasında <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> yönergesi geç çalıştırılır,
            yani <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> ve
            <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> gibi
            yönergeler <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> ile
            atanan değişken değerlerini görmezler.</li>
        </ul>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">Ortam Değişkenlerinin Kullanımı</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>

    <h3><a name="cgi-scripts" id="cgi-scripts">CGI Betikleri</a></h3>
        

        <p>Ortam değişkenlerinin başlıca amaçlarından biri CGI betikleriyle
          iletişim kurmaktır. Yukarıda bahsedildiği gibi CGI betiklerine
          aktarılan ortam Apache yapılandırmasında atanan değişkenlere ek
          olarak istek hakkında standart temel bilgileri de içerir. Bu konuda
          ayrıntılı bilgi edinmek için <a href="howto/cgi.html">CGI
          Öğreticisi</a>ne bakabilirsiniz.</p>

    
    <h3><a name="ssi-pages" id="ssi-pages">SSI Sayfaları</a></h3>
        

        <p>Sunucu tarafında <code class="module"><a href="./mod/mod_include.html">mod_include</a></code> modülünün
          <code>INCLUDES</code> süzgeci ile yorumlanan SSI sayfalarında ortam
          değişkenleri <code>echo</code> elemanı ile basılabilir ve sayfayı
          isteğin özelliklerine uygun olarak oluşturmak için ortam
          değişkenleri akış denetim elemanları içinde kullanılabilir. Apache
          ayrıca, yukarıda bahsedildiği gibi standart CGI ortam değişkenli SSI
          sayfalarını da sağlayabilmektedir. Daha ayrıntılı bilgi edinmek için
          <a href="howto/ssi.html">SSI Öğreticisi</a>ne bakabilirsiniz.</p>

    
    <h3><a name="access-control" id="access-control">Erişim Denetimi</a></h3>
        

        <p><code>allow from env=</code> ve <code>deny from env=</code>
          yönergeleri sayesinde ortam değişkenlerine dayalı olarak sunucuya
          erişim denetim altında tutulabilir. Bunlar <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> yönergesi ile birlikte
          kullanılmak suretiyle sunucuya erişim isteğin özelliklerine bağlı
          olarak daha esnek bir tarzda denetlenebilir. Örneğin, belli bir
          tarayıcının sunucuya erişimi bu yönergelerle engellenebilir.</p>

    
    <h3><a name="logging" id="logging">Şartlı Günlük Kaydı</a></h3>
        

        <p>Ortam değişkenleri <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesinin <code>%e</code> seçeneği
          kullanılarak erişim günlüğüne kaydedilebilir. Bundan başka,
          <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi
          sayesinde isteklerin günlüğe kaydedilip kaydedilmeyeceğine ortam
          değişkenlerine dayalı olarak karar verilmesi sağlanabilir. Bunlar
          <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> yönergesi ile
          birlikte kullanılmak suretiyle günlük kayıtları isteğin
          özelliklerine bağlı olarak daha esnek bir tarzda denetlenebilir.
          Örneğin, <code>gif</code> uzantılı dosyalar için yapılan isteklerin
          günlüğe kaydedilmemesi veya sadece alt ağınızın dışından gelen
          isteklerin günlüğe kaydedilmesini isteyebilirsiniz.</p>

    
    <h3><a name="response-headers" id="response-headers">Şartlı Yanıt Başlıkları</a></h3>
        

        <p><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code> yönergesi belli
          bir yanıt başlığının istemciye gönderilip gönderilmeyeceğine belli
          bir ortam değişkeninin varlığına bakarak karar vermek için
          kullanılabilir. Böylece örneğin, belli bir başlığın istemciye
          gönderilmesine istemciden belli bir başlığın alınıp alınmadığına
          bağlı olarak karar verilebilir.</p>

    

    <h3><a name="external-filter" id="external-filter">Harici Süzgeçlerin Etkinleştirilmesi</a></h3>
        

        <p><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> tarafından yapılandırılan harici
          süzgeçler <code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code> yönergesinin <code>disableenv=</code> ve
          <code>enableenv=</code> seçenekleri kullanılarak bir ortam
          değişkenine bağlı olarak etkinleştirilebilir.</p>
    

    <h3><a name="url-rewriting" id="url-rewriting">URL Kurgulaması</a></h3>
        

        <p><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
          yönergesinin <em>SınamaDizgesi</em> olarak kullanılan
          <code>%{ENV:<em>değişken</em>}</code> biçemi
          <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> yeniden yazma motorunun ortam
          değişkenlerine bağlı kararlar almasını mümkün kılar. Yalnız şuna
          dikkat ediniz: <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>’ta <code>ENV:</code>
          öneki kullanılmadan belirtilen değişkenler ortam değişkenleri
          değillerdir. Onlar <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>’a özgü diğer
          modüllerden erişilemeyen özel değişkenlerdir.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="special" id="special">Özel Amaçlı Ortam Değişkenleri</a></h2>
    

        <p>Birlikte çalışabilirlik sorunları Apache’nin belli istemcilerle
          veri alışverişi sırasında davranışını değiştirmesini gerektirebilir.
          Genellikle <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> ve
          <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> yönergelerinden
          başka <code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
          gibi yönergelerle ortam değişkenleri atanarak bunu sağlayan
          mekanizmaların olabildiğince esnek davranabilmesi sağlanabilir.</p>

    <h3><a name="downgrade" id="downgrade"><code>downgrade-1.0</code></a></h3>
        

        <p>İstek, daha yüksek bir HTTP protokolüyle yapılmış olsa bile
          HTTP/1.0 isteği olarak ele alınır.</p>

    
    <h3><a name="force-gzip" id="force-gzip"><code>force-gzip</code></a></h3>
        
          <p><code>DEFLATE</code> süzgeci etkinse tarayıcının tercih ettiği
            kodlama koşulsuz olarak yoksayılarak sıkıştırılmış çıktı
            gönderilir.</p>
    
    <h3><a name="force-no-vary" id="force-no-vary"><code>force-no-vary</code></a></h3>
        

        <p>İstemciye gönderilmeden önce yanıttan <code>Vary</code> alanının
          çıkarılmasına sebep olur. Bazı istemciler bu alanı gerektiği gibi
          yorumlayamazlar, bu değişken atanarak bu sorunla karşılaşılmamaya
          çalışılır. Bu değişkenin atanması ayrıca
          <strong>force-response-1.0</strong> değişkeninin de atanmasına sebep
          olur.</p>

    
    <h3><a name="force-response" id="force-response"><code>force-response-1.0</code></a></h3>
        

      <p>HTTP/1.0 isteği yapan istemcilere HTTP/1.0 yanıtı verilmesini zorunlu
        kılar. AOL vekillerindeki bir sorun nedeniyle gerçeklenmiştir. Bazı
        HTTP/1.0 istemciler HTTP/1.1 yanıtlarında doğru davranmayabilirler; bu
        değişken atanarak bunların sorunları giderilebilir.</p>

    

    <h3><a name="gzip-only-text-html" id="gzip-only-text-html"><code>gzip-only-text/html</code></a></h3>
        

        <p>Bu değişkene "1" değeri atandığında <code>text/html</code>’den
          farklı içerik türleri için <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> modülü
          tarafından sağlanan <code>DEFLATE</code>  çıktı süzgeci iptal
          edilir. Sıkıştırılmış olarak saklanan dosyalar kullanıyorsanız bu
          değişkeni <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü de dikkate alır
          (kimliğine bakarak sadece gzip için değil, tüm kodlamalar için bunu
          yapar).</p>
    

    <h3><a name="no-gzip" id="no-gzip"><code>no-gzip</code></a></h3>

        <p>Bu değişken atandığında, <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> modülünün
          <code>DEFLATE</code> süzgeci kapatılır ve
          <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü kodlanmış kaynak teslimatını
          reddeder.</p>

    
    <h3><a name="no-cache" id="no-cache">no-cache</a></h3>
        <p><em>2.2.12'den sonraki sürümlerde kullanılabilmektedir.</em></p>
        
        <p>Atandığı takdirde, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> başka bir
          önbelleklenebilir yanıtı kaydetmeyecektir. Bu ortam değişkeni, bir
          yanıtın geçerli bir istek için evvelce önbelleğe alınmış olduğu
          anlamına gelmez.</p>

    

    <h3><a name="nokeepalive" id="nokeepalive"><code>nokeepalive</code></a></h3>
        

        <p>Bu değişken atandığında, <code class="directive"><a href="./mod/core.html#keepalive">KeepAlive</a></code> yönergesi iptal edilir.</p>

    

    <h3><a name="prefer-language" id="prefer-language"><code>prefer-language</code></a></h3>
        

        <p>Değer olarak <code>en</code>, <code>ja</code> veya
          <code>x-klingon</code> gibi bir dil kısaltması verilerek atanmışsa
          <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülünün normal davranışını
          değiştirerek belirtilen dilde bir teslimat yapılmaya çalışılır.
          Böyle bir belge yoksa normal <a href="content-negotiation.html">uzlaşım</a> süreci uygulanır.</p>

    

    <h3><a name="redirect-carefully" id="redirect-carefully"><code>redirect-carefully</code></a></h3>
        

        <p>İstemciye bir yönlendirme gönderirken sunucuyu daha dikkatli olmaya
          zorlar. Bu genellikle istemcinin yönlendirmeler konusunda sorunlu
          olduğu bilindiği takdirde yararlı olur. Bu değişkenin gerçeklenme
          sebebi, dizin kaynaklarına yönlendirmeler için DAV yöntemlerini
          kullanan Microsoft'un WebFolders yazılımındaki bir sorundur.</p>

    

   <h3><a name="suppress-error-charset" id="suppress-error-charset"><code>suppress-error-charset</code></a></h3>
       

    <p><em>2.0.54 sürümünden beri mevcuttur.</em></p>

    <p>Apache bir isteğe bir yönlendirme ile yanıt verdiğinde istemci
      yönlendirmeyi kendiliğinden yapmaz veya yapamazsa kullanıcıya yanıtla
      birlikte gönderilen metin gösterilir. Apache normal olarak bu metni
      ISO-8859-1 ile kodlar.</p>

    <p>Ancak, yönlendirmenin yapıldığı sayfa farklı bir karakter kümesine
      sahipse bazı tarayıcı sürümleri asıl sayfanın karakter kodlaması yerine
      yönlendirmenin kodlamasını kullanmaya çalışırlar. Bu özellikle Yunanca
      gibi dillerde hedef sayfanın hatalı yorumlanmasına yol açar.</p>

    <p>Bu ortam değişkeninin atanması Apache’nin yönlendirme için karakter
      kümesi belirtmemesini sağlamak suretiyle hatalı tarayıcıların hedef
      sayfayı yanlış karakter kodlamasıyla yorumlamasını önler.</p>

    <div class="warning">
      <h3>Güvenlik Uyarısı</h3>

      <p>Hata sayfalarının bir karakter kümesi belirtilmeksizin yollanması,
        HTTP/1.1 belirtimine uymayan ve karakter kümesini içeriğe bakarak
        tahmin etmeye çalışan tarayıcılarda (MSIE) karşı siteden betik
        saldırısı yorumuna sebep olabilir.  Girdi verisindeki UTF-7 içerik
        (istek betimleyici gibi) karşı siteden betik saldırılarını engellemek
        için tasarlanmış normal önceleme mekanizmalarıyla öncelenmeyeceği için
        böyle tarayıcılar UTF-7 karakter kodlaması kullanılarak kolayca
        aldatılabilir.</p>
    </div>

   

   <h3><a name="proxy" id="proxy"><code>force-proxy-request-1.0</code>,
    <code>proxy-nokeepalive</code>, <code>proxy-sendchunked</code> ve
    <code>proxy-sendcl</code>, <code>proxy-chain-auth</code>,
    <code>proxy-interim-response</code>, <code>proxy-initial-not-pooled</code>
    </a></h3>

   <p>Bu yönergeler <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> modülünün normal protokol
    davranışını değiştirirler. Daha ayrıntılı bilgi için
    <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> ve <code class="module"><a href="./mod/mod_proxy_http.html">mod_proxy_http</a></code>
    belgelerine bakınız.</p>
   

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    

    <h3><a name="misbehaving" id="misbehaving">Protokolü yanlış yorumlayan tarayıcıların davranışlarının
        değiştirilmesi</a></h3>
        

        <p>Önceki sürümlerde bilinen istemci davranışlarına karşı önlem olarak
          aşağıdaki satırların <code>httpd.conf</code> içinde bulunması
          önerilirdi. Fakat, böyle tarayıcılar artık ortalıkta görünmediğinden
          bu yapılandırmaya da artık gerek kalmamıştır.</p>

        <div class="example"><pre>
#
# Aşağıdaki yönergeler normal HTTP yanıt davranışını değiştirirler.
# İlk yönerge Netscape 2.x ve kendini öyle gösteren tarayıcılar için
# kalıcı bağlantıyı (keepalive) iptal eder. İkinci yönerge ise HTTP/1.1
# protokolü bozuk olan ve 301/302 durum kodlu yönlendirme yanıtları
# kullanıldığında kalıcı bağlantıları gerektiği gibi desteklemeyen
# Microsoft Internet Explorer 4.0b2 içindir.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#
# Aşağıdaki yönergeler HTTP/1.0 yanıtlarından başkasına yabancı olan
# tarayıcılara HTTP/1.1 yanıtlarının gönderilmesini iptal eder.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0</pre></div>

    
    <h3><a name="no-img-log" id="no-img-log">Resim isteklerinin erişim günlüğüne kaydedilmemesi</a></h3>
        

        <p>Bu örnek resim isteklerinin erişim günlüğüne yazılmasını engeller.
          Bu örnek değiştirilerek belli dizinlerin veya belli konaklardan
          gelen isteklerin günlüğe kaydedilmesini engellemek amacıyla da
          kullanılabilir.</p>

        <div class="example"><p><code>
          SetEnvIf Request_URI \.gif image-request<br />
          SetEnvIf Request_URI \.jpg image-request<br />
          SetEnvIf Request_URI \.png image-request<br />
          CustomLog logs/access_log common env=!image-request
        </code></p></div>

    
    <h3><a name="image-theft" id="image-theft">“Resim Hırsızlığı” için önlem alınması</a></h3>
        

        <p>Bu örnekte sunucunuzda bulunmayan sayfalarda sunucunuzdaki
          resimlerin kullanılmasının nasıl önleneceği gösterilmiştir. Bu
          yapılandırma önerilmemekle birlikte nadir durumlarda işe yarar. Tüm
          resimlerin <code>/siteler/resimler</code> dizini altında tutulduğu
          varsayılmıştır.</p>

        <div class="example"><p><code>
          SetEnvIf Referer "^http://filan\.fesmekan\.dom/" local_referal<br />
          # Referrer bilgisi göndermeyen tarayıcılara izin verelim<br />
          SetEnvIf Referer "^$" local_referal<br />
          &lt;Directory /siteler/resimler&gt;
          <span class="indent">
            Order Deny,Allow<br />
            Deny from all<br />
            Allow from env=local_referal
          </span>
          &lt;/Directory&gt;
        </code></p></div>

        <p>Bu teknik hakkında daha ayrıntılı bilgi edinmek için ServerWatch
          üzerindeki  "<a href="http://www.serverwatch.com/tutorials/article.php/1132731">Diğer sitelerin sizin resimlerinizle donatılmasını engellemek</a>"
          belgesine bakınız.</p>
    
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                          faq/index.html                                                                                      100644       0       0        15273 11256641267  11013  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Sıkça Sorulan Sorular - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Sıkça Sorulan Sorular</h1>



    <p>Bu belge geleneksel bir SSS’ten çok Apache HTTP Sunucusu ile
    ilgili sorunlarla karşılaştığınızda ne yapacağınızı gösteren bir rehber
    niteliğindedir.</p>

    <p>Daha geleneksel ama biraz eski tarihli bir SSS belgesi olarak <a href="http://httpd.apache.org/docs/misc/FAQ.html">Apache 1.3
    SSS</a>’sine bakabilirsiniz.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#support.what2do">“Neden ... yapamıyorum? Niçin ... çalışmıyor?” gibi
    sorular için</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#support.support">Destek için kime başvurayım?</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="support.what2do" id="support.what2do">“Neden ... yapamıyorum? Niçin ... çalışmıyor?” gibi
    sorular için</a></h2>
    

      <p>Apache sunucu yazılımınızla ilgili sorunlar yaşıyorsanız şu
      adımları izleyin:</p>

      <dl>
      <dt>Günlük kayıt dosyalarına bakın!</dt>
      <dd><p>Apache sorunları saptamaya ve size yardımcı olmaya çalışır. Çoğu
        durumda, günlük dosyalarına bir kaç ileti yazarak sunucu hataları için
        size bazı ayrıntıları sağlayacaktır. Bu genellikle sorunun sizin
        tarafınızdan teşhis edilmesi (dosya izinleri ve benzeri) ve düzeltilmesi
        için yeterli olur. Hata kayıtlarının tutulduğu günlük dosyalarının
        öntanımlı yeri <code>/usr/local/apache2/logs/error_log</code> olup
        sizin sunucunuzdaki yeri için yapılandırma dosyalarınızdaki <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code> yönergesine bakabilirsiniz.</p>

      <p>Genellikle başvurulan ilk yerlerden biri olarak yolunuz yardımlaşma
        listelerinden birine düşerse sizden ilk olarak biraz bilgi sağlamanız
        istenecektir. Bu bakımdan hataların yazıldığı günlük kayıt dosyalarını
        nerede bulacağınızı bilmelisiniz. Eğer yerlerinden emin değilseniz
        kullandığınız dağıtıma göre dosyaların yerlerini gösteren <a href="http://wiki.apache.org/httpd/DistrosDefaultLayout">wiki
        sayfası</a> size fikir verebilir.</p></dd>

      <dt>Wiki’yi inceleyin</dt>
      <dd><a href="http://wiki.apache.org/httpd/">Httpd Wiki</a>, çoğu sorunun
        çözümüne yardımcı olacak kılavuzlar içerir.</dd>

      <dt>Apache hata ayıklama veritabanına bakın</dt>
      <dd>Apache Grubuna bildirilen çoğu sorun <a href="http://httpd.apache.org/bug_report.html">hata ayıklama
        veritabanına</a> kaydedilir. Açık ya da kapalı, mevcut hata raporlarını
        incelemeden ve sorununuz hakkında kullanıcı destek listelerine (aşağıya
        bakınız) danışmadan lütfen yeni bir hata bildirimi
        <strong>yapmayın</strong>. Zaten raporlanmış bir sorunsa bir “ben de”
        veya “+1” raporu <em>eklemeyin</em>.</dd>

      <dt><a id="support.what2do.user-support" name="support.what2do.user-support">Bir kullanıcı destek listesine
        sorun</a></dt>
      <dd><p>Apache, bilgilerini gönüllü olarak paylaşan etkin bir kullanıcı
        topluluğuna sahiptir. Bu topluluğa katılarak sorularınıza ve
        sorunlarınıza genellikle en iyi ve en hızlı yanıtı alırsınız.</p>

      <p><a href="http://httpd.apache.org/userslist.html">Apache kullanıcıları
        eposta listesi</a></p>

      <p>Kullanıcı desteği ile ilgili olarak <a href="http://freenode.net">Freenode IRC</a> üzerindeki <a href="irc://irc.freenode.net/#httpd">#httpd</a> kanalı da
        kullanılabilir.</p>
      </dd>

      <dt>Lütfen hata bildirimi için hata ayıklama veritabanını kullanın!</dt>
      <dd><p>Eğer yukarıdaki adımlardan size uygun olanları izlemiş ve
        bir çare bulamamışsanız lütfen <a href="http://httpd.apache.org/bug_report.html">bir hata ayıklama
        bildirimi</a>nde bulunarak httpd geliştiricilerini sorun hakkında
        bilgilendirin.</p>

      <p>Eğer sorununuz sunucunun çökmesine ve bir ‘core’ üretilmesine sebep
        oluyorsa hatayı bildirirken lütfen (mümkünse) bir <a href="http://httpd.apache.org/dev/debugging.html">geriye doğru hata
        izleme raporu</a> ekleyin.</p>
      </dd>
      </dl>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="support.support" id="support.support">Destek için kime başvurayım?</a></h2>
      <p>Milyonlarca kullanıcı ve altmıştan az gönüllü geliştirici ile
        Apache için kişisel destek sağlayamıyoruz. Ücretsiz destek için
        yardımlaşma listelerine katılmanızı öneriyoruz (yukarı bakınız).</p>

      <p>Profesyonel ve ticari Apache desteği almak için bu tür destekleri
        sunan şirketlere başvurunuz.</p>
    </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                     filter.html                                                                                         100644       0       0        24427 11256641267  10423  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Süzgeçler - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Süzgeçler</h1>


    <p>Bu belge, Apache’de süzgeç kullanımı hakkındadır.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#intro">Apache 2’de Süzme İşlemi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#smart">Akıllı Süzme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#using">Süzgeçlerin Kullanımı</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="intro" id="intro">Apache 2’de Süzme İşlemi</a></h2> 
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code></li><li><code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_charset_lite.html">mod_charset_lite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_filter.html#filterchain">FilterChain</a></code></li><li><code class="directive"><a href="./mod/mod_filter.html#filterdeclare">FilterDeclare</a></code></li><li><code class="directive"><a href="./mod/mod_filter.html#filterprotocol">FilterProtocol</a></code></li><li><code class="directive"><a href="./mod/mod_filter.html#filterprovider">FilterProvider</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#addinputfilter">AddInputFilter</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#removeinputfilter">RemoveInputFilter</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#removeoutputfilter">RemoveOutputFilter</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilteroptions">ExtFilterOptions</a></code></li><li><code class="directive"><a href="./mod/core.html#setinputfilter">SetInputFilter</a></code></li><li><code class="directive"><a href="./mod/core.html#setoutputfilter">SetOutputFilter</a></code></li></ul></td></tr></table>

    <p>Apache 2.0 ve sonrasında mevcut olan Süzgeç Zinciri, uygulamaların
      nereden geldiğine bakmaksızın gelen ve giden verileri oldukça esnek ve
      yapılandırılabilir tarzda işlemesini mümkün kılar. Böylece, gelen veriyi
      bir takım ön işlemlerden geçirebilir, giden veriyi de son bir defa bazı
      işlemlere sokabiliriz. Bu işlem temel olarak geleneksel istek işleme
      aşamalarından bağımsızdır.</p>

    <p class="figure">
      <img src="images/filter_arch.tr.png" width="569" height="392" alt="Süzgeçler, İstek işleme eksenine dik bir veri eksenine peş peşe  yerleştirilebilir." />
    </p>

    <p>Standard Apache dağıtımıyla gelen süzgeç uygulamalarından bazıları:</p>

    <ul>
      <li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code>, sunucu taraflı içerik yerleştirmeyi
      gerçekler.</li>
      <li><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code>, SSL şifrelemesini gerçekler (https).</li>
      <li><code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code>, veri sıkıştırma/açma işlemlerini
      çalışma anında gerçekleştirir.</li>
      <li><code class="module"><a href="./mod/mod_charset_lite.html">mod_charset_lite</a></code>, karakter kümeleri arasında
      dönüşümü gerçekleştirir.</li>
      <li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code>, harici bir yazılımı bir süzgeç
      olarak çalıştırır.</li>
    </ul>

    <p>Apache, bunlardan başka, bayt dizilerinin elde edilmesi ve içeriğin
      bölünmesi gibi işlemleri gerçekleştirmek için bir takım dahili süzgeçler
      de  kullanabilir.</p>

    <p>Üçüncü parti süzgeç modülleri tarafından gerçeklenmiş çok geniş bir
      uygulama alanı mevcuttur; <a href="http://modules.apache.org/">modules.apache.org</a> ve benzerlerinden temin edilebilecek bu tür
      modüllerden bazılarının uygulama alanları:</p>

    <ul>
      <li>HTML ve XML belgelerin işlenmesi ve yazılması</li>
      <li>XSLT dönüşümleri ve XInclude’lar</li>
      <li>XML İsim-alanı desteği</li>
      <li>HTML Formlarının çözümlenmesi ve sunucuya dosya yükleme</li>
      <li>Resim işleme</li>
      <li>PHP betikleri gibi zararlı olabilecek uygulamalardan korunma</li>
      <li>Metin düzenleme ve arama işlemleri</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="smart" id="smart">Akıllı Süzme</a></h2>
    <p class="figure">
      <img src="images/mod_filter_new.tr.png" width="423" height="331" alt="Farklı süzgeç üreticilerinin uygulamaları istek işlemenin durumuna  bağlı olarak akıllıca uygulanabilir." />
    </p>

    <p><code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code>, Apache 2.1 ve sonrasında mevcut olup,
      süzgeç zincirinin çalışma anında devingen olarak yapılandırılabilmesini
      mümkün kılar. Böylece, örneğin, bir vekili, özgün sunucunun ne
      göndereceğini bilmeden HTML’yi bir HTML süzgeciyle yazmaya ve JPEG
      resimleri tamamen farklı bir süzgeçten geçirmeye ayarlayabilirsiniz. Bu,
      asıl içeriğe bağlı olarak çalışma anında içeriği farklı içerik
      sağlayıcılara dağıtan bir süzgeç düzeneği kullanılarak çalışır. Bir
      süzgeç, doğrudan zincire yerleştirilip koşulsuz olarak
      çalıştırılabileceği gibi bir içerik sağlayıcı gibi kullanılarak zincire
      devingen olarak yerleştirilebilir. Örneğin:</p>

    <ul>
      <li>Bir HTML işleme süzgeci sadece içerik text/html veya
      application/xhtml+xml olduğu takdirde çalışır.</li>
      <li>Bir sıkıştırma süzgeci sadece girdi sıkıştırılabilir nitelikteyse ve
      sıkıştırılmamışsa çalışır.</li>
      <li>Bir karakter kümesi dönüşüm süzgeci, bir metin belgesi istenen
      karakter kümesine sahip değilse zincire yerleştirilir.</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">Süzgeçlerin Kullanımı</a></h2>
    <p>Süzgeçler iki şekilde kullanılır: Basit ve Devingen.
      Genelde ikisinden biri kullanılır; karışık kullanılırsa istenmeyen
      sonuçlara yol açabilir (ise de, basit girdi süzme ile çıktı süzme işlemi
      basit olsun olmasın karışık kullanılabilir).</p>

    <p>Basit yol, girdi süzgeçlerini yapılandırmanın tek yoludur ve bir
      durağan süzgeç zincirinin gerektiği yerlerde çıktı süzgeçleri için
      yeterlidir. İlgili yönergeler:
      <code class="directive"><a href="./mod/core.html#setinputfilter">SetInputFilter</a></code>,
      <code class="directive"><a href="./mod/core.html#setoutputfilter">SetOutputFilter</a></code>,
      <code class="directive"><a href="./mod/mod_mime.html#addinputfilter">AddInputFilter</a></code>,
      <code class="directive"><a href="./mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code>,
      <code class="directive"><a href="./mod/mod_mime.html#removeinputfilter">RemoveInputFilter</a></code> ve
      <code class="directive"><a href="./mod/mod_mime.html#removeoutputfilter">RemoveOutputFilter</a></code>.</p>

    <p>Devingen yol, <code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code> belgesinde açıklandığı gibi,
      çıktı süzgeçlerinin hem durağan hem de esnek ve devingen olarak
      yapılandırılabilmesini mümkün kılar. İlgili yönergeler:
      <code class="directive"><a href="./mod/mod_filter.html#filterchain">FilterChain</a></code>,
      <code class="directive"><a href="./mod/mod_filter.html#filterdeclare">FilterDeclare</a></code> ve
      <code class="directive"><a href="./mod/mod_filter.html#filterprovider">FilterProvider</a></code>.</p>

    <p><code class="directive"><a href="./mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> yönergesi
      hala desteklenmekteyse de sorun çıkarabilmesi sebebiyle kullanımı artık
      önerilmemektedir. Onun yerine devingen yapılandırma kullanınız.</p>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                         glossary.html                                                                                       100644       0       0        67660 11256641267  11007  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Terim Sözlüğü - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Terim Sözlüğü</h1>


    <p>Bu sözlük, genelinde HTML sayfa sunumuna, özelinde Apache HTTP Sunucusuna
      özgü ortak terminolojinin bir kısmını içerir. Her kavram ile ilgili daha
      ayrıntılı bilgi bağlarla sağlanmıştır.</p>
  </div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="definitions" id="definitions">Tanımlar</a></h2>

  <dl>
    <dt><a name="algorithm" id="algorithm">Algoritma</a></dt>

    <dd>Bir sorunu sonlu sayıda adımda çözümlemek için uygulanan kurallar
      kümesi veya anlam belirsizliği içermeyen bir formül. Şifreleme için
      kullanılan algoritmalara <dfn>şifre</dfn> denir.
    </dd>

    <dt><a name="transportlayersecurity" id="transportlayersecurity">Aktarım Katmanı Güvenliği</a></dt>
    <dd>İngilizcesi: Transport Layer Security <a name="tls" id="tls">(TLS)</a></dd>
    <dd>TCP/IP ağları üzerinden genel iletişimin kimlik doğrulamalı ve şifreli
      yapılabilmesi için SSL’nin ardılı olarak Genel Ağ Mühendisliği Görev Gücü
      (IETF) tarafından oluşturulmuş protokol. TLS’nin 1. sürümü ile SSL’in 3.
      sürümü hemen hemen aynıdır.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="passphrase" id="passphrase">Anahtar Parolası</a></dt>
    <dd>Özel anahtar dosyalarını yetkisiz kişilerden koruyan sözcük veya
      cümle. Genellikle sadece <a class="glossarylink" href="./glossary.html#cipher" title="sözlüğe bakınız">şifreler</a>
      için kullanılan gizli şifreleme/şifre çözme anahtarını korur.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="apacheextensiontool" id="apacheextensiontool">Apache Eklenti
      Aracı</a> <a name="apxs" id="apxs">(apxs)</a></dt>
    <dd>İngilizcesi: APache eXtension Tool - apxs</dd>
    <dd><a class="glossarylink" href="./glossary.html#module" title="sözlüğe bakınız">Modül</a> kaynak kodlarının devinen
      paylaşımlı nesneler (<a class="glossarylink" href="./glossary.html#dso" title="sözlüğe bakınız">DSO</a>) halinde
      derlenmesine ve Apache Sunucusu içinde kurulmasına yardım eden bir Perl
      betiği.<br />Daha ayrıntılı bilgi için <code class="program"><a href="./programs/apxs.html">apxs</a></code> kılavuz
      sayfasına bakınız.
    </dd>

    <dt><a name="apacheportableruntime" id="apacheportableruntime">Apache Taşınabilir Arayüzü</a> <a name="apr" id="apr">(APR)</a></dt>
    <dd>İngilizcesi: Apache Portable Runtime - APR</dd>
    <dd>Sunucu ile işletim sistemi arasındaki temel arayüzleri oluşturan
      kütüphaneler kümesine verilen ad. APR, Apache HTTP Sunucusuna paralel
      bağımsız bir proje olarak geliştirilmektedir.<br />
      Bakınız: <a href="http://apr.apache.org/">Apache Taşınabilir Arayüzü
      Projesi</a>
    </dd>

    <dt><a name="context" id="context">Bağlam</a></dt>
    <dd><a class="glossarylink" href="./glossary.html#configurationfile" title="sözlüğe bakınız">Yapılandırma dosyaları</a>nda
      sadece belli türdeki <a class="glossarylink" href="./glossary.html#directive" title="sözlüğe bakınız">yönerge</a>lerin
      bulunmasına izin verilen bir bölge.<br />
      Bakınız: <a href="mod/directive-dict.html#Context">Apache Yönergelerini
      Açıklamak için Kullanılan Terimler</a>
    </dd>

    <dt><a name="symmetriccryptophraphy" id="symmetriccryptophraphy">Bakışımlı Şifreleme Tekniği</a></dt>
    <dd>Şifreleme ve şifre çözme için tek bir anahtarın kullanıldığı
      bir şifreleme tekniği.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="header" id="header">Başlık</a></dt>
    <dd>Bir <a class="glossarylink" href="./glossary.html#http" title="sözlüğe bakınız">HTTP</a> isteğinin parçası olarak,
      gönderilen yanıtta asıl içerikten önce yer alan ve içerik hakkında
      mecazlar içeren veri.
    </dd>

    <dt><a name="connect" id="connect">CONNECT</a></dt>
    <dd>Ham veri kanallarını HTTP üzerinden yönlendirmek için kullanılan bir HTTP <a class="glossarylink" href="./glossary.html#method" title="sözlüğe bakınız">yöntemi</a>. SSL protokolü gibi diğer protokolleri sarmalamakta kullanılabilir.
    </dd>

    <dt><a name="dynamicsharedobject" id="dynamicsharedobject">Devingen
      Paylaşımlı Nesne</a> <a name="dso" id="dso">(DSO)</a></dt>
    <dd>İngilizcesi: Dynamic Shared Object (DSO)</dd>
    <dd>İstek halinde yüklenebilen, Apache <code class="program"><a href="./programs/httpd.html">httpd</a></code>
      çalıştırılabilir dosyasından ayrı olarak derlenmiş <a class="glossarylink" href="./glossary.html#module" title="sözlüğe bakınız">modül</a>lerin ortak adı.<br />
      Bakınız: <a href="dso.html">Devingen Paylaşımlı Nesne Desteği</a>
    </dd>

    <dt><a name="plaintext" id="plaintext">Düz Metin</a></dt>
    <dd>Şifrelenmemiş metin.</dd>

    <dt><a name="regularexpresion" id="regularexpresion">Düzenli İfade</a>
      <a name="regex" id="regex">(Regex)</a></dt>
    <dd>Metin içinde bir şablon tanımlama yolu. Örneğin, “A harfi ile
      başlayan bütün sözcükler” veya “10 rakamlı telefon numaraları” ya da
      “Baş harfi Z olmayan ve iki virgül içeren cümleler” gibi. Düzenli
      ifadeler, Apache’de belli özniteliklere uygun dosya veya özkaynakları
      toplamak için esnek bir yol sağlamasından ötürü oldukça yararlıdır.
      Örneğin, “resimler” dizini altındaki dosyalardan .gif ve .jpg uzantılı
      olanları toplamak için “<code>/resimler/.*(jpg|gif)$</code>” düzenli
      ifadesi yazılabilir. Apache, <a href="http://www.pcre.org/">PCRE</a>
      kütüphanesi ile sağlanan Perl uyumlu düzenli ifadeleri kullanır.
    </dd>

    <dt><a name="accesscontrol" id="accesscontrol">Erişim Denetimi</a></dt>
    
    <dd>Ağ bölgelerine erişimin kısıtlanması. Apache bağlamında normal
      olarak belli <em>URL</em>’lere erişimi kısıtlamak şeklinde
      uygulanır.<br /> Bakınız:  <a href="howto/auth.html">Kimlik Doğrulama,
      Yetkilendirme ve Erişim Denetimi</a>
    </dd>

    <dt><a name="handler" id="handler">Eylemci</a></dt>
    <dd>Bir dosya istendiğinde uygulanacak eylemi Apache içinde gerçekleştiren
      nesne. Genellikle dosyalar, dosya türüne bağlı dolaylı eylemcilere
      sahiptir. Normalde tüm dosyalar sunucu tarafından sıradan birer dosya
      olarak işleme sokulduğu halde bazı belli dosyalar diğerlerinden ayrı
      ele alınır. Örneğin, <code>cgi-script</code> eylemcisi dosyaları
      <a class="glossarylink" href="./glossary.html#cgi" title="sözlüğe bakınız">CGI</a>’ler tarafından işlenebilir hale
      getirmek üzere işleme sokar.<br />
      Bakınız: <a href="handler.html">Apache Eylemcilerinin Kullanımı</a>
    </dd>

    <dt><a name="publickey" id="publickey">Genel Anahtar</a></dt>
    <dd><a class="glossarylink" href="./glossary.html#publickeycryptography" title="sözlüğe bakınız">Genel Anahtarlı
      Şifreleme Tekniği</a>nde, sahibinin yaptığı imzaları çözmeye ve
      sahibine gönderilen iletileri şifrelemeye yarayan genel erişime açık
      anahtar.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="publickeycryptography" id="publickeycryptography">Genel Anahtarlı Şifreleme Tekniği</a></dt>
    <dd>Şifreleme ve şifre çözme için iki ayrı anahtarın kullanıldığı
      bakışımsız şifreleme sistemlerinin konusu veya uygulaması. Bu amaçla
      kullanılan anahtarlar bir anahtar çiftinden oluşur. Genel Anahtarlı
      Şifrelemeye Bakışımsız Şifreleme de denir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="privatekey" id="privatekey">Gizli Anahtar</a></dt>
    <dd><a class="glossarylink" href="./glossary.html#publickeycryptography" title="sözlüğe bakınız">Genel Anahtarlı
      Şifreleme Tekniği</a>nde, giden iletileri imzalamak ve gelen
      iletilerin şifrelerini çözmek amacıyla kullanılan gizli anahtar.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="https" id="https">Güvenli Hiper Metin Aktarım Protokolü
      (HTTPS)</a></dt>
    <dd>İngilizcesi: The HyperText Transfer Protocol (Secure), (HTTPS)</dd>
    <dd>Güvenli Hiper Metin Aktarım Protokolü, Genel Ağ’da kullanılan standart
      şifreli iletişim mekanizmasıdır. Aslında HTTP protokolünün <a class="glossarylink" href="./glossary.html#ssl" title="sözlüğe bakınız">SSL</a> üzerinden gerçekleştirilmesinden başka bir
      şey değildir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="securesocketslayer" id="securesocketslayer">Güvenli Soket Katmanı</a></dt>
    <dd>İngilizcesi: Secure Sockets Layer <a name="ssl" id="ssl">(SSL)</a></dd>
    <dd>TCP/IP ağları üzerinden genel iletişimin kimlik doğrulamalı ve şifreli
      yapılabilmesi için Netscape Communications Corporation tarafından
      oluşturulmuş bir protokol. Günümüzde en çok <em>HTTPS</em>, yani SSL
      üzerinden Hiper Metin Aktarım Protokolü şeklinde kullanılmaktadır.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="hypertexttransferprotocol" id="hypertexttransferprotocol">Hiper Metin Aktarım Protokolü</a>
      <a name="http" id="hhtp">(HTTP)</a></dt>
    <dd>İngilizcesi: HyperText Transfer Protocol (HTTP)</dd>
    <dd>Genel Ağ’da kullanılan standart aktarım protokollerinden biri.
      Apache, <a href="http://ietf.org/rfc/rfc2616.txt">RFC 2616</a> ile
      tanımlanmış protokolün HTTP/1.1 olarak bilinen 1.1 sürümünü gerçekler.
    </dd>

    <dt><a name="htaccess" id="htaccess">.htaccess</a></dt>
    <dd>Belge dosyaları ağacı içine yerleştirilen bir <a class="glossarylink" href="./glossary.html#configurationfile" title="sözlüğe bakınız">yapılandırma dosyası</a> olup yerleştiği
      dizine ve o dizinin alt dizinlerine yapılandırma yönergeleri
      uygulanmasını sağlar. İsmine rağmen böyle bir dosyanın içerebileceği
      yönergeler erişim denetleme yönergeleri ile sınırlı değildir; hemen
      her tür yönergeyi içerebilir.<br />
      Bakınız: <a href="configuring.html">Yapılandırma Dosyaları</a>
    </dd>

    <dt><a name="httpd.conf" id="httpd.conf">httpd.conf</a></dt>
    <dd>Ana Apache <a class="glossarylink" href="./glossary.html#configurationfile" title="sözlüğe bakınız">yapılandırma
      dosyası</a>.  Dosya sistemindeki öntanımlı yeri
      <code>/usr/local/apache2/conf/httpd.conf</code> olup derleme
      sırasındaki yapılandırmayla veya çalışma anındaki yapılandırmayla
      başka bir yer belirtilebilir.<br />
      Bakınız: <a href="configuring.html">Yapılandırma Dosyaları</a>
    </dd>

    <dt><a name="export-crippled" id="export-crippled">İhracat Engelli</a></dt>
    <dd>İngilizcesi: Export-Crippled</dd>
    <dd>Amerika Birleşik Devletlerinin İhracat Yönetim Düzenlemelerine (EAR)
      uymak için şifreleme yoluyla sakatlanmış yazılım. İhracat engelli olması
      için şifrelenmiş yazılımları birer şifreli metin haline getiren şifre
      anahtarları küçük boyutlu olduğundan şifreleme zor
      kullanılarak kırılabilir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="messagedigest" id="messagedigest">İleti Özeti</a></dt>
    <dd>İngilizcesi: Message Digest</dd>
    <dd>Aktarım sırasında içeriğinin değişme olasılığı bulunan bir iletinin
      içeriğini doğrulamak için kullanılan bir <a class="glossarylink" href="./glossary.html#hash" title="sözlüğe bakınız">özet</a>.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="reverseproxy" id="reverseproxy">Karşı Vekil</a></dt>
    <dd>İstemciye kendini <em>asıl sunucu</em> imiş gibi gösteren bir
      <a class="glossarylink" href="./glossary.html#proxy" title="sözlüğe bakınız">vekil</a> sunucu. Güvenlik, yük dengelemesi
      gibi sebeplerle asıl sunucuyu istemcilerden gizlemek için yararlıdır.
    </dd>

    <dt><a name="authentication" id="authentication">Kimlik Doğrulama</a></dt>
    <dd>Sunucu, istemci veya kullanıcı gibi bir ağ öğesinin kimliğinin
      olumlanması.<br />Bakınız: <a href="howto/auth.html">Kimlik Doğrulama,
      Yetkilendirme ve Erişim Denetimi</a>
    </dd>

    <dt><a name="mime-type" id="mime-type">MIME türü</a></dt>
    <dd>Aktarılan belgenin çeşidini betimlemenin bir yolu. MIME, Türkçe’ye
      ‘Çok Amaçlı Genel Ağ Posta Eklentileri’ olarak çevrilebilecek olan
      "Multipurpose Internet Mail Extensions" sözcüklerinden türetilmiş bir
      kısaltmadır. MIME türleri bir bölü çizgisi ile ayrılmış bir ana ve bir
      alt belge türünün birleşiminden oluşur. <code>text/html</code>,
      <code>image/gif</code> ve <code>application/octet-stream</code> örnek
      olarak verilebilir. HTTP protokolünde MIME türleri
      <code>Content-Type</code> <a class="glossarylink" href="./glossary.html#header" title="sözlüğe bakınız">başlığında</a>
      aktarılır.<br />Bakınız: <a href="mod/mod_mime.html">mod_mime</a>
    </dd>

    <dt><a name="module" id="module">Modül</a></dt>
    <dd>Bir programın bağımsız parçalarından her biri. Apache işlevselliğinin
      çoğu yapılandırmaya dahil edilip edilmeyeceğine kullanıcı tarafından
      karar verilebilen modüllerden oluşur. Apache <code class="program"><a href="./programs/httpd.html">httpd</a></code>
      çalıştırılabiliri içinde derlenmiş modüllere <dfn>durağan modüller</dfn>
      adı verilirken ayrı bir yerde saklanan ve çalışma anında isteğe bağlı
      olarak yüklenebilen modüllere <dfn>devingen modüller</dfn> veya
      <a class="glossarylink" href="./glossary.html#dso" title="sözlüğe bakınız">DSO</a>’lar denir. Yapılandırmaya öntanımlı
      olarak dahil edilen modüllere <dfn>temel modüller</dfn> denir. Apache
      için kullanılabilecek modüllerin çoğu Apache HTTP Sunucusunun
      <a class="glossarylink" href="./glossary.html#tarball" title="sözlüğe bakınız">tar paketi</a> içinde dağıtılmaz; bunlara
      <dfn>üçüncü parti modüller</dfn> denir.<br />
      Bakınız: <a href="mod/index.html">Modül Dizini</a>
    </dd>

    <dt><a name="openssl" id="openssl">OpenSSL</a></dt>
    <dd>SSL/TLS için açık kaynak kodlu araç kiti.<br />Daha ayrıntılı bilgi
    için <a href="http://www.openssl.org/">http://www.openssl.org/</a>
    adresine bakınız.
    </dd>

    <dt><a name="commongatewayinterface" id="commongatewayinterface">Ortak Ağgeçidi Arayüzü</a> <a name="cgi" id="cgi">(CGI)</a></dt>
    <dd>İngilizcesi: Common Gateway Interface (CGI)</dd>
    <dd>Bir HTTP sunucusunun bir harici programa hizmet istekleri yapmasını
      mümkün kılan, sunucu ile bir harici program arasındaki bir arayüz
      standardı. Özgün arayüz <a href="http://hoohoo.ncsa.uiuc.edu/cgi/overview.html">NCSA</a> tarafından
      tanımlanmış olmakla birlikte ayrıca bir <a href="http://www.ietf.org/rfc/rfc3875">CGI RFC’si</a> de vardır.<br />
      Bakınız: <a href="howto/cgi.html">CGI ile Devingen İçerik</a>
    </dd>

    <dt><a name="environmentvariable" id="environmentvariable">Ortam Değişkeni</a> <a name="env-variable" id="env-variable">(ortam-değişkeni)</a></dt>
    <dd>İşletim sistemi kabuğu tarafından yönetilen ve programlar arasında
      bilgi alışverişi amacıyla kullanılan isimli değişkenler. Ayrıca,
      Apache de ortam değişkenleri olarak tanımlanabilecek dahili değişkenler
      içerir fakat bunlar kabuk ortamında değil dahili Apache yapıları içinde
      saklanır.<br />
      Bakınız: <a href="env.html">Apache Ortam Değişkenleri</a>
    </dd>

    <dt><a name="session" id="session">Oturum</a></dt>
    <dd>Bir iletişimin bağlamsal bilgileri.</dd>

    <dt><a name="hash" id="hash">Özet</a></dt>
    <dd>Uzunluğu değişebilen bir dizgenin belli bir durumuna ilişkin sabit
      uzunlukta bir dizge üretmek için kullanılan geri dönüşümsüz bir
      algoritma. Algoritmaya girdi olan farklı uzunluktaki dizgeler (özet
      işlevine bağlı olarak) aynı uzunlukta farklı özetler üretir.
    </dd>

    <dt><a name="virtualhosting" id="virtualhosting">Sanal Konaklık</a></dt>
    <dd>Tek bir Apache sunucusundan çok sayıda site sunulması. <em>IP tabanlı
      sanal konaklık</em>ta siteler birbirlerinden IP adreslerine göre
      ayrılırken, <em>isim tabanlı sanal konaklık</em>ta siteler aynı IP
      adresinden kendi isimleriyle sunulabilirler.<br />
      Bakınız: <a href="vhosts/index.html">Apache Sanal Konak Belgeleri</a>
    </dd>

    <dt><a name="digitalsignature" id="digitalsignature">Sayısal İmza</a></dt>
    <dd>Bir sertifikayı veya bir dosyayı doğrulamakta kullanılan şifreli bir
      metin. Bir imza <a class="glossarylink" href="./glossary.html#certificationauthority" title="sözlüğe bakınız">Sertifika
      Makamı</a> tarafından bir <em>sertifikaya</em> gömülü olan
      <em>genel anahtardan</em> bir özet üretilerek oluşturulur. İmza şifresi
      sadece <em>sertifika</em> sahibi ağ öğesinin kimliğini doğrulayacak
      SM’nin genel anahtarı kullanılarak çözülebilir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="certificate" id="certificate">Sertifika</a></dt>
    <dd>Sunucu, istemci gibi ağ öğelerinin kimliğini kanıtlamakta kullanılan
      bir veri kaydı. Bir sertifika, sertifika sahibi (buna sertifikanın
      konusu da denir), sertifikayı imzalayan <a class="glossarylink" href="./glossary.html#certificationauthority" title="sözlüğe bakınız">Sertifika Makamı</a> (SM) (buna
      sertifika yayıncısı da denir), sertifika sahibinin <a class="glossarylink" href="./glossary.html#publickey" title="sözlüğe bakınız">genel anahtarı</a> ve SM tarafından üretilen imza
      gibi parçalardan oluşan X.509 bilgisi içerir. Ağ öğeleri bu imzaları SM
      sertifikalarını kullanarak doğrular.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="certificatsigningrequest" id="certificatsigningrequest">Sertifika İmzalama İsteği</a> <a name="csr" id="csr">(Sİİ)</a></dt>
    <dd>İngilizcesi: Certificate Signing Request (CSR)</dd>
    <dd>İmzasız bir sertifikayı  <a class="glossarylink" href="./glossary.html#certificationauthority" title="sözlüğe bakınız">Sertifika Makamı</a>na kendi SM <em>Sertifika</em>sının
      <a class="glossarylink" href="./glossary.html#privatekey" title="sözlüğe bakınız">özel anahtar</a>ı ile imzalaması
      için yapılan istek. Sİİ imzalanınca bir gerçek sertifika haline
      gelir.<br />Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="certificationauthority" id="certificationauthority">Sertifika Makamı</a> <a name="ca" id="ca">(SM)</a></dt>
    <dd>İngilizcesi: Certification Authority (CA)</dd>
    <dd>Ağ öğelerinin güvenilir olarak kimliklerinin doğrulanması için
      sertifikaları imzalayan güvenilir üçüncü şahıs. Diğer ağ öğeleri,
      sertifikalı bir öğenin kimliğini kanıtlayan bir SM’yi doğrulamak
      için imzayı sınayabilir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="modulemagicnumber" id="modulemagicnumber">Sihirli Modül
      Numarası</a> (<a name="mmn" id="mmn">SMN</a>)</dt>
    <dd>Sihirli Modül Numarası, modüllerin ikil uyumluluğu ile ilgili olarak
      Apache kaynak kodunda tanımlanmış bir sabittir. Apache dahili yapıları,
      uygulama programlama arayüzünün önemli parçaları ve işlev çağrıları artık
      ikil uyumluluğun garanti edilemeyeceği kadar değiştiği zaman SMN
      değiştirilir. Bir SMN değişikliğinde ve bazen de sırf yeni bir Apache
      sürümü ile çalışmak icabettiğinde tüm üçüncü parti modüllerin en azından
      yeniden derlenmesi gerekir.
    </dd>

    <dt><a name="ssleay" id="ssleay">SSLeay</a></dt>
    <dd>Eric A. Young tarafından geliştirilmiş özgün SSL/TLS
      gerçeklenim kütüphanesi.
    </dd>

    <dt><a name="serversideincludes" id="serversideincludes">Sunucu Taraflı İçerik Yerleştirme</a></dt>
    <dd>İngilizcesi: Server Side Includes <a name="ssi" id="ssi">(SSI)</a></dd>
    <dd>İşlem yönergelerini HTML dosyalara gömme tekniği.<br />
      Bakınız: <a href="howto/ssi.html">Sunucu Taraflı İçerik Yerleştirmeye
      Giriş</a>
    </dd>

    <dt><a name="filter" id="filter">Süzgeç</a></dt>
    <dd>Sunucu tarafından alınan ve gönderilen veriye uygulanan bir işlem.
      Giriş süzgeçleri sunucuya istemci tarafından gönderilen veriyi işlerken
      çıkış süzgeçleri sunucu tarafından istemciye gönderilen belgeleri işler.
      Örneğin, <code>INCLUDES</code> çıkış süzgeci, belgeleri <a class="glossarylink" href="./glossary.html#ssi" title="sözlüğe bakınız">sunucu taraflı içerik</a> için işleme sokar.<br />
      Bakınız: <a href="filter.html">Süzgeçler</a>
    </dd>

    <dt><a name="cipher" id="cipher">Şifre</a></dt>
    <dd>Veri şifrelemek için kullanılan bir algoritma veya sistem. DES, IDEA
      veya RC4 örnek verilebilir.<br />
      Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="ciphertext" id="ciphertext">Şifreli Metin</a></dt>
    <dd>Bir <a class="glossarylink" href="./glossary.html#plaintext" title="sözlüğe bakınız">Düz Metin</a> bir
      <a class="glossarylink" href="./glossary.html#cipher" title="sözlüğe bakınız">Şifre</a>den geçirilince elde edilen
      sonuç.<br />Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>

    <dt><a name="fully-qualifieddomain-name" id="fully-qualifieddomain-name">Tam Alan Adı</a>
      <a name="fqdn" id="fqdn">(TAA)</a></dt>
    <dd>İngilizcesi: Fully-Qualified Domain-Name (FQDN)</dd>
    <dd>Bir IP adresiyle eşleşebilen, bir konak adıyla bir alan adının
      birleşiminden oluşan eşsiz bir ağ öğesi ismi. Örneğin,
      <code>httpd.apache.org</code> tam alan adında <code>httpd</code> bir konak
      adıyken <code>apache.org</code> bir alan adıdır.
    </dd>

    <dt><a name="tarball" id="tarball">Tar Paketi</a></dt>
    <dd><code>tar</code> uygulaması kullanılarak bir araya getirilmiş
      dosyalardan oluşan bir paket. Apache dağıtımları sıkıştırılmış tar
      arşivleri içinde veya pkzip kullanılarak saklanır.
    </dd>

    <dt><a name="uniformresourceidentifier" id="uniformresourceidentifier">Tektip Özkaynak Betimleyici</a></dt>
    <dd>İngilizcesi: Uniform Resource Identifier
      <a name="URI" id="URI">(URI)</a></dd>
    <dd>Soyut veya somut bir özkaynağı betimlemek için kullanılan bütünleşik
      bir karakter dizisi. Aslen <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a> tarafından tanımlanmıştır. Genel Ağ’da kullanılan URI’lerden
      genellikle <a class="glossarylink" href="./glossary.html#url" title="sözlüğe bakınız">URL</a>’ler olarak bahsedilir.
    </dd>

    <dt><a name="uniformresourcelocator" id="uniformresourcelocator">Tektip Özkaynak Konumlayıcı</a></dt>
    <dd>İngilizcesi: Uniform Resource Locator <a name="url" id="url">(URL)</a></dd>
    <dd>Genel Ağ üzerindeki bir özkaynağın ismi veya adresi. Aslen <a class="glossarylink" href="./glossary.html#uniformresourceidentifier" title="sözlüğe bakınız">Tektip Özkaynak Betimleyici</a>
      denilen terimin gayrı resmi karşılığıdır. URL’ler <code>http</code> veya
      <code>https</code> gibi bir şemayı takip eden bir konak adı ve bir dosya
      yolundan oluşurlar.  Örneğin, bu sayfanın URL’si
      <code>http://httpd.apache.org/docs/2.2/glossary.html</code> olurdu.
    </dd>

    <dt><a name="proxy" id="proxy">Vekil</a></dt>
    <dd><em>Asıl sunucu</em> ile istemci arasında aracılık yapan sunucu.
      İstemciden aldığı istekleri asıl sunucuya gönderip, ondan aldığı
      yanıtları istemciye gönderir. Aynı içeriğe birden fazla istemci talip
      olursa vekil sunucu bu istekleri her seferinde asıl sunucudan istemek
      yerine kendi deposundan karşılar, böylece yanıt zamanı kısalır.<br />
      Bakınız: <a href="mod/mod_proxy.html">mod_proxy</a>
    </dd>

    <dt><a name="configurationfile" id="configurationfile">Yapılandırma Dosyası</a></dt>
    <dd>Apache yapılandırmasını denetim altına alan <a class="glossarylink" href="./glossary.html#directive" title="sözlüğe bakınız">yönergeleri</a> içeren bir metin dosyası.<br />
      Bakınız: <a href="configuring.html">Yapılandırma Dosyaları</a>
    </dd>

    <dt><a name="configurationdirective" id="configurationdirective">Yapılandırma Yönergesi</a></dt>
    <dd>Bakınız: <a class="glossarylink" href="./glossary.html#directive" title="sözlüğe bakınız">Yönerge</a></dd>

    <dt><a name="directive" id="directive">Yönerge</a></dt>
    <dd>Belli Apache davranışlarından bir veya daha fazlasını denetim altına
      alan bir yapılandırma komutu. Yönergeler <a class="glossarylink" href="./glossary.html#configurationfile" title="sözlüğe bakınız">yapılandırma dosyalarına</a> yerleştirilir.<br />
      Bakınız: <a href="mod/directives.html">Yönerge Dizini</a>
    </dd>

    <dt><a name="method" id="method">Yöntem</a></dt>
    <dd><a class="glossarylink" href="./glossary.html#http" title="sözlüğe bakınız">HTTP</a> bağlamında, istemci tarafından
      istek satırında belirtilen, bir özkaynağa uygulanacak bir eylem. HTTP
      bağlamında belirtilebilecek yöntemlere örnek olarak <code>GET</code>,
      <code>POST</code> ve <code>PUT</code> verilebilir.
    </dd>

    <dt><a name="x.509" id="x.509">X.509</a></dt>
    <dd>SSL/TLS kimlik doğrulamasında kullanılmak üzere Uluslararası Telekom
      Birliği (ITU-T) tarafından önerilmiş bir kimlik doğrulama sertitifası
      şeması<br /> Bakınız: <a href="ssl/index.html">SSL/TLS Şifrelemesi</a>
    </dd>
</dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                handler.html                                                                                        100644       0       0        21273 11256641267  10547  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache Eylemcilerinin Kullanımı - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache Eylemcilerinin Kullanımı</h1>


    <p>Bu belgede Apache Eylemcilerinin kullanımı açıklanmıştır.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#definition">Eylemci Nedir?</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#examples">Örnekler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programmer">Yazılım Geliştirenler İçin</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="definition" id="definition">Eylemci Nedir?</a></h2>
    
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_actions.html">mod_actions</a></code></li><li><code class="module"><a href="./mod/mod_asis.html">mod_asis</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code></li><li><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></li><li><code class="module"><a href="./mod/mod_mime.html">mod_mime</a></code></li><li><code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code></li><li><code class="module"><a href="./mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_actions.html#action">Action</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#removehandler">RemoveHandler</a></code></li><li><code class="directive"><a href="./mod/core.html#sethandler">SetHandler</a></code></li></ul></td></tr></table>


    <p>Bir <em>eylemci</em> bir dosya çağrıldığında uygulanacak eylemin Apache
      dahilindeki gösterimidir. Genellikle dosyaların kendi türüne bağlı
      olarak örtük eylemcileri vardır. Normalde tüm dosyalar basitçe sunucu
      tarafından sunulurlar, fakat bazı dosya türleri normalden farklı şekilde
      ele alınırlar.</p>

    <p>Eylemciler, dosya türünden bağımsız olarak dosyanın bulunduğu yere veya
      dosya ismi uzantısına göre de yapılandırılabilirler. Gerek, zarif bir
      çözüm oluşuyla gerekse, hem dosya türünü hem de bir dosya ile ilişkili
      bir eylemciyi mümkün kılması sebebiyle bunun getirisi daha yüksektir.
      (Ayrıca, <a href="mod/mod_mime.html#multipleext">çok uzantılı
      dosyalara</a> da bakınız.)</p>

    <p>Eylemciler sunucu içinde derlenebileceği gibi bir modül olarak ya da
      <code class="directive"><a href="./mod/mod_actions.html#action">Action</a></code> yönergesi ile de
      sunucuya dahil edilebilirler. Standart dağıtımda bulunan yerleşik
      eylemciler şunlardır:</p>

    <ul>
      <li><strong>default-handler</strong>: Dosyayı, öntanımlı olarak durağan
        içeriği işlemekte kullanılan <code>default_handler()</code> işlevini
        kullanarak gönderir. (<code class="module"><a href="./mod/core.html">core</a></code>)</li>

      <li><strong>send-as-is</strong>: Dosyayı HTTP başlıklarıyla olduğu gibi
        gönderir. (<code class="module"><a href="./mod/mod_asis.html">mod_asis</a></code>)</li>

      <li><strong>cgi-script</strong>: Dosyayı bir CGI betiği olarak ele alır.
        (<code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code>)</li>

      <li><strong>imap-file</strong>: Dosyayı bir resim eşleme kuralları
        dosyası olarak çözümler. (<code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code>)</li>

      <li><strong>server-info</strong>: Sunucunun yapılandırma bilgisini
        döndürür. (<code class="module"><a href="./mod/mod_info.html">mod_info</a></code>)</li>

      <li><strong>server-status</strong>: Sunucunun durum raporunu döndürür.
        (<code class="module"><a href="./mod/mod_status.html">mod_status</a></code>)</li>

      <li><strong>type-map</strong>: Dosyayı içerik uzlaşımı için bir tür
        eşlem dosyası olarak çözümler. (<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>)</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    

    <h3><a name="example1" id="example1">Bir CGI betiği kullanarak durağan içeriğin değiştirilmesi</a></h3>
      

      <p>Aşağıdaki yönergeler sayesinde, <code>html</code> uzantılı dosyalar
        için yapılan istekler <code>footer.pl</code> CGI betiğininin
        çalıştırılmasına sebep olacaktır.</p>

      <div class="example"><p><code>
        Action add-footer /cgi-bin/footer.pl<br />
        AddHandler add-footer .html
      </code></p></div>

      <p>Bu yapılandırmayla, istenen belgenin özgün haliyle mi (yeri
        <code>PATH_TRANSLATED</code> ortam değişkenindedir) yoksa istenen
        değişiklikler veya eklemeler yapıldıktan sonra mı gönderileceğinden
        CGI betiği sorumlu olacaktır.</p>

    
    <h3><a name="example2" id="example2">HTTP başlıklı dosyalar</a></h3>
      

      <p>Aşağıdaki yönergeler kendi HTTP başlıklarını içeren dosyalar için
        kullanılan <code>send-as-is</code> eylemcisini etkinleştirmek amacıyla
        kullanılmıştır. <code>/siteler/htdocs/asis/</code> dizinindeki tüm
        dosyalar dosya ismi uzantılarına bakılmaksızın <code>send-as-is</code>
        eylemcisi tarafından işleme sokulacaktır.</p>

      <div class="example"><p><code>
        &lt;Directory /siteler/htdocs/asis&gt;<br />
        <span class="indent">SetHandler send-as-is</span>
        &lt;/Directory&gt;
      </code></p></div>

    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="programmer" id="programmer">Yazılım Geliştirenler İçin</a></h2>
    

    <p>Eylemci özellikleri gerçeklenirken kullanılmak üzere <a href="developer/API.html">Apache API</a>’ye bir ekleme yapılmıştır.
      Özellikle de, <code>request_rec</code> yapısına yeni bir kayıt
      eklenmiştir:</p>

    <div class="example"><p><code>
      char *handler
    </code></p></div>

    <p>Modülünüzün bir eylemciyi devreye sokmasını isterseniz, tek yapacağınız
      isteğin <code>invoke_handler</code> aşamasının hemen öncesinde
      <code>r-&gt;handler</code> alanına eylemcinin ismini atamak olacaktır.
      Eylemciler daha önce de bahsedildiği gibi bir içerik türü yerine bir
      eylemci ismi kullanılarak gerçeklenirler. Çok gerekli olmamakla
      birlikte, eylemciler için kullanılan adlandırma uzlaşımları gereğince,
      ismi oluşturan sözcükler, ortam türü isim alanını ihlal etmemek amacıyla
      bölü imleri ile değil tire imleri ile ayrılırlar.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                     howto/access.html                                                                                   100644       0       0        22441 11256641267  11531  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Access Control - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Access Control</h1>


    <p>Access control refers to any means of controlling access to any
    resource. This is separate from <a href="auth.html">authentication and authorization</a>.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Related Modules and Directives</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#host">Access control by host</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#env">Access control by environment variable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewrite">Access control with mod_rewrite</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">More information</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">Related Modules and Directives</a></h2>

<p>Access control can be done by several different modules. The most
important of these is <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>. Other modules
discussed in this document include <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> and
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="host" id="host">Access control by host</a></h2>
    <p>
    If you wish to restrict access to portions of your site based on the
    host address of your visitors, this is most easily done using
    <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>.
    </p>

    <p>The <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> and
    <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> directives let
    you allow and deny access based on the host name, or host
    address, of the machine requesting a document. The
    <code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code> directive goes
    hand-in-hand with these two, and tells Apache in which order to
    apply the filters.</p>

    <p>The usage of these directives is:</p>

    <div class="example"><p><code>
      Allow from <var>address</var>
    </code></p></div>

    <p>where <var>address</var> is an IP address (or a partial IP
    address) or a fully qualified domain name (or a partial domain
    name); you may provide multiple addresses or domain names, if
    desired.</p>

    <p>For example, if you have someone spamming your message
    board, and you want to keep them out, you could do the
    following:</p>

    <div class="example"><p><code>
      Deny from 10.252.46.165
    </code></p></div>

    <p>Visitors coming from that address will not be able to see
    the content covered by this directive. If, instead, you have a
    machine name, rather than an IP address, you can use that.</p>

    <div class="example"><p><code>
      Deny from <var>host.example.com</var>
    </code></p></div>

    <p>And, if you'd like to block access from an entire domain,
    you can specify just part of an address or domain name:</p>

    <div class="example"><p><code>
      Deny from <var>192.168.205</var><br />
      Deny from <var>phishers.example.com</var> <var>moreidiots.example</var><br />
      Deny from ke
    </code></p></div>

    <p>Using <code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code> will let you
    be sure that you are actually restricting things to the group that you want
    to let in, by combining a <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> and an <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> directive:</p>

    <div class="example"><p><code>
      Order deny,allow<br />
      Deny from all<br />
      Allow from <var>dev.example.com</var>
    </code></p></div>

    <p>Listing just the <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>
    directive would not do what you want, because it will let folks from that
    host in, in addition to letting everyone in. What you want is to let
    <em>only</em> those folks in.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="env" id="env">Access control by environment variable</a></h2>

    <p>
    <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>, in conjunction with
    <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code>, can be used to restrict access to
    your website based on the value of arbitrary environment variables.
    This is done with the <code>Allow from env=</code> and <code>Deny
    from env=</code> syntax.
    </p>

    <div class="example"><p><code>
    SetEnvIf User-Agent BadBot GoAway=1<br />
    Order allow,deny<br />
    Allow from all<br />
    Deny from env=GoAway
    </code></p></div>

    <div class="note"><h3>Warning:</h3>
    <p>Access control by <code>User-Agent</code> is an unreliable technique,
    since the <code>User-Agent</code> header can be set to anything at all,
    at the whim of the end user.</p>
    </div>

    <p>
    In the above example, the environment variable <code>GoAway</code>
    is set to <code>1</code> if the <code>User-Agent</code> matches the
    string <code>BadBot</code>. Then we deny access for any request when
    this variable is set. This blocks that particular user agent from
    the site.
    </p>

    <p>An environment variable test can be negated using the <code>=!</code>
    syntax:</p>

    <div class="example"><p>
    Allow from env=!GoAway
    </p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewrite" id="rewrite">Access control with mod_rewrite</a></h2>

<p>The <code>[F]</code> <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> flag causes a 403 Forbidden
response to be sent. Using this, you can deny access to a resource based
on arbitrary criteria.</p>

<p>For example, if you wish to block access to a resource between 8pm
and 6am, you can do this using <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

<div class="example"><p><code>
RewriteEngine On<br />
RewriteCond %{TIME_HOUR} &gt;20 [OR]<br />
RewriteCond %{TIME_HOUR} &lt;07<br />
RewriteRule ^/fridge - [F]
</code></p></div>

<p>This will return a 403 Forbidden response for any request after 8pm
or before 7am. This technique can be used for any criteria that you wish
to check. You can also redirect, or otherwise rewrite these requests, if
that approach is preferred.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="moreinformation" id="moreinformation">More information</a></h2>
    <p>You should also read the documentation for
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> and <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> which
    contain some more information about how this all works.
    <code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code> can also help in simplifying certain
    authentication configurations.</p>

    <p>See the <a href="auth.html">Authentication and Authorization</a>
    howto.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                               howto/auth.html                                                                                     100644       0       0        54637 11256641267  11245  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Nasıllar ve Öğreticiler</a></div><div id="page-content"><div id="preamble"><h1>Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi</h1>


    <p>Kimlik Doğrulama istediğiniz kişileri teyid etme işlemidir.
    Yetkilendirme ise kişilerin nereye gireceklerine ve hangi bilgiye
    ulaşacaklarına müsaade edilmesi işlemidir.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">İlgili modüller ve Yönergeler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Giriş</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Ön gereksinimler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Çalışmaya Başlama</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Birden çok kişiye izin vermek</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Olası Sorunlar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Diğer parola depolama yöntemleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Daha fazla bilgi</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">İlgili modüller ve Yönergeler</a></h2>

    <p>Kimlik Doğrulama ve yetkilendirme işlemi ile ilgili üç tür modül
    vardır. Genellikle her bir gruptan en az bir modül seçeceksiniz.</p>

    <ul>
      <li>Kimlik Doğrulama türü (bkz. <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> yönergesi)
        <ul>
          <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
          <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
        </ul>
      </li>

      <li>Kimlik Doğrulayıcı
        <ul>
          <li><code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code></li>                                                                           <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
          <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
          <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
          <li><code class="module"><a href="../mod/mod_authn_default.html">mod_authn_default</a></code></li>
          <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
          <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
        </ul>
      </li>
      <li>Yetkilendirme (bkz.
          <code class="directive"><a href="../mod/core.html#require">Require</a></code> yönergesi)
        <ul>
          <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
          <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
          <li><code class="module"><a href="../mod/mod_authz_default.html">mod_authz_default</a></code></li>
          <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
          <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
          <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
        </ul>
      </li>
    </ul>

    <p><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> modülü kimlik doğrulama ve
    yetkilendirme işlemlerinin ikisini birden gerçekleştirir.
    <code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code> modülü bir kimlik doğrulama 
    tedarikçisi olmadığı halde diğer kimlik doğrulama tedarikçilerinin
    yapılandırılabilmesini mümkün kılmak gibi bir esnekliğe sahiptir.</p>

    <p><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> modülü bu işlemleri sunucu adına, IP
    adresine ve isteğin karekteristiğine bağlı olarak gerçekleştirir.
    Ancak kimlik doğrulama sisteminin bir parçası değildir.</p>

    <p>Muhtemelen göz atmak isteyeceğiniz <a href="access.html">Erişim
    Denetimi</a> nasıl belgesi, sunucuya erişimlerin çeşitli yollarından
    bahsetmektedir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Giriş</a></h2>
    <p>Sitenizde sadece küçük bir grup insana hitap eden ya da hassas
    bilgileriniz varsa, bu makaledeki teknikleri kullanarak dilediğiniz
    kişilerin sadece dilediğiniz sayfaları görüntülemesini
    sağlayabilirsiniz.</p>

    <p>Bu makale sitenizin bazı parçalarını korumak için kullanacağınız
    "standart" yolları içermektedir.</p>

    <div class="note"><h3>Bilginize:</h3>
      <p>Eğer bilgileriniz gerçekten gizliliğe ihtiyaç duyuyorsa kimlik
      doğrulamasına ilaveten <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> modülünü de
      kullanabilirsiniz.</p>
    </div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="theprerequisites" id="theprerequisites">Ön gereksinimler</a></h2>
    
    <p>Bu makalede bahsi geçen yönergeler ya ana sunucu yapılandırma
    dosyasında (genellikle <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> bölümünde) ya da dizin içi
    yapılandırma dosyalarında (<code>.htaccess</code> dosyaları)
    bulunmak zorundadır.</p>

    <p>Eğer <code>.htaccess</code> dosyalarını kullanmayı
    tasarlıyorsanız, kimlik doğrulama yönergelerine bu dosyaların içine
    koymaya izin veren sunucu yapılandırmasına ihtiyacınız olacaktır.
    Bunun için, dizin içi yapılandırma dosyalarının içine hangi
    yönergelerin konacağını belirleyen <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> yönergesi kullanılır.</p>

    <p>Kimlik doğrulamadan sözettiğimize göre, aşağıda gösterilen
    şekilde bir <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> yönergesine ihtiyacınız olacaktır:</p>

    <div class="example"><p><code>
      AllowOverride AuthConfig
    </code></p></div>

    <p>Yönergeleri doğrudan ana sunucunun yapılandırma dosyasına
    koyacaksanız bu dosyaya yazma izniniz olmalıdır.</p>

    <p>Bazı dosyaların nerede saklandığını bilmek için sunucunun dizin
    yapısı hakkında biraz bilgi sahibi olmanız gerekmektedir. Bu çok da
    zor olmamakla birlikte bu noktaya gelindiğinde konuyu
    netleştireceğiz.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="gettingitworking" id="gettingitworking">Çalışmaya Başlama</a></h2>
    <p>Burada, sunucu üzerindeki bir dizini parolayla korumak için
    gereken temel bilgiler verilecektir.</p>

    <p>İlk olarak bir parola dosyası oluşturmalısınız. Bunu nasıl
    yapacağınız, özellikle, seçtiğiniz kimlik doğrulayıcıya göre
    değişiklik gösterir. Bunun üzerinde ileride daha fazla duracağız.
    Başlangıç için parolaları bir metin dosyasında tutacağız.</p>

    <p>Bu dosya belge kök dizini altında olmamalıdır. Böylece başkaları
    parola dosyasını indiremezler. Örneğin belgeleriniz
    <code>/usr/local/apache/htdocs</code> üzerinden sunuluyorsa parola
    dosyanızı <code>/usr/local/apache/passwd</code> dizininde
    tutabilirsiniz.</p>

    <p>Dosyayı oluşturmak için Apache ile gelen
    <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> uygulamasını kullanacağız. Bu uygulama
    Apache'nin kurulumunda belirtilen  <code>bin</code> dizininde
    bulunur. Eğer Apache'yi üçüncü parti paketlerden  kurduysanız,
    çalıştırılabilir dosyaların bulunduğu yollar üzerinde olmalıdır.</p>

    <p>Bir dosya oluşturmak için şunları yazın:</p>

    <div class="example"><p><code>
      htpasswd -c /usr/local/apache/passwd/passwords umut
    </code></p></div>

    <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> size parola soracaktır arkasından da
    teyit etmek için parolayı tekrar girmenizi isteyecektir:</p>

    <div class="example"><p><code>
      # htpasswd -c /usr/local/apache/passwd/passwords umut<br />
      New password: parolam<br />
      Re-type new password: parolam<br />
      Adding password for user umut
    </code></p></div>

    <p>Eğer <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> normal yollar üzerinde değilse
    çalıştırmak için dosyanın bulunduğu tam yeri belirtmeniz
    gerekecektir. Dosyanın öntanımlı kurulum yeri:
    <code>/usr/local/apache2/bin/htpasswd</code></p>

    <p>Bundan sonra, sunucuyu, parola sorması için ve kimlerin erişim
    izni olacağını belirlemek için yapılandıracaksınız. Bu işlemi
    <code>httpd.conf</code>dosyasını düzenleyerek ya da bir
    <code>.htaccess</code> dosyası kullanarak yapabilirsiniz. Örneğin,
    <code>/usr/local/apache/htdocs/secret</code> dizinini korumayı
    amaçlıyorsanız, şu yönergeleri kullanabilirsiniz. Bu yönergeleri
    <code>/usr/local/apache/htdocs/secret/.htaccess</code> dosyası içine
    veya <code>httpd.conf</code> içindeki &lt;Directory
    /usr/local/apache/htdocs/secret&gt; bölümüne koyabilirsiniz.</p>

    <div class="example"><p><code>
      AuthType Basic<br />
      AuthName "Gizli Dosyalar"<br />
      # (Aşağıdaki satırın kullanımı isteğe bağlıdır)<br />
      AuthBasicProvider file<br />
      AuthUserFile /usr/local/apache/passwd/passwords<br />
      Require user umut
    </code></p></div>

    <p>Bu yönergeleri tek tek inceleyelim.
    <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> yönergesi
    kullanıcının kimliğini doğrulamakta kullanılacak yöntemi seçer. En
    çok kullanılan yöntem <code>Basic</code>'tir ve bu yöntem
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> modülüyle gerçeklenmiştir. Temel
    (<code>Basic</code>) kimlik doğrulamasıyla gönderilen parolanın
    şifrelenmeyeceğini unutmayın. Bu yöntem, bu sebepten dolayı
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> eşliğinde kullanılmadığı sürece yüksek
    hassasiyete sahip bilgiler için kullanılmamalıdır. Apache bir başka
    kimlik doğrulama yöntemini daha destekler: <code>AuthType
    Digest</code>. Bu yöntem <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> tarafından
    gerçeklenmiştir ve çok daha güvenlidir. Güncel tarayıcılar, Özet
    (<code>Digest</code>) kimlik doğrulama yöntemini
    desteklemektedir.</p>

    <p><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> yönergesi
    ile kimlik doğrulamada kullanılacak <dfn>Saha</dfn> da
    belirtilebilir. Saha kullanımının, başlıca iki işlevi vardır.
    Birincisi, istemci sıklıkla bu bilgiyi kullanıcıya parola diyalog
    kutusunun bir parçası olarak sunar. İkincisi, belirtilen kimlik
    doğrulamalı alan için gönderilecek parolayı belirlerken istemci
    tarafından kullanılır.</p>

    <p>Örneğin, bir istemcinin <code>"Gizli Dosyalar"</code> alanında
    kimliği doğrulanmış olsun. Aynı sunucu üzerinde <code>"Gizli
    Dosyalar"</code> Sahası olarak belirlenmiş alanlarda aynı parola
    özdevinimli olarak yinelenecektir. Böylece parola bir kere girilerek
    aynı Sahayı paylaşan çok sayıda kısıtlanmış alana ulaşırken oluşacak
    gecikmeden kullanıcı korunmuş olur. Güvenlik gerekçelerinden dolayı,
    her sunucu adı değiştirilişinde istemcinin parolayı yeniden sorması
    gerekir.</p>

    <p><code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
    yönergesinin öntanımlı değeri <code>file</code> olduğundan, bu
    durumda, bu yönergenin kullanımı isteğe bağlıdır. Ancak, eğer kimlik
    doğrulaması için  <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ya da
    <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> gibi farklı bir kaynak seçecekseniz
    bu yönergeyi kullanmanız gerekecektir.</p>

    <p><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
    yönergesi <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> ile oluşturduğumuz parola
    dosyasının yerini belirtmek için kullanılır. Eğer çok sayıda
    kullanıcınız varsa her bir kullanıcıyı her kimlik doğrulama isteği
    için kimlik bilgilerini bir metin dosyasında aramak gayet yavaş
    olacaktır. Apache, kullanıcı bilgilerini hızlı bir veritabanı
    dosyasında depolama özelliğine de sahiptir. Bu amaçla,
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> modülünün
    <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>
    yönergesi kullanılabilir. Bu dosyalar <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code>
    programı ile oluşturulabilir ve değiştirilebilir.  <a href="http://modules.apache.org/">Apache modülleri
    Veritabanı</a> içindeki üçüncü parti modüllerinde çok sayıda
    başka kimlik doğrulama türü de vardır.</p>

    <p>Son olarak <code class="directive"><a href="../mod/core.html#require">Require</a></code>
    yönergesi, sunucunun bu bölgesine erişimine izin verilen
    kullanıcıları ayarlama işleminin kimlik doğrulamasıyla ilgili
    kısmını sağlar. Bir sonraki bölümde <code class="directive"><a href="../mod/core.html#require">Require</a></code> yönergesini kullanmanın
    çeşitli yoları üzerinde duracağız.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Birden çok kişiye izin vermek</a></h2>
    
    <p>Yukarıdaki yönergelerle bir dizinde sadece bir kişiye
    (<code>umut</code> adlı kullanıcıya) izin verir. Çoğunlukla birden
    çok kişiye izin verilmesi istenir. Bu durumda <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> yönergesi
    devreye girer.</p>

    <p>Eğer birden çok kişiye izin vermek istiyorsanız içinde kullanıcı
    isimlerinin olduğu bir grup dosyası oluşturmalısınız. Bu dosyanın
    biçemi gayet basittir ve bunu herhangi bir metin düzenleyici ile
    oluşturabilirsiniz. Bu dosyanın içeriği aşağıdaki gibi
    görünecektir:</p>

    <div class="example"><p><code>
     GroupName: umut samet engin kubilay
    </code></p></div>

    <p>Dosya, sadece, boşluklarla birbirinden ayrılmış gurup üyelerinin
    isimlerinden oluşan uzun bir liste içerir.</p>

    <p>Varolan parola dosyasına bir kullanıcı eklemek için şunu
    yazın:</p>

    <div class="example"><p><code>
      htpasswd /usr/local/apache/passwd/passwords birey
    </code></p></div>

    <p>Evvelce almış olduğunuz yanıtı yine alacaksınız ama bu sefer yeni
    bir dosya oluşturulmak yerine var olan bir dosyaya eklenecektir.
    (Yeni bir parola dosyası oluşturmak için <code>-c</code> seçeneği
    kullanılır).</p>

    <p>Şimdi, <code>.htaccess</code> dosyanızı aşağıda görüldüğü şekilde
    değiştirebilirsiniz:</p>

    <div class="example"><p><code>
      AuthType Basic<br />
      AuthName "Davete Binaen"<br />
      # Satır isteğe bağlıdır:<br />
      AuthBasicProvider file<br />
      AuthUserFile /usr/local/apache/passwd/passwords<br />
      AuthGroupFile /usr/local/apache/passwd/groups<br />
      Require group Grupismi
    </code></p></div>

    <p>Artık, <code>Grupismi</code> gurubunda listelenmiş ve
    <code>password</code> dosyasında kaydı olan kişiye, parolayı doğru
    yazdığı takdirde izin verilecektir.</p>

    <p>Çoklu kullanıcıya izin veren biraz daha az kullanılan başka bir
    yol daha mevcuttur. Bir gurup dosyası oluşturmaktansa, şu yönergeyi
    kullanabilirsiniz:</p>

    <div class="example"><p><code>
      Require valid-user
    </code></p></div>

    <p><code>Require user umut</code> satırı ile parola dosyasında
    listelenmiş ve parolayı doğru olarak giren herhangi bir kişiye izin
    vermektense, her grup için ayrı bir parola dosyası tutarak grup
    davranışını taklit edebilirsiniz. Bu yaklaşımın getirisi:
    Apache iki dosya yerine sadece bir dosyaya bakar.
    Götürüsü ise parola dosyalarından oluşan bir dosya demeti sağlamak
    ve <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
    yönergesinde doğru dosyayı belirtmeyi unutmamak zorunda
    kalmanızdır.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="possibleproblems" id="possibleproblems">Olası Sorunlar</a></h2>
    <p>Temel kimlik doğrulama yolu belirtildiği için, sunucuya
    yaptığınız her belge istediğinde kullanıcı adınızın ve parolanızın
    doğrulanması gerekir. Hatta aynı sayfayı yeniden yüklerken ya da
    sayfadaki her bir resim için bu yapılmalıdır (şayet korunmakta olan
    bir dizinden geliyorsa). Bu işlem hızı azaltacaktır. Yavaşlama
    miktarı parola dosyanızın büyüklüğü ile orantılı olacaktır, çünkü bu
    işlem sırasında dosya açılacak ve kullanıcıların arasında isminiz
    bulunana kadar liste aşağı doğru taranacaktır. Bu işlem sayfa her
    yüklenişinde tekrar edilecektir.</p>

    <p>Buradan çıkacak sonuç, bir parola dosyasına konulan kullanıcı
    sayısında bir üst sınır olması gerekliliğidir. Bu sınır sunucunuzun
    başarımına bağlı olarak değişiklik gösterir. Bir kaç yüz kayıtın
    üstünde giriş yaptığınızda hız düşüşünü gözlemlebilirsiniz İşte bu
    anda kimlik doğrulama için başka bir yöntem aramaya başlarsınız.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="dbmdbd" id="dbmdbd">Diğer parola depolama yöntemleri</a></h2>
    
    <p>Parolaları basit bir metin dosyasında depolamak yukarıda
    bahsedilen sorunlara yol açtığından parolaları başka bir yerde
    depolamayı düşünebilirsiniz; örneğin bir veritabanında.</p>

    <p><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ve <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>
    modülleri bunu mümkün kılan iki modüldür. Depolama yönemi olarak
    <code><code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> file</code> yerine, <code>dbm</code>
    veya <code>dbd</code> kullanabilirsiniz.</p>

    <p>Bir metin dosyası yerine bir dbd dosyası kullanım örneği:</p>

    <div class="example"><p><code>
    &lt;Directory /www/docs/private&gt;<br />
    AuthName "Private"<br />
    AuthType Basic<br />
    AuthBasicProvider dbm<br />
    AuthDBMUserFile /www/passwords/passwd.dbm<br />
    Require valid-user<br />
    &lt;/Directory&gt;
    </code></p></div>

    <p>Başka seçenekler de mümkündür. Ayrınılar için
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> belgesine başvurun.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="moreinformation" id="moreinformation">Daha fazla bilgi</a></h2>
    <p>Daha fazla bilgi için <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> ve
    <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> modüllerinin belgelerine bakınız.
    <code class="module"><a href="../mod/mod_authn_alias.html">mod_authn_alias</a></code> modülü ile
    bazı yapılandırmalarınızı basitleştirebilirsiniz.</p>

    <p>Apache tarafından desteklenen şifrelerle ilgili bilgi için <a href="../misc/password_encryptions.html">Parola Biçemleri</a>
    belgesine bakınız.</p>

    <p><a href="access.html">Erişim Denetimi</a> nasıl belgesinden de
    bazı bilgiler edinebilirsiniz.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                 howto/cgi.html                                                                                      100644       0       0        64562 11256641267  11044  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache Tutorial: Dynamic Content with CGI - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Apache Tutorial: Dynamic Content with CGI</h1>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configuring Apache to permit CGI</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#writing">Writing a CGI program</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">But it's still not working!</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">What's going on behind the scenes?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#libraries">CGI modules/libraries</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">For more information</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="intro" id="intro">Introduction</a></h2>
    

    <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li></ul></td></tr></table>

    <p>The CGI (Common Gateway Interface) defines a way for a web
    server to interact with external content-generating programs,
    which are often referred to as CGI programs or CGI scripts. It
    is the simplest, and most common, way to put dynamic content on
    your web site. This document will be an introduction to setting
    up CGI on your Apache web server, and getting started writing
    CGI programs.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="configuring" id="configuring">Configuring Apache to permit CGI</a></h2>
    

    <p>In order to get your CGI programs to work properly, you'll
    need to have Apache configured to permit CGI execution. There
    are several ways to do this.</p>

    <h3><a name="scriptalias" id="scriptalias">ScriptAlias</a></h3>
      

      <p>The 
      <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>

      directive tells Apache that a particular directory is set
      aside for CGI programs. Apache will assume that every file in
      this directory is a CGI program, and will attempt to execute
      it, when that particular resource is requested by a
      client.</p>

      <p>The <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
      directive looks like:</p>

      <div class="example"><p><code>
        ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
      </code></p></div>

      <p>The example shown is from your default <code>httpd.conf</code>
      configuration file, if you installed Apache in the default
      location. The <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
      directive is much like the <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> directive, which defines a URL prefix that
      is to mapped to a particular directory. <code class="directive">Alias</code>
      and <code class="directive">ScriptAlias</code> are usually used for
      directories that are outside of the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> directory. The difference between
      <code class="directive">Alias</code> and <code class="directive">ScriptAlias</code>
      is that <code class="directive">ScriptAlias</code> has the added meaning
      that everything under that URL prefix will be considered a CGI
      program. So, the example above tells Apache that any request for a
      resource beginning with <code>/cgi-bin/</code> should be served from
      the directory  <code>/usr/local/apache2/cgi-bin/</code>, and should be
      treated as a CGI program.</p>

      <p>For example, if the URL
      <code>http://www.example.com/cgi-bin/test.pl</code>
      is requested, Apache will attempt to execute the file 
      <code>/usr/local/apache2/cgi-bin/test.pl</code>
      and return the output. Of course, the file will have to
      exist, and be executable, and return output in a particular
      way, or Apache will return an error message.</p>
    

    <h3><a name="nonscriptalias" id="nonscriptalias">CGI outside of ScriptAlias directories</a></h3>
      

      <p>CGI programs are often restricted to <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>'ed directories for security reasons.
      In this way, administrators can tightly control who is allowed to
      use CGI programs. However, if the proper security precautions are
      taken, there is no reason why CGI programs cannot be run from
      arbitrary directories. For example, you may wish to let users
      have web content in their home directories with the 
      <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> directive.
      If they want to have their own CGI programs, but don't have access to
      the main <code>cgi-bin</code> directory, they will need to be able to
      run CGI programs elsewhere.</p>

      <p>There are two steps to allowing CGI execution in an arbitrary
      directory.  First, the <code>cgi-script</code> handler must be
      activated using the <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> or <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code> directive.  Second,
      <code>ExecCGI</code> must be specified in the <code class="directive"><a href="../mod/core.html#options">Options</a></code> directive.</p> 
    

    <h3><a name="options" id="options">Explicitly using Options to permit CGI execution</a></h3>
      

      <p>You could explicitly use the <code class="directive"><a href="../mod/core.html#options">Options</a></code> directive, inside your main server configuration
      file, to specify that CGI execution was permitted in a particular
      directory:</p>

      <div class="example"><p><code>
        &lt;Directory /usr/local/apache2/htdocs/somedir&gt;<br />
        <span class="indent">
          Options +ExecCGI<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>The above directive tells Apache to permit the execution
      of CGI files. You will also need to tell the server what
      files are CGI files. The following <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> directive tells the server to treat all
      files with the <code>cgi</code> or <code>pl</code> extension as CGI
      programs:</p>

      <div class="example"><p><code>
        AddHandler cgi-script .cgi .pl
      </code></p></div>
    

    <h3><a name="htaccess" id="htaccess">.htaccess files</a></h3>
      

      <p>The <a href="htaccess.html"><code>.htaccess</code> tutorial</a>
      shows how to activate CGI programs if you do not have
      access to <code>httpd.conf</code>.</p>
    

    <h3><a name="userdir" id="userdir">User Directories</a></h3>
      

      <p>To allow CGI program execution for any file ending in
      <code>.cgi</code> in users' directories, you can use the
      following configuration.</p>

      <div class="example"><p><code>
      &lt;Directory /home/*/public_html&gt;<br />
      <span class="indent">
        Options +ExecCGI<br />
        AddHandler cgi-script .cgi<br />
      </span>
      &lt;/Directory&gt;
      </code></p></div>

      <p>If you wish designate a <code>cgi-bin</code> subdirectory of
      a user's directory where everything will be treated as a CGI
      program, you can use the following.</p>

      <div class="example"><p><code>
      &lt;Directory /home/*/public_html/cgi-bin&gt;<br />
      <span class="indent">
        Options ExecCGI<br />
        SetHandler cgi-script<br />
      </span>
      &lt;/Directory&gt;
      </code></p></div>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="writing" id="writing">Writing a CGI program</a></h2>
    

    <p>There are two main differences between ``regular''
    programming, and CGI programming.</p>

    <p>First, all output from your CGI program must be preceded by
    a <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> header. This is HTTP header that tells the client
    what sort of content it is receiving. Most of the time, this
    will look like:</p>

    <div class="example"><p><code>
      Content-type: text/html
    </code></p></div>

    <p>Secondly, your output needs to be in HTML, or some other
    format that a browser will be able to display. Most of the
    time, this will be HTML, but occasionally you might write a CGI
    program that outputs a gif image, or other non-HTML
    content.</p>

    <p>Apart from those two things, writing a CGI program will look
    a lot like any other program that you might write.</p>

    <h3><a name="firstcgi" id="firstcgi">Your first CGI program</a></h3>
      

      <p>The following is an example CGI program that prints one
      line to your browser. Type in the following, save it to a
      file called <code>first.pl</code>, and put it in your 
      <code>cgi-bin</code> directory.</p>

      <div class="example"><p><code>
        #!/usr/bin/perl<br />
        print "Content-type: text/html\n\n";<br />
        print "Hello, World.";
      </code></p></div>

      <p>Even if you are not familiar with Perl, you should be able
      to see what is happening here. The first line tells Apache
      (or whatever shell you happen to be running under) that this
      program can be executed by feeding the file to the
      interpreter found at the location <code>/usr/bin/perl</code>.
      The second line prints the content-type declaration we
      talked about, followed by two carriage-return newline pairs.
      This puts a blank line after the header, to indicate the end
      of the HTTP headers, and the beginning of the body. The third
      line prints the string "Hello, World.". And that's the end
      of it.</p>

      <p>If you open your favorite browser and tell it to get the
      address</p>

      <div class="example"><p><code>
        http://www.example.com/cgi-bin/first.pl
      </code></p></div>

      <p>or wherever you put your file, you will see the one line 
      <code>Hello, World.</code> appear in your browser window.
      It's not very exciting, but once you get that working, you'll
      have a good chance of getting just about anything working.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="troubleshoot" id="troubleshoot">But it's still not working!</a></h2>
    

    <p>There are four basic things that you may see in your browser
    when you try to access your CGI program from the web:</p>

    <dl>
      <dt>The output of your CGI program</dt>
      <dd>Great! That means everything worked fine.  If the output is correct,
      but the browser is not processing it correctly, make sure you have the
      correct <code>Content-Type</code> set in your CGI program.</dd>

      <dt>The source code of your CGI program or a "POST Method Not
      Allowed" message</dt>
      <dd>That means that you have not properly configured Apache
      to process your CGI program. Reread the section on 
      <a href="#configuring">configuring
      Apache</a> and try to find what you missed.</dd>

      <dt>A message starting with "Forbidden"</dt>
      <dd>That means that there is a permissions problem. Check the
      <a href="#errorlogs">Apache error log</a> and the section below on
      <a href="#permissions">file permissions</a>.</dd>

      <dt>A message saying "Internal Server Error"</dt>
      <dd>If you check the 
      <a href="#errorlogs">Apache error log</a>, you will probably
      find that it says "Premature end of
      script headers", possibly along with an error message
      generated by your CGI program. In this case, you will want to
      check each of the below sections to see what might be
      preventing your CGI program from emitting the proper HTTP
      headers.</dd>
    </dl>

    <h3><a name="permissions" id="permissions">File permissions</a></h3>
      

      <p>Remember that the server does not run as you. That is,
      when the server starts up, it is running with the permissions
      of an unprivileged user - usually <code>nobody</code>, or
      <code>www</code> - and so it will need extra permissions to
      execute files that are owned by you. Usually, the way to give
      a file sufficient permissions to be executed by <code>nobody</code>
      is to give everyone execute permission on the file:</p>

      <div class="example"><p><code>
        chmod a+x first.pl
      </code></p></div>

      <p>Also, if your program reads from, or writes to, any other
      files, those files will need to have the correct permissions
      to permit this.</p>

    

    <h3><a name="pathinformation" id="pathinformation">Path information and environment</a></h3>
      

      <p>When you run a program from your command line, you have
      certain information that is passed to the shell without you
      thinking about it. For example, you have a <code>PATH</code>,
      which tells the shell where it can look for files that you
      reference.</p>

      <p>When a program runs through the web server as a CGI program,
      it may not have the same <code>PATH</code>. Any programs that you
      invoke in your CGI program (like <code>sendmail</code>, for
      example) will need to be specified by a full path, so that the
      shell can find them when it attempts to execute your CGI
      program.</p>

      <p>A common manifestation of this is the path to the script
      interpreter (often <code>perl</code>) indicated in the first
      line of your CGI program, which will look something like:</p>

      <div class="example"><p><code>
        #!/usr/bin/perl
      </code></p></div>

      <p>Make sure that this is in fact the path to the
      interpreter.</p>

      <p>In addition, if your CGI program depends on other <a href="#env">environment variables</a>, you will need to
      assure that those variables are passed by Apache.</p>

    

    <h3><a name="syntaxerrors" id="syntaxerrors">Program errors</a></h3>
      

      <p>Most of the time when a CGI program fails, it's because of
      a problem with the program itself. This is particularly true
      once you get the hang of this CGI stuff, and no longer make
      the above two mistakes.  The first thing to do is to make
      sure that your program runs from the command line before
      testing it via the web server.  For example, try:</p>

      <div class="example"><p><code>
      cd /usr/local/apache2/cgi-bin<br />
      ./first.pl
      </code></p></div>

      <p>(Do not call the <code>perl</code> interpreter.  The shell
      and Apache should find the interpreter using the <a href="#pathinformation">path information</a> on the first line of
      the script.)</p>

      <p>The first thing you see written by your program should be
      a set of HTTP headers, including the <code>Content-Type</code>,
      followed by a blank line.  If you see anything else, Apache will
      return the <code>Premature end of script headers</code> error if
      you try to run it through the server. See <a href="#writing">Writing a CGI program</a> above for more
      details.</p>
    

    <h3><a name="errorlogs" id="errorlogs">Error logs</a></h3>
      

      <p>The error logs are your friend. Anything that goes wrong
      generates message in the error log. You should always look
      there first. If the place where you are hosting your web site
      does not permit you access to the error log, you should
      probably host your site somewhere else. Learn to read the
      error logs, and you'll find that almost all of your problems
      are quickly identified, and quickly solved.</p>
    

    <h3><a name="suexec" id="suexec">Suexec</a></h3>
      

      <p>The <a href="../suexec.html">suexec</a> support program
      allows CGI programs to be run under different user permissions,
      depending on which virtual host or user home directory they are
      located in. Suexec has very strict permission checking, and any
      failure in that checking will result in your CGI programs
      failing with <code>Premature end of script headers</code>.</p>

      <p>To check if you are using suexec, run <code>apachectl
      -V</code> and check for the location of <code>SUEXEC_BIN</code>.
      If Apache finds an <code class="program"><a href="../programs/suexec.html">suexec</a></code> binary there on startup,
      suexec will be activated.</p>

      <p>Unless you fully understand suexec, you should not be using it.
      To disable suexec, simply remove (or rename) the <code class="program"><a href="../programs/suexec.html">suexec</a></code>
      binary pointed to by <code>SUEXEC_BIN</code> and then restart the
      server.  If, after reading about <a href="../suexec.html">suexec</a>,
      you still wish to use it, then run <code>suexec -V</code> to find
      the location of the suexec log file, and use that log file to
      find what policy you are violating.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="behindscenes" id="behindscenes">What's going on behind the scenes?</a></h2>
    

    <p>As you become more advanced in CGI programming, it will
    become useful to understand more about what's happening behind
    the scenes. Specifically, how the browser and server
    communicate with one another. Because although it's all very
    well to write a program that prints "Hello, World.", it's not
    particularly useful.</p>

    <h3><a name="env" id="env">Environment variables</a></h3>
      

      <p>Environment variables are values that float around you as
      you use your computer. They are useful things like your path
      (where the computer searches for the actual file
      implementing a command when you type it), your username, your
      terminal type, and so on. For a full list of your normal,
      every day environment variables, type 
      <code>env</code> at a command prompt.</p>

      <p>During the CGI transaction, the server and the browser
      also set environment variables, so that they can communicate
      with one another. These are things like the browser type
      (Netscape, IE, Lynx), the server type (Apache, IIS, WebSite),
      the name of the CGI program that is being run, and so on.</p>

      <p>These variables are available to the CGI programmer, and
      are half of the story of the client-server communication. The
      complete list of required variables is at 
      <a href="http://hoohoo.ncsa.uiuc.edu/cgi/env.html">http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a>.</p>

      <p>This simple Perl CGI program will display all of the
      environment variables that are being passed around. Two
      similar programs are included in the 
      <code>cgi-bin</code>

      directory of the Apache distribution. Note that some
      variables are required, while others are optional, so you may
      see some variables listed that were not in the official list.
      In addition, Apache provides many different ways for you to 
      <a href="../env.html">add your own environment variables</a>
      to the basic ones provided by default.</p>

      <div class="example"><p><code>
        #!/usr/bin/perl<br />
        print "Content-type: text/html\n\n";<br />
        foreach $key (keys %ENV) {<br />
        <span class="indent">
          print "$key --&gt; $ENV{$key}&lt;br&gt;";<br />
        </span>
        }
      </code></p></div>
    

    <h3><a name="stdin" id="stdin">STDIN and STDOUT</a></h3>
      

      <p>Other communication between the server and the client
      happens over standard input (<code>STDIN</code>) and standard
      output (<code>STDOUT</code>). In normal everyday context, 
      <code>STDIN</code> means the keyboard, or a file that a 
      program is given to act on, and <code>STDOUT</code>
      usually means the console or screen.</p> 

      <p>When you <code>POST</code> a web form to a CGI program,
      the data in that form is bundled up into a special format
      and gets delivered to your CGI program over <code>STDIN</code>.
      The program then can process that data as though it was
      coming in from the keyboard, or from a file</p>

      <p>The "special format" is very simple. A field name and
      its value are joined together with an equals (=) sign, and
      pairs of values are joined together with an ampersand
      (&amp;). Inconvenient characters like spaces, ampersands, and
      equals signs, are converted into their hex equivalent so that
      they don't gum up the works. The whole data string might look
      something like:</p>

      <div class="example"><p><code>
        name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey
      </code></p></div>

      <p>You'll sometimes also see this type of string appended to
      a URL. When that is done, the server puts that string
      into the environment variable called 
      <code>QUERY_STRING</code>. That's called a <code>GET</code>
      request. Your HTML form specifies whether a <code>GET</code>
      or a <code>POST</code> is used to deliver the data, by setting the 
      <code>METHOD</code> attribute in the <code>FORM</code> tag.</p>

      <p>Your program is then responsible for splitting that string
      up into useful information. Fortunately, there are libraries
      and modules available to help you process this data, as well
      as handle other of the aspects of your CGI program.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="libraries" id="libraries">CGI modules/libraries</a></h2>
    

    <p>When you write CGI programs, you should consider using a
    code library, or module, to do most of the grunt work for you.
    This leads to fewer errors, and faster development.</p>

    <p>If you're writing CGI programs in Perl, modules are
    available on <a href="http://www.cpan.org/">CPAN</a>. The most
    popular module for this purpose is <code>CGI.pm</code>. You might
    also consider <code>CGI::Lite</code>, which implements a minimal
    set of functionality, which is all you need in most programs.</p>

    <p>If you're writing CGI programs in C, there are a variety of
    options. One of these is the <code>CGIC</code> library, from 
    <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="moreinfo" id="moreinfo">For more information</a></h2>
    

    <p>There are a large number of CGI resources on the web. You
    can discuss CGI problems with other users on the Usenet group
    <a href="news:comp.infosystems.www.authoring.cgi">comp.infosystems.www.authoring.cgi</a>. And the -servers mailing
    list from the HTML Writers Guild is a great source of answers
    to your questions. You can find out more at 
    <a href="http://www.hwg.org/lists/hwg-servers/">http://www.hwg.org/lists/hwg-servers/</a>.</p>

    <p>And, of course, you should probably read the CGI
    specification, which has all the details on the operation of
    CGI programs. You can find the original version at the 
    <a href="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA</a> and there is an updated draft at the 
    <a href="http://www.w3.org/CGI/">Common Gateway
    Interface RFC project</a>.</p>

    <p>When you post a question about a CGI problem that you're
    having, whether to a mailing list, or to a newsgroup, make sure
    you provide enough information about what happened, what you
    expected to happen, and how what actually happened was
    different, what server you're running, what language your CGI
    program was in, and, if possible, the offending code. This will
    make finding your problem much simpler.</p>

    <p>Note that questions about CGI problems should <strong>never</strong>
    be posted to the Apache bug database unless you are sure you
    have found a problem in the Apache source code.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                              howto/htaccess.html                                                                                 100644       0       0        50261 11256641267  12066  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache Tutorial: .htaccess files - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Apache Tutorial: .htaccess files</h1>


<p><code>.htaccess</code> files provide a way to make configuration
changes on a per-directory basis.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">.htaccess files</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#what">What they are/How to use them</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#when">When (not) to use .htaccess files</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#how">How directives are applied</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#auth">Authentication example</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Server Side Includes example</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgi">CGI example</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Troubleshooting</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">.htaccess files</a></h2>
    <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="what" id="what">What they are/How to use them</a></h2>


    <p><code>.htaccess</code> files (or "distributed configuration files")
    provide a way to make configuration changes on a per-directory basis. A
    file, containing one or more configuration directives, is placed in a
    particular document directory, and the directives apply to that
    directory, and all subdirectories thereof.</p>

    <div class="note"><h3>Note:</h3>
      <p>If you want to call your <code>.htaccess</code> file something
      else, you can change the name of the file using the <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code> directive. For example,
      if you would rather call the file <code>.config</code> then you
      can put the following in your server configuration file:</p>

      <div class="example"><p><code>
        AccessFileName .config
      </code></p></div>
    </div>

    <p>In general, <code>.htaccess</code> files use the same syntax as
    the <a href="../configuring.html#syntax">main configuration
    files</a>.  What you can put in these files is determined by the
    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> directive. This
    directive specifies, in categories, what directives will be
    honored if they are found in a <code>.htaccess</code> file. If a
    directive is permitted in a <code>.htaccess</code> file, the
    documentation for that directive will contain an Override section,
    specifying what value must be in <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> in order for that
    directive to be permitted.</p>

    <p>For example, if you look at the documentation for the <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>
    directive, you will find that it is permitted in <code>.htaccess</code>
    files. (See the Context line in the directive summary.) The <a href="../mod/directive-dict.html#Context">Override</a> line reads
    <code>FileInfo</code>. Thus, you must have at least
    <code>AllowOverride FileInfo</code> in order for this directive to be
    honored in <code>.htaccess</code> files.</p>

    <div class="example"><h3>Example:</h3><table>
        <tr>
          <td><a href="../mod/directive-dict.html#Context">Context:</a></td>
          <td>server config, virtual host, directory, .htaccess</td>
        </tr>

        <tr>
          <td><a href="../mod/directive-dict.html#Override">Override:</a></td>
          <td>FileInfo</td>
        </tr>
      </table></div>

    <p>If you are unsure whether a particular directive is permitted in a
    <code>.htaccess</code> file, look at the documentation for that
    directive, and check the Context line for ".htaccess".</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="when" id="when">When (not) to use .htaccess files</a></h2>

    <p>In general, you should never use <code>.htaccess</code> files unless
    you don't have access to the main server configuration file. There is,
    for example, a prevailing misconception that user authentication should
    always be done in <code>.htaccess</code> files. This is simply not the
    case. You can put user authentication configurations in the main server
    configuration, and this is, in fact, the preferred way to do
    things.</p>

    <p><code>.htaccess</code> files should be used in a case where the
    content providers need to make configuration changes to the server on a
    per-directory basis, but do not have root access on the server system.
    In the event that the server administrator is not willing to make
    frequent configuration changes, it might be desirable to permit
    individual users to make these changes in <code>.htaccess</code> files
    for themselves. This is particularly true, for example, in cases where
    ISPs are hosting multiple user sites on a single machine, and want
    their users to be able to alter their configuration.</p>

    <p>However, in general, use of <code>.htaccess</code> files should be
    avoided when possible. Any configuration that you would consider
    putting in a <code>.htaccess</code> file, can just as effectively be
    made in a <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section in your main server 
    configuration file.</p>

    <p>There are two main reasons to avoid the use of
    <code>.htaccess</code> files.</p>

    <p>The first of these is performance. When <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
    is set to allow the use of <code>.htaccess</code> files, Apache will
    look in every directory for <code>.htaccess</code> files. Thus,
    permitting <code>.htaccess</code> files causes a performance hit,
    whether or not you actually even use them! Also, the
    <code>.htaccess</code> file is loaded every time a document is
    requested.</p>

    <p>Further note that Apache must look for <code>.htaccess</code> files
    in all higher-level directories, in order to have a full complement of
    directives that it must apply. (See section on <a href="#how">how
    directives are applied</a>.) Thus, if a file is requested out of a
    directory <code>/www/htdocs/example</code>, Apache must look for the
    following files:</p>

    <div class="example"><p><code>
      /.htaccess<br />
      /www/.htaccess<br />
      /www/htdocs/.htaccess<br />
      /www/htdocs/example/.htaccess
    </code></p></div>

    <p>And so, for each file access out of that directory, there are 4
    additional file-system accesses, even if none of those files are
    present. (Note that this would only be the case if
    <code>.htaccess</code> files were enabled for <code>/</code>, which
    is not usually the case.)</p>

    <p>The second consideration is one of security. You are permitting
    users to modify server configuration, which may result in changes over
    which you have no control. Carefully consider whether you want to give
    your users this privilege. Note also that giving users less
    privileges than they need will lead to additional technical support
    requests. Make sure you clearly tell your users what level of
    privileges you have given them. Specifying exactly what you have set
    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> to, and pointing them
    to the relevant documentation, will save yourself a lot of confusion
    later.</p>

    <p>Note that it is completely equivalent to put a <code>.htaccess</code>
    file in a directory <code>/www/htdocs/example</code> containing a
    directive, and to put that same directive in a Directory section
    <code>&lt;Directory /www/htdocs/example&gt;</code> in your main server
    configuration:</p>

    <p><code>.htaccess</code> file in <code>/www/htdocs/example</code>:</p>

    <div class="example"><h3>Contents of .htaccess file in
    <code>/www/htdocs/example</code></h3><p><code>
        AddType text/example .exm
    </code></p></div>

    <div class="example"><h3>Section from your <code>httpd.conf</code>
    file</h3><p><code>
      &lt;Directory /www/htdocs/example&gt;<br />
      <span class="indent">
        AddType text/example .exm<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>However, putting this configuration in your server configuration
    file will result in less of a performance hit, as the configuration is
    loaded once when Apache starts, rather than every time a file is
    requested.</p>

    <p>The use of <code>.htaccess</code> files can be disabled completely
    by setting the <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
    directive to <code>none</code>:</p>

    <div class="example"><p><code>
      AllowOverride None
    </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="how" id="how">How directives are applied</a></h2>

    <p>The configuration directives found in a <code>.htaccess</code> file
    are applied to the directory in which the <code>.htaccess</code> file
    is found, and to all subdirectories thereof. However, it is important
    to also remember that there may have been <code>.htaccess</code> files
    in directories higher up. Directives are applied in the order that they
    are found. Therefore, a <code>.htaccess</code> file in a particular
    directory may override directives found in <code>.htaccess</code> files
    found higher up in the directory tree. And those, in turn, may have
    overridden directives found yet higher up, or in the main server
    configuration file itself.</p>

    <p>Example:</p>

    <p>In the directory <code>/www/htdocs/example1</code> we have a
    <code>.htaccess</code> file containing the following:</p>

    <div class="example"><p><code>
       Options +ExecCGI
    </code></p></div>

    <p>(Note: you must have "<code>AllowOverride Options</code>" in effect
    to permit the use of the "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" directive in
    <code>.htaccess</code> files.)</p>

    <p>In the directory <code>/www/htdocs/example1/example2</code> we have
    a <code>.htaccess</code> file containing:</p>

    <div class="example"><p><code>
       Options Includes
    </code></p></div>

    <p>Because of this second <code>.htaccess</code> file, in the directory
    <code>/www/htdocs/example1/example2</code>, CGI execution is not
    permitted, as only <code>Options Includes</code> is in effect, which
    completely overrides any earlier setting that may have been in
    place.</p>

    <h3><a name="merge" id="merge">Merging of .htaccess with the main
    configuration files</a></h3>

    <p>As discussed in the documentation on <a href="../sections.html">Configuration Sections</a>,
    <code>.htaccess</code> files can override the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> sections for
    the corresponding directory, but will be overriden by other types
    of configuration sections from the main configuration files.  This
    fact can be used to enforce certain configurations, even in the
    presence of a liberal <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> setting.  For example, to
    prevent script execution while allowing anything else to be set in
    <code>.htaccess</code> you can use:</p>

    <div class="example"><p><code>
&lt;Directory /&gt;<br />
<span class="indent">
Allowoverride All<br />
</span>
&lt;/Directory&gt;<br />
<br />
&lt;Location /&gt;<br />
<span class="indent">
Options +IncludesNoExec -ExecCGI<br />
</span>
&lt;/Location&gt;
    </code></p></div>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="auth" id="auth">Authentication example</a></h2>

    <p>If you jumped directly to this part of the document to find out how
    to do authentication, it is important to note one thing. There is a
    common misconception that you are required to use
    <code>.htaccess</code> files in order to implement password
    authentication. This is not the case. Putting authentication directives
    in a <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>
    section, in your main server configuration file, is the preferred way
    to implement this, and <code>.htaccess</code> files should be used only
    if you don't have access to the main server configuration file. See <a href="#when">above</a> for a discussion of when you should and should
    not use <code>.htaccess</code> files.</p>

    <p>Having said that, if you still think you need to use a
    <code>.htaccess</code> file, you may find that a configuration such as
    what follows may work for you.</p>

    <p><code>.htaccess</code> file contents:</p>

    <div class="example"><p><code>
      AuthType Basic<br />
      AuthName "Password Required"<br />
      AuthUserFile /www/passwords/password.file<br />
      AuthGroupFile /www/passwords/group.file<br />
      Require Group admins
    </code></p></div>

    <p>Note that <code>AllowOverride AuthConfig</code> must be in effect
    for these directives to have any effect.</p>

    <p>Please see the <a href="auth.html">authentication tutorial</a> for a
    more complete discussion of authentication and authorization.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ssi" id="ssi">Server Side Includes example</a></h2>

    <p>Another common use of <code>.htaccess</code> files is to enable
    Server Side Includes for a particular directory. This may be done with
    the following configuration directives, placed in a
    <code>.htaccess</code> file in the desired directory:</p>

    <div class="example"><p><code>
       Options +Includes<br />
       AddType text/html shtml<br />
       AddHandler server-parsed shtml
    </code></p></div>

    <p>Note that <code>AllowOverride Options</code> and <code>AllowOverride
    FileInfo</code> must both be in effect for these directives to have any
    effect.</p>

    <p>Please see the <a href="ssi.html">SSI tutorial</a> for a more
    complete discussion of server-side includes.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi" id="cgi">CGI example</a></h2>

    <p>Finally, you may wish to use a <code>.htaccess</code> file to permit
    the execution of CGI programs in a particular directory. This may be
    implemented with the following configuration:</p>

    <div class="example"><p><code>
       Options +ExecCGI<br />
       AddHandler cgi-script cgi pl
    </code></p></div>

    <p>Alternately, if you wish to have all files in the given directory be
    considered to be CGI programs, this may be done with the following
    configuration:</p>

    <div class="example"><p><code>
       Options +ExecCGI<br />
       SetHandler cgi-script
    </code></p></div>

    <p>Note that <code>AllowOverride Options</code> and <code>AllowOverride
    FileInfo</code> must both be in effect for these directives to have any
    effect.</p>

    <p>Please see the <a href="cgi.html">CGI tutorial</a> for a more
    complete discussion of CGI programming and configuration.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="troubleshoot" id="troubleshoot">Troubleshooting</a></h2>

    <p>When you put configuration directives in a <code>.htaccess</code>
    file, and you don't get the desired effect, there are a number of
    things that may be going wrong.</p>

    <p>Most commonly, the problem is that <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> is not
    set such that your configuration directives are being honored. Make
    sure that you don't have a <code>AllowOverride None</code> in effect
    for the file scope in question. A good test for this is to put garbage
    in your <code>.htaccess</code> file and reload. If a server error is
    not generated, then you almost certainly have <code>AllowOverride
    None</code> in effect.</p>

    <p>If, on the other hand, you are getting server errors when trying to
    access documents, check your Apache error log. It will likely tell you
    that the directive used in your <code>.htaccess</code> file is not
    permitted. Alternately, it may tell you that you had a syntax error,
    which you will then need to fix.</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                               howto/index.html                                                                                    100644       0       0        11763 11256641267  11404  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>How-To / Tutorials - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>How-To / Tutorials</h1>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="howto" id="howto">How-To / Tutorials</a></h2>

    

    <dl>
      <dt>Authentication and Authorization</dt>
      <dd>
        <p>Authentication is any process by which you verify that
        someone is who they claim they are. Authorization is any
        process by which someone is allowed to be where they want to
        go, or to have information that they want to have.</p>

        <p>See: <a href="auth.html">Authentication, Authorization</a></p>
      </dd>
    </dl>

    <dl>
      <dt>Access Control</dt>
      <dd>
        <p>Access control refers to the process of restricting, or
        granting access to a resource based on arbitrary criteria. There
        are a variety of different ways that this can be
        accomplished.</p>

        <p>See: <a href="access.html">Access Control</a></p>
      </dd>
    </dl>

   <dl>
      <dt>Dynamic Content with CGI</dt>
      <dd>
        <p>The CGI (Common Gateway Interface) defines a way for a web
        server to interact with external content-generating programs,
        which are often referred to as CGI programs or CGI scripts. It
        is the simplest, and most common, way to put dynamic content on
        your web site. This document will be an introduction to setting
        up CGI on your Apache web server, and getting started writing
        CGI programs.</p>

        <p>See: <a href="cgi.html">CGI: Dynamic Content</a></p>
      </dd>
    </dl>

    <dl>
      <dt><code>.htaccess</code> files</dt>
      <dd>
        <p><code>.htaccess</code> files provide a way to make configuration
        changes on a per-directory basis. A file, containing one or more
        configuration directives, is placed in a particular document directory,
        and the directives apply to that directory, and all subdirectories thereof.</p>

        <p>See: <a href="htaccess.html"><code>.htaccess</code> files</a></p>
      </dd>
    </dl>

    <dl>
      <dt>Introduction to Server Side Includes</dt>
      <dd>
        <p>SSI (Server Side Includes) are directives that are placed in
        HTML pages, and evaluated on the server while the pages are
        being served. They let you add dynamically generated content to
        an existing HTML page, without having to serve the entire page
        via a CGI program, or other dynamic technology.</p>

        <p>See: <a href="ssi.html">Server Side Includes (SSI)</a></p>
      </dd>
    </dl>

    <dl>
      <dt>Per-user web directories</dt>
      <dd>
        <p>On systems with multiple users, each user can be permitted to have a
        web site in their home directory using the <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> directive. Visitors
        to a URL <code>http://example.com/~username/</code> will get content
        out of the home directory of the user "<code>username</code>", out of
        the subdirectory specified by the <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> directive.</p>

        <p>See: <a href="public_html.html">User web directories (<code>public_html</code>)</a></p>
      </dd>
    </dl>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
             howto/public_html.html                                                                              100644       0       0        24101 11256641267  12565  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Kullanıcı Dizinleri (public_html) - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Nasıllar ve Öğreticiler</a></div><div id="page-content"><div id="preamble"><h1>Kullanıcı Dizinleri (public_html)</h1>


  <p>Çok kullanıcılı sistemlerde, <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi ile her kullanıcının kendi ev dizininde
    bir sitesi olması sağlanabilir.
    <code>http://example.com/~kullanıcı/</code> adresinin ziyaretçileri
    "kullanıcı" isimli kullanıcının ev dizininin içeriğini değil, <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesinde belirtilen alt
    dizinin içeriğini görürler.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Kullanıcı sayfaları dizinleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#userdir"><code>UserDir</code> ile dosya yolunun belirtilmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirect">Harici adreslere yönlendirme</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Bu özelliği kullanacak kullanıcıların sınırlandırılması</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Her kullanıcıya bir CGI dizini tahsis etmek</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#htaccess">Kullanıcıların yapılandırmayı değiştirmesine izin vermek</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../urlmapping.html">URL’lerin Dosya Sistemi ile
  Eşleştirilmesi</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">Kullanıcı sayfaları dizinleri</a></h2>
    
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code></li><li><code class="directive"><a href="../mod/core.html#directorymatch">DirectoryMatch</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li></ul></td></tr></table>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="userdir" id="userdir"><code>UserDir</code> ile dosya yolunun belirtilmesi</a></h2>
    

    <p><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesinde
     kullanıcı sayfalarının yükleneceği dizin belirtilir. Bu yönergeye değeri
     çeşitli biçimlerde atanabilir.</p>

    <p>Başında bölü çizgisi bulunmayan bir dosya yolu belirtilmişse,
     kullanıcının ev dizinine göreli bir dizin belirtildiği varsayılır.
     Yapılandırmada şöyle bir satır varsa:</p>

    <div class="example"><p><code>
      UserDir public_html
    </code></p></div>

    <p><code>http://example.com/~orhan/dosya.html</code> adresine karşılık
      gelen dosya yolu <code>/home/orhan/public_html/dosya.html</code> olarak
      çözümlenir.</p>

    <p>Eğer başında bölü çizgisi bulunan bir dosya yolu belirtilirse,
      kullanıcı sayfalarının bu dizinin altında kullanıcı ismini taşıyan
      dizinlerde bulunacağı varsayılır. Yapılandırmada şöyle bir satır
      varsa:</p>

    <div class="example"><p><code>
      UserDir /var/html
    </code></p></div>

    <p><code>http://example.com/~orhan/dosya.html</code> adresine karşılık
      gelen dosya yolu <code>/var/html/orhan/dosya.html</code> olarak
      çözümlenir.</p>

    <p>Eğer belirtilen dosya yolu bir yıldız imi (*) içeriyorsa yıldız iminin
      yerine kullanıcı ismi yerleştirilerek elde edilen dosya yolu
      kullanılır. Yapılandırmada şöyle bir satır varsa:</p>

    <div class="example"><p><code>
      UserDir /var/siteler/*/sayfam
    </code></p></div>

    <p><code>http://example.com/~orhan/dosya.html</code> adresine karşılık
      gelen dosya yolu <code>/var/siteler/orhan/sayfam/dosya.html</code>
      olarak çözümlenir.</p>

    <p>Çok sayıda dizin veya dizin yolu belirtmek de mümkündür.</p>

    <div class="example"><p><code>
      UserDir public_html /var/siteler
    </code></p></div>

    <p><code>http://example.com/~orhan/dosya.html</code> adresini Apache önce
      <code>/home/orhan/public_html/dosya.html</code> olarak arayacak,
      bulamazsa <code>/var/siteler/orhan/sayfam/dosya.html</code> olarak
      arayacak, bulduğunda istenen dosyayı sunacaktır.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="redirect" id="redirect">Harici adreslere yönlendirme</a></h2>
    
    <p><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi
      kullanıcı dizini isteklerini harici adreslere yönlendirmek için de
      kullanılabilir.</p>

    <div class="example"><p><code>
      UserDir http://example.org/users/*/
    </code></p></div>

    <p>Bu yapılandırmaya göre <code>http://example.com/~bob/abc.html</code>
    için yapılan bir istek <code>http://example.org/users/bob/abc.html</code>
    adresine yönlendirilecektir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Bu özelliği kullanacak kullanıcıların sınırlandırılması</a></h2>
    

    <p><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesinin
      açıklamasında belirtilen sözdizimini kullanarak bu işlevselliği bazı
      kullanıcılara yasaklayabilirsiniz:</p>

    <div class="example"><p><code>
      UserDir disabled root ahmet mustafa
    </code></p></div>

    <p>Bu yapılandırma ile <code>disabled</code> deyiminin bulunduğu
      satırdaki kullanıcılar dışında kalan bütün kullanıcılar için bu özellik
      etkin olacaktır. Benzer şekilde, aşağıdaki yapılandırma ile
      işlevselliğin belli kullanıcılar dışında kullanılmamasını da
      sağlayabilirsiniz:</p>

    <div class="example"><p><code>
      UserDir disabled<br />
      UserDir enabled orhan yasar
    </code></p></div>

    <p>Daha fazla örnek için <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesinin açıklamasına bakabilirsiniz.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi" id="cgi">Her kullanıcıya bir CGI dizini tahsis etmek</a></h2>
  

   <p>Her kullanıcıya kendine ait bir CGI dizini vermek isterseniz, bir
    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> yönergesi
    ile kullanıcının ev dizinindeki belli bir dizini CGI-etkin duruma
    getirebilirsiniz.</p>

    <div class="example"><p><code>
      &lt;Directory /home/*/public_html/cgi-bin/&gt;<br />
       Options ExecCGI<br />
       SetHandler cgi-script<br />
       &lt;/Directory&gt;
    </code></p></div>

    <p> <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesinde
      <code>public_html</code> belirtildiği varsayımıyla
      <code>mesela.cgi</code> betiği bu dizinden şöyle bir adresle
      yüklenebilir:</p>

    <div class="example"><p><code>
      http://example.com/~orhan/cgi-bin/mesela.cgi
    </code></p></div>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="htaccess" id="htaccess">Kullanıcıların yapılandırmayı değiştirmesine izin vermek</a></h2>
    

    <p>Kullanıcıların kendilerine ayrılan bölge içinde sunucu
      yapılandırmasını değiştirebilmelerine izin vermek isterseniz,
      <code>.htaccess</code> dosyalarını kullanmalarına izin vermeniz
      gerekir. Kullanıcının değiştirmesine izin vereceğiniz yönerge türlerini
      <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> yönergesinde
      belirtmeyi ihmal etmeyin. <code>.htaccess</code> dosyalarının kullanımı
      ile ilgili daha ayrıntılı bilgi için <a href="htaccess.html">.htaccess
      öğreticisi</a>ne bakınız.</p>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                               howto/ssi.html                                                                                      100644       0       0        55255 11256641267  11077  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache Tutorial: Introduction to Server Side Includes - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Apache Tutorial: Introduction to Server Side Includes</h1>


<p>Server-side includes provide a means to add dynamic content to
existing HTML documents.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#what">What are SSI?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configuring your server to permit SSI</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#basic">Basic SSI directives</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Additional examples</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#config">What else can I config?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exec">Executing commands</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Advanced SSI techniques</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">Introduction</a></h2>
 <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li></ul></td></tr></table>

    <p>This article deals with Server Side Includes, usually called
    simply SSI. In this article, I'll talk about configuring your
    server to permit SSI, and introduce some basic SSI techniques
    for adding dynamic content to your existing HTML pages.</p>

    <p>In the latter part of the article, we'll talk about some of
    the somewhat more advanced things that can be done with SSI,
    such as conditional statements in your SSI directives.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="what" id="what">What are SSI?</a></h2>

    <p>SSI (Server Side Includes) are directives that are placed in
    HTML pages, and evaluated on the server while the pages are
    being served. They let you add dynamically generated content to
    an existing HTML page, without having to serve the entire page
    via a CGI program, or other dynamic technology.</p>

    <p>The decision of when to use SSI, and when to have your page
    entirely generated by some program, is usually a matter of how
    much of the page is static, and how much needs to be
    recalculated every time the page is served. SSI is a great way
    to add small pieces of information, such as the current time.
    But if a majority of your page is being generated at the time
    that it is served, you need to look for some other
    solution.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="configuring" id="configuring">Configuring your server to permit SSI</a></h2>


    <p>To permit SSI on your server, you must have the following
    directive either in your <code>httpd.conf</code> file, or in a
    <code>.htaccess</code> file:</p>
<div class="example"><p><code>
        Options +Includes
</code></p></div>

    <p>This tells Apache that you want to permit files to be parsed
    for SSI directives.  Note that most configurations contain
    multiple <code class="directive"><a href="../mod/core.html#options">Options</a></code> directives
    that can override each other.  You will probably need to apply the
    <code>Options</code> to the specific directory where you want SSI
    enabled in order to assure that it gets evaluated last.</p>

    <p>Not just any file is parsed for SSI directives. You have to
    tell Apache which files should be parsed. There are two ways to
    do this. You can tell Apache to parse any file with a
    particular file extension, such as <code>.shtml</code>, with
    the following directives:</p>
<div class="example"><p><code>
        AddType text/html .shtml<br />
	AddOutputFilter INCLUDES .shtml
</code></p></div>

    <p>One disadvantage to this approach is that if you wanted to
    add SSI directives to an existing page, you would have to
    change the name of that page, and all links to that page, in
    order to give it a <code>.shtml</code> extension, so that those
    directives would be executed.</p>

    <p>The other method is to use the <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> directive:</p>
<div class="example"><p><code>
        XBitHack on
</code></p></div>

    <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
    tells Apache to parse files for SSI
    directives if they have the execute bit set. So, to add SSI
    directives to an existing page, rather than having to change
    the file name, you would just need to make the file executable
    using <code>chmod</code>.</p>
<div class="example"><p><code>
        chmod +x pagename.html
</code></p></div>

    <p>A brief comment about what not to do. You'll occasionally
    see people recommending that you just tell Apache to parse all
    <code>.html</code> files for SSI, so that you don't have to
    mess with <code>.shtml</code> file names. These folks have
    perhaps not heard about <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. The thing to
    keep in mind is that, by doing this, you're requiring that
    Apache read through every single file that it sends out to
    clients, even if they don't contain any SSI directives. This
    can slow things down quite a bit, and is not a good idea.</p>

    <p>Of course, on Windows, there is no such thing as an execute
    bit to set, so that limits your options a little.</p>

    <p>In its default configuration, Apache does not send the last
    modified date or content length HTTP headers on SSI pages,
    because these values are difficult to calculate for dynamic
    content. This can prevent your document from being cached, and
    result in slower perceived client performance. There are two
    ways to solve this:</p>

    <ol>
      <li>Use the <code>XBitHack Full</code> configuration. This
      tells Apache to determine the last modified date by looking
      only at the date of the originally requested file, ignoring
      the modification date of any included files.</li>

      <li>Use the directives provided by 
      <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> to set an explicit expiration
      time on your files, thereby letting browsers and proxies
      know that it is acceptable to cache them.</li>
    </ol>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="basic" id="basic">Basic SSI directives</a></h2>

    <p>SSI directives have the following syntax:</p>
<div class="example"><p><code>
        &lt;!--#element attribute=value attribute=value ... --&gt;
</code></p></div>

    <p>It is formatted like an HTML comment, so if you don't have
    SSI correctly enabled, the browser will ignore it, but it will
    still be visible in the HTML source. If you have SSI correctly
    configured, the directive will be replaced with its
    results.</p>

    <p>The element can be one of a number of things, and we'll talk
    some more about most of these in the next installment of this
    series. For now, here are some examples of what you can do with
    SSI</p>

<h3><a name="todaysdate" id="todaysdate">Today's date</a></h3>

<div class="example"><p><code>
        &lt;!--#echo var="DATE_LOCAL" --&gt;
</code></p></div>

    <p>The <code>echo</code> element just spits out the value of a
    variable. There are a number of standard variables, which
    include the whole set of environment variables that are
    available to CGI programs. Also, you can define your own
    variables with the <code>set</code> element.</p>

    <p>If you don't like the format in which the date gets printed,
    you can use the <code>config</code> element, with a
    <code>timefmt</code> attribute, to modify that formatting.</p>

<div class="example"><p><code>
        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
        Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
</code></p></div>


<h3><a name="lastmodified" id="lastmodified">Modification date of the file</a></h3>

<div class="example"><p><code>
        This document last modified &lt;!--#flastmod file="index.html" --&gt;
</code></p></div>

    <p>This element is also subject to <code>timefmt</code> format
    configurations.</p>


<h3><a name="cgi" id="cgi">Including the results of a CGI program</a></h3>

    <p>This is one of the more common uses of SSI - to output the
    results of a CGI program, such as everybody's favorite, a ``hit
    counter.''</p>

<div class="example"><p><code>
        &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
</code></p></div>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="additionalexamples" id="additionalexamples">Additional examples</a></h2>


    <p>Following are some specific examples of things you can do in
    your HTML documents with SSI.</p>

<h3><a name="docmodified" id="docmodified">When was this document
modified?</a></h3>

    <p>Earlier, we mentioned that you could use SSI to inform the
    user when the document was most recently modified. However, the
    actual method for doing that was left somewhat in question. The
    following code, placed in your HTML document, will put such a
    time stamp on your page. Of course, you will have to have SSI
    correctly enabled, as discussed above.</p>
<div class="example"><p><code>
        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
        This file last modified &lt;!--#flastmod file="ssi.shtml" --&gt;
</code></p></div>

    <p>Of course, you will need to replace the
    <code>ssi.shtml</code> with the actual name of the file that
    you're referring to. This can be inconvenient if you're just
    looking for a generic piece of code that you can paste into any
    file, so you probably want to use the
    <code>LAST_MODIFIED</code> variable instead:</p>
<div class="example"><p><code>
        &lt;!--#config timefmt="%D" --&gt;<br />
        This file last modified &lt;!--#echo var="LAST_MODIFIED" --&gt;
</code></p></div>

    <p>For more details on the <code>timefmt</code> format, go to
    your favorite search site and look for <code>strftime</code>. The
    syntax is the same.</p>


<h3><a name="standard-footer" id="standard-footer">Including a standard footer</a></h3>


    <p>If you are managing any site that is more than a few pages,
    you may find that making changes to all those pages can be a
    real pain, particularly if you are trying to maintain some kind
    of standard look across all those pages.</p>

    <p>Using an include file for a header and/or a footer can
    reduce the burden of these updates. You just have to make one
    footer file, and then include it into each page with the
    <code>include</code> SSI command. The <code>include</code>
    element can determine what file to include with either the
    <code>file</code> attribute, or the <code>virtual</code>
    attribute. The <code>file</code> attribute is a file path,
    <em>relative to the current directory</em>. That means that it
    cannot be an absolute file path (starting with /), nor can it
    contain ../ as part of that path. The <code>virtual</code>
    attribute is probably more useful, and should specify a URL
    relative to the document being served. It can start with a /,
    but must be on the same server as the file being served.</p>
<div class="example"><p><code>
        &lt;!--#include virtual="/footer.html" --&gt;
</code></p></div>

    <p>I'll frequently combine the last two things, putting a
    <code>LAST_MODIFIED</code> directive inside a footer file to be
    included. SSI directives can be contained in the included file,
    and includes can be nested - that is, the included file can
    include another file, and so on.</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="config" id="config">What else can I config?</a></h2>


    <p>In addition to being able to <code>config</code> the time
    format, you can also <code>config</code> two other things.</p>

    <p>Usually, when something goes wrong with your SSI directive,
    you get the message</p>
<div class="example"><p><code>
        [an error occurred while processing this directive]
</code></p></div>

    <p>If you want to change that message to something else, you
    can do so with the <code>errmsg</code> attribute to the
    <code>config</code> element:</p>
<div class="example"><p><code>
        &lt;!--#config errmsg="[It appears that you don't know how to use SSI]" --&gt;
</code></p></div>

    <p>Hopefully, end users will never see this message, because
    you will have resolved all the problems with your SSI
    directives before your site goes live. (Right?)</p>

    <p>And you can <code>config</code> the format in which file
    sizes are returned with the <code>sizefmt</code> attribute. You
    can specify <code>bytes</code> for a full count in bytes, or
    <code>abbrev</code> for an abbreviated number in Kb or Mb, as
    appropriate.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exec" id="exec">Executing commands</a></h2>
    

    <p>I expect that I'll have an article some time in the coming
    months about using SSI with small CGI programs. For now, here's
    something else that you can do with the <code>exec</code>
    element. You can actually have SSI execute a command using the
    shell (<code>/bin/sh</code>, to be precise - or the DOS shell,
    if you're on Win32). The following, for example, will give you
    a directory listing.</p>
<div class="example"><p><code>
        &lt;pre&gt;<br />
        &lt;!--#exec cmd="ls" --&gt;<br />
        &lt;/pre&gt;
</code></p></div>

    <p>or, on Windows</p>
<div class="example"><p><code>
        &lt;pre&gt;<br />
        &lt;!--#exec cmd="dir" --&gt;<br />
        &lt;/pre&gt;
</code></p></div>

    <p>You might notice some strange formatting with this directive
    on Windows, because the output from <code>dir</code> contains
    the string ``&lt;<code>dir</code>&gt;'' in it, which confuses
    browsers.</p>

    <p>Note that this feature is exceedingly dangerous, as it will
    execute whatever code happens to be embedded in the
    <code>exec</code> tag. If you have any situation where users
    can edit content on your web pages, such as with a
    ``guestbook'', for example, make sure that you have this
    feature disabled. You can allow SSI, but not the
    <code>exec</code> feature, with the <code>IncludesNOEXEC</code>
    argument to the <code>Options</code> directive.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="advanced" id="advanced">Advanced SSI techniques</a></h2>


    <p>In addition to spitting out content, Apache SSI gives you
    the option of setting variables, and using those variables in
    comparisons and conditionals.</p>

<h3><a name="caveat" id="caveat">Caveat</a></h3>

    <p>Most of the features discussed in this article are only
    available to you if you are running Apache 1.2 or later. Of
    course, if you are not running Apache 1.2 or later, you need to
    upgrade immediately, if not sooner. Go on. Do it now. We'll
    wait.</p>


<h3><a name="variables" id="variables">Setting variables</a></h3>

    <p>Using the <code>set</code> directive, you can set variables
    for later use. We'll need this later in the discussion, so
    we'll talk about it here. The syntax of this is as follows:</p>
<div class="example"><p><code>
        &lt;!--#set var="name" value="Rich" --&gt;
</code></p></div>

    <p>In addition to merely setting values literally like that, you
    can use any other variable, including <a href="../env.html">environment variables</a> or the variables
    discussed above (like <code>LAST_MODIFIED</code>, for example) to
    give values to your variables. You will specify that something is
    a variable, rather than a literal string, by using the dollar sign
    ($) before the name of the variable.</p> 

    <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
    </code></p></div>

    <p>To put a literal dollar sign into the value of your
    variable, you need to escape the dollar sign with a
    backslash.</p>
<div class="example"><p><code>
        &lt;!--#set var="cost" value="\$100" --&gt;
</code></p></div>

    <p>Finally, if you want to put a variable in the midst of a
    longer string, and there's a chance that the name of the
    variable will run up against some other characters, and thus be
    confused with those characters, you can place the name of the
    variable in braces, to remove this confusion. (It's hard to
    come up with a really good example of this, but hopefully
    you'll get the point.)</p>
<div class="example"><p><code>
        &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
</code></p></div>


<h3><a name="conditional" id="conditional">Conditional expressions</a></h3>


    <p>Now that we have variables, and are able to set and compare
    their values, we can use them to express conditionals. This
    lets SSI be a tiny programming language of sorts.
    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> provides an <code>if</code>,
    <code>elif</code>, <code>else</code>, <code>endif</code>
    structure for building conditional statements. This allows you
    to effectively generate multiple logical pages out of one
    actual page.</p>

    <p>The structure of this conditional construct is:</p>
<div class="example"><p><code>
    &lt;!--#if expr="test_condition" --&gt;<br />
    &lt;!--#elif expr="test_condition" --&gt;<br />
    &lt;!--#else --&gt;<br />
    &lt;!--#endif --&gt;
</code></p></div>

    <p>A <em>test_condition</em> can be any sort of logical
    comparison - either comparing values to one another, or testing
    the ``truth'' of a particular value. (A given string is true if
    it is nonempty.) For a full list of the comparison operators
    available to you, see the <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
    documentation. Here are some examples of how one might use this
    construct.</p>

    <p>In your configuration file, you could put the following
    line:</p>
<div class="example"><p><code>
        BrowserMatchNoCase macintosh Mac<br />
        BrowserMatchNoCase MSIE InternetExplorer
</code></p></div>

    <p>This will set environment variables ``Mac'' and
    ``InternetExplorer'' to true, if the client is running Internet
    Explorer on a Macintosh.</p>

    <p>Then, in your SSI-enabled document, you might do the
    following:</p>
<div class="example"><p><code>
        &lt;!--#if expr="${Mac} &amp;&amp; ${InternetExplorer}" --&gt;<br />
        Apologetic text goes here<br />
        &lt;!--#else --&gt;<br />
        Cool JavaScript code goes here<br />
        &lt;!--#endif --&gt;
</code></p></div>

    <p>Not that I have anything against IE on Macs - I just
    struggled for a few hours last week trying to get some
    JavaScript working on IE on a Mac, when it was working
    everywhere else. The above was the interim workaround.</p>

    <p>Any other variable (either ones that you define, or normal
    environment variables) can be used in conditional statements.
    With Apache's ability to set environment variables with the
    <code>SetEnvIf</code> directives, and other related directives,
    this functionality can let you do some pretty involved dynamic
    stuff without ever resorting to CGI.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="conclusion" id="conclusion">Conclusion</a></h2>

    <p>SSI is certainly not a replacement for CGI, or other
    technologies used for generating dynamic web pages. But it is a
    great way to add small amounts of dynamic content to pages,
    without doing a lot of extra work.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                   images/caching_fig1.gif                                                                             100644       0       0        40203 11256640756  12476  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89aX      %&&+++&'(555469:::7894L(6H'>Y1;G>@B=CK4AQ,Fe3OpDDDEFHMMMNRXUUU]]]IOVIWhO^q]`eLb}ccdkkkgghimqoppssswxxIgLpSkPrOxQzLy~[xkefupXXYZ\`ycwkagfmkcou{tspx~vs{z~΄ێޔܜ֙ٞםܕڐх僳댴㊶댹킶㔹哻뜽䙾钾歼̤ͥԣ۫ҩ٢жƳʻĸȱСޯիڵͽĺ˳ҴۻѾԽٶߣ!     ,    X  	H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@
JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿LÈ+^̸ǐ#KL˘3kg}K&&ͨSwBɸ'Ei0٢o lѧܵOO`5cV.;cUpw-Md	R3F~ɌϭOWJ<}V[?\h`<d 	҄pxP	cgAO"\pAkT Bt>V BjcPߎ<Rq@I>
@ h`mV ; c	 PF=e?bhLsA	<d9TעȦ1(gUP(dMV(S !P O5C{eXwbS$dcB	!@ ]h ť!(@ 
PA2Ǣ@J2Y(|
z h],f[S\Z뭏;\d !2ĉ=  'mua"B ֑+V;
p<JC0n
(*>Td`s~'p2IӞqhXh2
,mɈ{S5UeƔa?[BpFd`߀c{c2n1AnQNa~S?Vd.(dH+ꮳ;^OGC^O;<n=So?_~~܃𻿾?; hV @,`x@2 (AF0t`jaGhA
N%`WBr+!]XBNY' )H0ܠ}C7 {( *qMbh#NчA"Њ`LU 
6pH:x̣> IBy; &$"3JZRQ$%1Ijғ$(EYO&QSfT$Y	KN&air%-sa2%)ML]ǔe,	Lil6JƬ&5yq^t.pN<g-Jv'% 12o JАH l@
ІfdC'JчpͨFOm E?Ғ6t&MRtt-}LvP6bt8MVLsSeuth=v*ԢFMfԅ=z>q{d~u&HԂ`u [u:Zt=޺z':1r}T1[HOvӦb-1zPtS@`@b:1vZ@M;֡Y³@zΣJ}>۹BKL9-2t #D(?w΂V
-~@(Bjԭcg1)CB@h򥬼M`+Ow
~؃ @WT\~.~@H_ETBحf{"P @e<܁h( `PE9"g[(KQpe/$@8.d<&9uf(DNPhNI.Y%tlǙ#1EC`'a
GAm0?}:4$JQ. @=h@w-PǥA	>RLC8ĩK1%=tzckEþ-o(X9$DARر*܁&ςdֱ&o`h{[Yh#D1nC $ĀZpw65ŧ\;!в(NQ
5 p<-8tWv]=衎qNo? ۭw+AlT{>Jx. .	BB'`<I,seނ!2GN41jc`#+*WQ_

/OkBߋD}N<A*oXP@	Ao7Ԣ|ե>q!pD.&`hOW67~[JK}c
\ \[i~7-Fc̛
fa7&
0zv8~zgS3f6yK&^a'eKdox tA'v|!!"ppCa~tp__EeOw9	`
>G<Ѐ@ DjlTUQdeWdփDzhofzqQ60b6S oC eSc9{F
q'砄AS 
qӅ	々LVZt	c:}v jV
ip@Cpx`*o C@\{eX5W^mphpH)qs#3wԖVqvo
p
0Hx|KF!!`p
p`vO1cLdk6_4go6
pjj0|t `*)R	lP[6h_8]SVAx
(	:K85`ȅ,TRt]Ń`u{
6l]o	:, wWhiu]_L{PYq_z	( 	`C!_0y7[Q_D 
gzjHDiըX_`P aczp0 	G׊x!!PI^S)WgW0B eQw0tB(#t~KXaSc*MIE0]Gq}[M_Rh)u@ט?AVUW0h|Kp@	 gP1i8 `
r@ӧ@Q^X_UwpVqXƙɧ x0F9QeWyh^GKwp	@wyzjY^8^R`ah
@	Ç'"yy1\%wvkCvQ	X8l~JإP2
svj7f?XNg`R`^7k(n(ixoIUhX5_OeeP	zE`*p	&W7HXp:
>w(dJ
oC 0
~dufyh"8|
g2]_R&	l(#P GЭ*qY@yev{	t0jڟъHǲȀDЋ4vYwR֛	`0zi"A[F7
^ss'w rws'#[0pӹkxy wqp@ZwP| J9=S-@yp3b%e<fwo`g[JZZUyɍ
| #XzنrkZ,*EG2)UEmd;ew"Hz@
rKFI%Z߂@
p@P	Ic_Uhs]񸂡s7Ȍ++BԠaZ?r`
PXy{Eع7Q-0kǻJ
XXX>qzڳ*wcdQgsv_+L)
|ɲ$e_h^cWv@q*xD	RY7]Z{`{#|yo+[
$U3LP	c"Twk,qzfjpoQ
xvk7Wsw^Qpu7e?kYquQɛ|)řnEqpvg[V5ixik-e\t[(
;aQY|U^3{sr )Xiq7ܜ&v%xHq4<p9W\Vf%SZ:HA	fpR!	_B|ۮROp+`ϣw8)*O`&vf^6{IKGŘLtzqq]w婩Zb0{ I0	
zNE@m{Cw	
l
u[\E́ e4'Buύ, XX9a}h7+l-I{}:S`*79 ӹp&Y	:jP`KuH0^=ƪXi9GYFKZ	sF<YZ`ӸYM3EW	aƐmKUAF=W5Oyk+vIlqeb	|@~ǟ_׫3!i	E`yectퟮ#vxڡ
P6V 	Js0O(.K5)vW|[[Ѿ@ԼFſD  jY QJƛ~{ׂq^pP߆ihm;MypB WLSpt 
	< iΖ W\qZK0gl![1[,qF׺RQVCPֻ])wTj\r0j\e~N/R aKn/e
}>5	v^B|q`xQk
sP/p%.ʧװ~pX}{fֵc!QWnҋImLՏ@
r@uPZP_Bhsz?uXck^OokZ); XJQu}ʉ h0{N&sH΀kQhǎ$O	xKЏ (7Pv:XIO1_R=ߢm+0_i
 h$5Ǥ{WO_~>t1C!^D;VFD鯢E_?yAb"B8hQ5ƔQ{'ÌNhSTUIaHYv̂jWj*);IRD.=p",*Z<yD;udLCjYQ"n|dʕ- fNpLhңI&-4\T~k٭em;6ݢ,r5 8nАQ*&Sl1U][jm><wOW ˓B%F7pqcFr,M0-λR[vs@򦳭5zۭ;P
䍴.OtOh!3:t0Aq3cM~65䱬H#1ӌ3(I'2J)'2K-< PЁ"v8 . -߄3N9s `RNؠZhalܤ3QEeI;K)Vh:P3*@ K%TIK1UʐTrD+j\wW_9`wbkaxA`A%~/0-`
*7\\UYq[\]qKpq6,B/j*#C]^y.w^v
@qv{lA8baXdK+e׊2q5f`U59gwg:hs'a8Y""ȃ9F:kk}i)	G5Xk߆;n iiY41晽&p)BXP'r/w'"cR+<uWgݲjZz	s|Fuw=f@xG]M=yg~2y铿G[	<☤eI
'3rA(ˇ?~e*ku}y/L7"݃6c<%:jD5i xV"A0 ܌ M|sq!UYa+DC-#
шG
!'9$.- "a!ET\c:X0QJTUw<)"a
=,j}G>c 	Ռ"PS^p1I4=A)	w$//K3e<Kcxc#AGd E$e˄ǥ:n1(2]1d&ѹN#M3I$-a@Pp
Jv2
P~"s:%{_@G|Q&E%zPe)p8H{$5:Ò+%:aN2 F ID-	*d!*9kIENC8!|4SUQ!abOpTc_KKE>	(|(E2qUyY5:=&wx$?p*"(!5t_cK9Ynvz83=HBV3d-p$@fGvy*mGȪe00!܁Ҹlw.wuu.{k'}uRbS.𖱴bE;1&ȁʈr]%_ձb|N@s50+[/[Hn>Z+:nrDԭVx
qs9El9W0[J"aȘ73a8Os(<d#yrr,DbB.Npv,MtxFKeDxHA`5[ȗ,A6vrT=S% h'3+0SyK\l:u	<$-jT*y7>0RBqBu2B;A8="8bP)d:6mB\q%nvI!`'Ue/u9?v*P7:+ܓ%Ä5hY#ݝ5M4mb7/1{8f#cR|2Lġ-Zjݔ#9\]h:3y| 7bվyef43ډnN0xI
V+a"@>YǽUyT/anjＵ5S庳]u>99|%?j,ryg?AB4KrʏW<$넎ԉ^؟-!H=ax/|<}q>(+>~;}lׯ\yzL,<fZ֡:[ݑU
B@9h?#*꣌~s7ۿ35m	>pC@59ܠs2BS@R.F@;Iˇ('oRd-Q[D<f#lҼ;Xx3;G+:KBBo !xLs3A@Z\,[/0$} Rz:'l>c"?ߺ[&'@j1:>˓r`:"gLC+>	?VA6ԠCԨMɊ<DT3cDƉB;9b@5"hؓ3kZT	U_Ads@1D$3Eb|7䟥{Ba%TLdCIK<@AtBK=P-ic
*ʃU?n,EdGF!xK_$c7>Gw\ ,F=}t~$8':MS?FTȘɇd4$xoǯjFﲿQ-dǓly<TSGbOLCEbFa$F4r.&x^87ICA+ɢd~]FbJtLHt"zCsxIlJ5$ɡ$[:%J$g~+IMlpzPsdļ2ʡJu2& U LG!ZGa!XL
:4T	գ%xwK4dn<+lwr!DCFR̶Kqd"HTpIL$CL*&(JTْ/v3O޼@PZH<GDOaE(4^ AvKa$+(`-G,DN\L!d9B44"ܰeXШP!+LMB5L͔֋p8vQ]y<-M~KQDR̩.(V2R<
RaR#M1yȈ.,<.ݜه`CeC=FP(#QOm0]8G]}F"J$TћB{
7_8kjPKBM\ӷD"W>/US]+$PJmOM]~K+S6UQSnU-hI-Tݳ4/\T)Lu`="HV8
J3RV8Lg]q1zDV{|##+,VJ4&{.D%ZX\%XTXW/ClցNΕBXEdS+[_-YiOx<PmlUYrW}H=9؏%EMo!PHʝfҙ{(E^՝}s˰ٜ( @_hU YVYYLmڟ4~zϘBX֑,O'(n?M,+RmNN(0nXWo[#!?((ps[ge)]$>ЅyX,\+PXl~_U	</CQж][(!l5#w]9"0@0t\ut⳪?LvUs]XFm50ܴuU{X.j0߂51?7sZM( =4:]?О_ _QkRe[w)`=6%5@Eu-mx\bl`%^Aul[-u.+//M@uW)xsbbq0](xxc[y|42 wYUq#aF226.Ѐ-Hy (e@ zw؂i)O9v@n@5)؆- 0-e23 ,X 9lQ	cc(8QeP 2.wP~( 4؂zg3-y 3(VL^y!nߡV2( 2w8P f cP
 *@5P2Pf0c .Ї3Ѐx@Xj j( N3`.c .x 52P,Wֿ+@H0ǃ]f}xz P 
(gm. eЇi(e0@ bR ˀ20
02 g0  PxXk10Ԅj#deaF-mBP͞1K.L^4f} @4~iނ.@ kl*h肐il&d5@2@c(j@ 5ˎ:3Zk%t`aI>j-.:wc60zЀKJ3}j@de0 
xvi?~jZO`'ЄvXoJmf8*:. 4+ (}Ȁ5 *Ȁ0* + #i0QȀ?#z flyp 3>?ɇb }q$NX&~bq~H
AW	y@A'4G @?El	S4|}qql$b" _;c\˾{kPWL7'ɹOO ^oZ8CD$>Wչ+Y0SwvpnG+3]fOs-Zh C4RHϟțɛ !!mnVoM/,?P	뇥v)hk󸃱wWZ( y#׀d8@ +	jHr")yj(i(c5؂-+8w w`iL."ifZb_x ߔO-Ȁ~00pG jP5~i20j WX3 y4(w(n(zPtP(>~ȀTgedQ@h{acҿ{|g~ nPȀȝ~0{+ Ȁ2fWx0 p؂8 ~5  24 Xw1u!m^}V (hP1
2lp!b$!ƌ7r#Ȑ"GI-Åh%3̅~W&!f,<D$"1jnjR.Rad(/Ywj*a?iH\\QY/
0x0~lI!gȒ'SܱJ54c;Vq2  .C1hோi1ށ[ZOy|A"2z vXVPQmELu/2/H0 vdInIH#X	IUӏUXQ2UQFwlQ1e*saUVO2TQtT0ƀĳɔQ5bӏʀ^%c^9$_|ď7@!D%a:fbT~hɑ2L&&aTʷ? E3g

^Ts(24%|wO1},8)a&`vMz*&)IE|22i>2,˟ٵ-D5:	ː4P<%`µSA @)Ԧ+Y:R>Q .}4`[asAA+lWUCxWHSAxqjP<	25nHDx2?)zqeQ @ IkIKbJ[I
X@P'_zj~5+SN'BHm)WI<`BM護<{w{^x;9?S.y]wIsYgM1.>F'f ;;?<<Ӯ@v;!<O]P4?>>髿`v]R;LA{3_+`V< 2| #'HR`B!r/@j  @EB, 8CBuCHԡ%(^3:UmI(HC#.|Gγu͏$
sl_ЀQPW^
bKgUEoAR;F0$5Fq$T  pVq	10(bh*c1p pJB(A
GM)DH!Րe92#A*(a
/{y(/b^3̏#ßy>jRd75͎P:¹}X2Å
v^Kc	/qr$vXl(GQ8t#(''wLVC
T]8H>"iS$
3VI6{b
E.vMt!TT# B?2c3ꤦf%BUCY"+{wpb^@TrEVNYwaEE<xW8a&@Yk>d0zQ*V2D+K'+-!ɇ:
` SkMKi0!mPvyYF="I>@F2k5V}B*uùa­Qj]@CSF	CMTsKb=>$T}n^O~p}}cޛ27NҺ몕0IYB/G)ApSx$͇-`h=")z[p !--My=a# E	tRȔLd`8$d1/if<d0f\ؤUGۖPY0Pq<*ЋOHAaAg KR:0_(iYYLcN͔&08;hqqk̺ϯrGf`%&
s ;+Yvmغ#X) m?yNj}'KaVERֆ0mevDümߺ*}8ƻ!w[AfKi❵Gq[srsex&6n'Sk$/͸/\><ڠM#6͗('.
z$5=0W!1σ=]AzG<֮c.D6l,+zY [N	#کTwDjj>#Ж1Q~
F(d|_CB";td8 h_V!kLa`?Q~9bco?lyי~Gx911pC0~aAm=F8t>'oUS0ET-C>`1-?C
2?pC:C0؂EC-GC}I]^ C샞(D0k:`=Y0;'bD?*?-:x&ÑCXM`C1E~1>+B܂8:ܡB'(`'Db8|
aDb` `aɠhRZTK.T1BC-:C''܂%
ʎr"(?@b =8: DUA"xы/=|B0=p!(=`>"v5b8C 7t=`:%='>(`>C<bcC/K )=-%҂rcCƠ=B:-8P`Q&0B:MK#UQZoemGcHiT[=HΐH
U^)ĕ,C=I>ZW⑞/?YLYV>iP-!%yE5T;
`Z[8NlΉWDdF%J"b?DZfkZBlbDZf@.D{m!kN^5_cסY90zUZNmgF̑HUC &fyCD;'yf;&c'{u^/Zy>ݫ~n{W%sB:V6~/mREp}h{M]f|b%mޓΌbF|Z F+b2rSl&CD4-B!.PMEIPi]eTO/@)?-CIiCi;)[iC{1AITYEu9B驑(L2ix6XI:A䞤>USFCe}*jCbYUL6̥V b*JxÐ-yJAYBh%y
&: B:?Qfi'j{z)nӽ<kƩ2%b hT,8"bkjU(BLJY뿆S],,# kΨ:=SNl8]ټL2[	 CcB뼶jݫlbB&ޚkzS2,Af-&lMg zӹ-%ʖ0tƭ6!ޢl)F0jl-UΩ~lqJ-Vn8*!tFbI[E&f-6Ȑ\1lz|0.H,*WkJL/(6
e>k6RLn*?8 n6%Jm%Vk=Rm~2źlB-'ԝo4z]Zۂ
lѾ=HD8,V.b/_APFYɯ=l<<6 :1'/17?1GO1WW1T1C/0q'q7q11q_EH1 2/H4 h@	$r	p P x"O2%W%_2&g&o2'w'2((( @E" )r+/+r'2)+_-/20%	dJ4t] 3;3|4a<4G34O54k5W36{6gsAl8w379388 99:G 83<23s >3@s;33s5Ss:<t<:/;4E7tEKC<G6 !SYѲH4II4JJ4KK4LǴL4MO  24OO4PP5QQu x1Q7S?5TGTO5UW5I'uNN[5WwW5XXK5V'S5ZZ5[XuIl[5]׵]5^OR4J`y va``vbn`#6cC6bb6c/cudvcOcg'hSvcodw6h[e+6dck{j{6lvkg6e`vfo6ovoK6pWd7qmli'r6n6pOhc6lvmSa6kvtc7j{v_m_wtxvuv_w<P4P|ӷ}K|7}w}׷~78wx~~۷3x#xwgx'8?k8G8/8xC7xsx'xxxCxw88K9{[8xOy;#y
999ǹ9׹9繞9V@  ;                                                                                                                                                                                                                                                                                                                                                                                             images/caching_fig1.png                                                                             100644       0       0        32214 11256640756  12520  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR  X        PLTE     %&&+++&'(555469:::7894L(6H'>Y1;G>@B=CK4AQ,Fe3OpDDDEFHMMMNRXUUU]]]IOVIWhO^q]`eLb}ccdkkkgghimqoppssswxxIgLpSkPrOxQzLy~[xkefupXXYZ\`ycwkagfmkcou{tspx~vs{z~΄ێޔܜ֙ٞםܕڐх僳댴㊶댹킶㔹哻뜽䙾钾歼̤ͥԣ۫ҩ٢жƳʻĸȱСޯիڵͽĺ˳ҴۻѾԽٶߣ^\   	pHYs   H   H Fk>  12IDATxT[םQ,msŊ]`t;۳l3IgvR==G9gPyqlg `{k7J6Sc$i(UJԵ,i8͡ı,"}}6}>~}[!3aY				&,&,&,&LXLXLXL0000a`1a`1a`1aRD+ӽ؃J6inuf:|5ײe`ͫvn$1X%u@r#ᔼJt# 
AcG]p8DYrlX3ʫ	Hra-t:]0/q'n۱v݃@ӈ\]jk^a\/1|mcb{[aȅ5b,ZDiNެsUk$MT6hj@hIۚD6jj@Ĩ4VkM~A:zj\ VuA..%tܤz\K`IW\j<V=|U47ׁmh%
^vXDi^1̹.p$+u(`a%kJJbQAC6B&8on})0BͭrKU*/dt1Wv{H6%-W.hr"9-& EŭMuI&x 9dt摆|6iLR ӕ?5ǟ ɮ8&)Xk1q>ׅĵE-ѯ?qxW X+V^/9_W)V},|_=[ZǿjקdsUkV 	fVWR{P5sWxS%xGc/<){o{S9L鼯Xlb *1a)&,&,&,&Y#ńi,&L	*00XLXLXdJ$#čl2
GCagmrmEq춡cg
E;u!\_$a	}vPoX'_p##vk/u?odnu_WbFahԏg̚Tig`ݴ|xz@OT
_X7/xhp@Ou4"\ÀsU')|#tTR7=o?df_ZhP
F&TiO}nbϬijW{wQ=hqEOxCi	FǻH⣏EFVQނGݼ?k| pFcyE[O3Bp62	K7ukpOQ_ieGWj
N`C;#9oMCLL~=m)cpH`Ԁ*Ƣx-hin<'j̝4*K +⡵4zɧ{Ni6]#kС.ƊxԀ9:knOPu`)>zh7l;h)8^س'yb``<>u0=NMnr;<)ot#D	0.ㄊ}m<ԃfxWl[Z8.M 탨O(xv}]GNfr{E18Tf
`mpަ{;;w:
cƓ?fԛA]Jah&ž;qꈢC22G;j wP0m}Gp`#mܹcGω* MB"
,n	eFp6A⊞ى}Σz3Xj~>ET8AtA؀*8qRlhi>ʁ菤h
2D6<6#g>xhؼb  Q45	LawSNܻ'rޔ+njZO.p
NNVOQu({xDr멠D7OkJ{jF=(cw:yRSءB	v;SZf
G?SGcSs1ja7MhSBM1L@Ma?yہttPʊUe]9/`$<Mt(>L9ZE
M6<E)Bذm3d=Q(^v6Q	\iJ;lj*PVIlt	F~i]G8 Զ7I@`[qM~Dذƅ*#5V$`##xڶàmF/[\q-KOqd	b8uz&Ti~l'AjJqҥq4rK/r|͟YYQATѶkx]%>YVwTUorm*wO~yp6nş3sPFK&/I1t u01<SX8igVg"r4)fM(i2tti8Gś>zL$ i73pm 5̹iK	:`
/	{ZJrO_84~8nz`@Q˲p+O3zٖ]ˌs{K7b7mǻD=ŝNh>:]kgYr]O8	_ħ&
,]Mw3/E;'pS/vr0v{!(O|hNr˘ɇӹeP=dpj~Zq:Aѡד5x4	i}iO%tኻCz`	6Ht"8pEGvtEGˋRO랇8Cm9H|1OȴbOS.v҃H_>e`)%Zk޶Pϩ'=>u}Xp'K1\LŹ T5m;xM"WN7D6\iʙJ7jLw>POzk4g*%6h>9cPU6+N%r=߻ʜ8?b`#֞<tB)?t,cM&'lb!q@F+|tѓ)!kn'\tcW|N_aMr_*(-DGIQ0VJ2w9k@w&Mݖ]W8цT;:qo2kR#pDJ(,3 2paQfI-/AT+"`K8hfc;Z7pMU!Q_4t"JjWĜ	4(z@J5w, }iBYH^ǆU@W4+)hvFwON	'x1JWĮMǚj(b"X)J"\8,Q~ɹ<7/;KYRRcCvn	V&9)zț Dͭۻ,	cʦ\HNB+ūM>+|d4*QڗgWJ>zsdIt).Ӹ>6wdOQz6c#XcM/p׹{]Ww<-Bc^YORYlvh
AqՓbXr-8ދchlp	*6.G*X{4)ܼǁ;M!TIoދ	wUsd @|صnzrhсBGҥv0N8@B
h&
.Oc)WL"KP?+ύa=*Tqhb0%wOBm@87\hہ]G0_ѣxҽ'
3
V-Y[:wB_UD 6jC<v @Ø*ݩNK]c8nnR@nb#"(]X`mX*U	9;<ưo& ضλ$%Z4Zݢ-sǮ%؜<b0c.`zbww= ٹyAJMCc3gi}H1J9*03(ΧV xB	.HEm93uy3sBe&DܧfePez͵5-#K zvsq4Lf1|YKgQe$8	+~C{V`qf=g)dfF5z24bÆ`=0zcX3, (yST[Tʔ$,C7oNU7,9xc*R[l__1B(DݬhZi.$!\2ymekǍ{>Kc
a.=YnV`RzAzZdzY0:2KCصW:Mɤ06MJoqCi締6*VE#\m9K^8P>4SKv !`ˮUK2VCPۧQT`:87Џh0)듌֝@<$"iw)9J7e%zm\|ޭ6qǈ`SnX*EPbw7nL~Sc]1+f|<̞9sE7XyO)b,{9ڶ}͡(y-|;	9ZSRn7oYL=[vw}}kvfuqd6~!yWTëS[;rwcrqIqMm}ĝsS3fxmn5aAWkw}oUТӶдOCfͣYw7b'Oq/~;n]s[ΚL+k?ſwܮլOnκ;W_ojr>ş\
<	h2}AjW:VZ澪a|:r)Y~1￿o?p緿U]S߰F9U-pd(*0[|[ʴ|ܷ3xyGi$cĄe+ʾml}|Blc.s͑u}a\t;6}HDȬ#cEFm|4zg.Pƻ}a׭2m9_hE{$J!6iy dCLx /1U7W<֍.Ldԕ/RfzX7\qX1B(2Z$)f1EVIFΦ~S۵/zVZL!kNipmt3m
0J(fU@c"(wq݄Rۚ|=|PW=t71d)R VAR:=AR<`EBv݁{G;䞗XS7zڡ;9}s1+`-pkȀJ0 bQ!={x/+ofI 7*+{s(^",RMiλAI <2 y8,Q"7	
:o<p$D"XXZըtw DQ]:Si7ID6ZaVHnkI(9	ZIH70S8콥on?
 BE	^PuT}Et4+Ƈz\iܣtidt?e)4wD%X8  P
RcEB6$¸Vl'7рƊCи$!>`A4>¹;~$G)LN~uyu+{4&}Kr@8cZ+c`;`ÃeZJ¢¹\-=<[Wbpr"\l
5Lcy}ٶ	?	U:Bخ0	1NM<֬Њ+=٠_brPր59fm{XZnI؎~7`˷Ae$tC6h,܊7n;"BtZX,*9X#}+b`-:Rlg20=sABkld|5l-;݁	Vrb+,lQȀ'{hؕЩX(k^}tYn`y!<迋2iQoP!0TnHXxDY6	N4XaIqǿv;tGcrm~,YiujDe eX(Eƚ?*LMHD3W]WJIgiWO^,JZp_X+O
'ְa%װf"!/e$xĂ<@VXO3l,DXEa=,V+$I;ﲓ+X"s+(;'tw(r;,"`-4ؖ~|KkסZJfLh0RM*X~ky
9qZjpΗmC0["y]Xs{{ɄԼJ'Ů,MbSFm{di0f
oVFU;#aC?~>4#V2wk	ɾٸZX1xˏ\X,*L"XՄd"ySmp윉ky,~,F}~S3YyO߯ZP[&DY *P{C
e-ϋ캳FT Zaʄ~<-!ɋ)6VXd߯P`ՄgjBe>J;HCJٝkY)q`jB,lW
|e>`}G
nxw:P[5U&Hvwٝu'J`,DXc9'ZሥTLֻlY`Cl:X2oՄ7gf]:Xv0-ZWH(X~;pvMN2\rkۀJ9Sao䌧خ5˕4X´+dMCP+jBCũw+`4+ `fRVQʄ)F;8n3t(,V!,LK25`eCTEC<	EbQa2?,0pI0l5w.BŢB8gh	eś´^
'ԀUBDX˻8|:M`ZaBWw7|1XTT5jo|ErAUBMDX)6]FFߎ0h]!|L8b{rM}_{TBRW8yGvcky#La{j7t1NXV~&(˫awO]
Xxñ$bQ!0X0`}\>&])d$ȝSd	Y)+jW0nMnzzj=Z~ISP({uokiSKTEUe+X	eݽhX,*4Xw\zzvz5>Zj{n,7UMT8^FX%Hj_JFJv}r镏M`%f
u?:X1f ao<#֊BME+`DX%HkuVVֈ̿_B5%55s?(`6KX]`FEtMb\e6\(1^TJo4mJЉ:ܰPrԙQasUMfsC'k:f.дvwquW5um	i<dWzP(:QmD"Mx^]`pK8inmNOyōOui׭-6ʛ3n@k{o>,a>PYzQQ65yPރEW[$rrU~cN}9uś9MiǛcPK%0ʎ_i+LYyyN#J"Z`<G ѱ1V
JZ[uujW
bX17P`5Vb5:]
Wi%TvqkDٵ^[䕪qMF%bZk9-Չi,մ&_+T<J$Q`&P2z!(kA/~:)(F!xFJlܙ"^H`eB2b
QF:k1b`VF4V1U\}B
q^H+Fdjsj:HC<'VA}HѬ%VOkbJ'yϯaS!!㊢Q9
7Up(
@TIRq#AqX62wO~"Һ*y@S,M_U YAQz|(UCުΩ))@l늂C3/l
UJg{~AJ@cZ-r%](JAёnHS$HnMC^-륀ؔ#kjDM>BNDEՍ6~IC4S(7j۰qk׸ S/k.7-jJ!%o5&I,݀W۹{ߤ&+	bX-
 V w3(XE)ڜ#z0NKvjEsf\DT)3qHWy:$uԊڂMR>u/%˂mX59UyVXvhA^Sc)Xd0WhKuUyjЃ쀮kܲ1P55[$gUc`=N|3@mqܳ.D̨eW5|O-B1%!i
#vmx*b`I>꣰!em~Do<$kŏ(KXRE".󸬞~I+w}me9Sfc@bR[ji	7(+AOBw:bҬX2_E)uQF(;rVXH̉1dDcEm
Ѣj8ǁȹVYfug>- u+WLO;3D*LaxW`e1BhpX	J7% m|ZI	ҰCo|!,ӧ_64r55rjV SVV)\%DU-JUHЪy7m$PcYu/?RQYpR1A8h4] +Q%
/wpsrXQEN	Q%XzO?"ZrdޫVޢZdGTm<,zA%G5콥Z]`zs~,UX(`A7mJȽ
4V{/(VCi떵n*`19mm_[},MώR2{~D'XXy*_al%tBh`-B	V.UƎmf`1+`p_[c V?N!X$o߰B<,bny+zS~R_G"CmИ^xl$o}3f
U?n6
ceTc`_[3+rPv*`1=`LceR5i45EhLy{Ʀf
3j
~e`1}!`;p}VX+S`͠?&SHb룽:-Ma/3Z
>lZHuީ~<lጿ }ר
GھLFXau~S͔ܳ2	$:(g.Q;c*k{6?E){|#JN*{Xvީ
{x
K>XG7%u
m7j,VX6~ãoK4U~UJdoIu0`}H+X_Wn1RcM+_!2c
ួ|S
u&]%֫ǸƨX4k=HC/w-}L1X_+D5;zZX0S`Ϙ,|k"C{o}mD-Xl]auGhˣcyUs_[tuj-aҢ_y+=o4fBca_ۊEVhШUZYs~R
՛D|m۟~-ȴW,#JNq02+TtJ~[f#mVxn+o|܈<j#wn6H2,}I^Af\~e,o-}~`nê+l	Cv647]#ޑ974yzkk4ﳄ)~+b`g}08vh	DuU:U<Qa
~jܰ?uP`E~_X+5F:B6a< *$V% +g~n`t[!jܘ79dyqEn35NYC~ߐjZla2uȪ>'۹a#51},RNwQ?ǧkǑY/0sjX^gGKYɟ/ɛP¾ܙtP8zmfYegbQa&5ܡx.?£BMᘽ+e+{AZ "
`Wk
Ӌk(`c{Mb1mxSHBtylrbغh,
M/~w',a7%RV&-QXiڣ°Uw\NŢ$0X]ELŻDC<w#"~.˞,0`+~|h5a[6LF kK`>i/~|hXgL\ۏ22ևǅMߠ,WHBE(זtgOA1zQmRVZȣW&'	߭#,[
Uix{Ni,W/#M!K7QIt+,٭!
oH(,/>yqlUbE贃~`|V`7*XiLEak%ŏX2_,vq&n?M3 X^?~v^WHXsjcg\,{z5֨e(5pqזJ!Vx`|9,qѹpޮx:+c`љB~[%BɄEkˇc~H]tSm
b~i+r_Uڃ+Lњzuo|=b&Yw+)\t:W,V+L3XVΰ	VƄ<Vd7tIRX+`ykX,ݐL"}+,T}\;Rx&L?XlT53z/j Z!pJn׋ 

֙J%BJX R/NMc<PRҴ,?~~^1iY3҂`;>;KRfM>>|~&keB`͕+\YK~f?VĞ%y>W,
0Y,_bdAnXLXL
b`1aIXI@bӿN==o~"?E_ԣ?kyyOߛ7=?[yz>`,ӏ?}Ǐi<S3_wzݳk){w|'8_	
0a`1a`1a`1abbbńńńrbl 6RD    IENDB`                                                                                                                                                                                                                                                                                                                                                                                    images/caching_fig1.tr.png                                                                          100644       0       0        26304 11256640756  13147  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR  X       PLTE+++%&&MMMgghsssx555~u[tQzfzskY,Fe'>YomX3Opc{fy1;G(6HZφpXۂv녱噾ږ4L~탔4694AQ޳ҽc׫ҭͳʺ˽ɟgܤԶƕx䣽ی㩿ٯյu둷789츿㝝EFHNRX>@BѷsUUUԥ]]]ӎޔܴp{왷١ỿĢ֕ڄېwxxkke&'(Ig\SkIWhIOVO^qPrLb}Ox  kkky~Lpwoppaccd҉޶쁯  imq]`e   333䓔ʣ:::DDDU  )IDATx^ɪ0aλ!ĐJ`CDW3      `l$ ((k ϫZs;Ƴ˚/UilV{ɱ<=)1je%9b9+PXH5X
-yvjsƸ{Bâ5R[>uu cy"!Gk<+\b-rYa?{U2z)RYS`~NMja(MA?ͧJ߃iH\6H>g_!E. @Y,7`
)
>З.?,VNDǙ=%Yڻ	ޮg8 0 E;VG(R,~<+Vp-^_!BX ,ڿºٹ6+_ҲBJ*R"mv7nZ(I+1IhHڴq'U!߫@3Q='`H24vr~g=+ Ӎ{VO{՞{..,A0L>n Dl1mA
h4Ym~ǳ},}`,U`b;]z<9xN>4pЬ"wbDl k5Irۺ+("=VJΠ-+^~5d9,NP$+iΛ(gt4M½'d,p%MҸ^ⲉKT 1("ݗov
P@Sc,6E&'=W~$t:cB79OIOUeMg[?~'~9di>d@D#NO<^)m^[ux)dbq]Ew5ƢF 2FM
QMґX&Hoˤo΃a!4UdXlDR-wڌ`¸Z#CR.MVjgF^etW--\	lv?~7٘t9Fe9B+of<kBK`b:bpRj<^Y2<]jNʎBcQ2ťi]O]]ʅbG~!ig$ >$hM^Yf,k@Xn;lHoNU<hKY7 9sΎ͕@R-zrɲJIPf)*"}t dzCbE)4vyIÑ\"DEN|ү;)U!.
$שRc<XOѐs̭U(6jġ޽Uzh~tCnQ#hZ)nPY(4i2i\>*<bu#c% n)&'Wh,jp	*޾XiEv1>.OeÑ=REV(Яݍmkl@$(o
|<UDOZ K $:4zvfa6VO^av1[ 	nhJ P);XU3(n*-[Ӛ<(Mp19!ơRicf@eLhcǧe8P-Qƪ	s두ڍMe*X,4},&DrLB{X yOhN6ҘL. 6@hXobPdd]\
/,-3b C80ECNÅO4am3!puIU4f(ˬ_Ghr! zdQSvK3{xTpH^ri;Fk6umg`5SnU9܌>M}Wf\؈oo!kz+Qܛ)Tb&38g
CܨΧ5YͿENә|>rK>LMNtw>Mg$>36w&6Q
/-=t3KG@d *B1ڣER(~4~otILw'S鏢=6}iSs!;L/0{){9zj ,0{鐢O_A#4+~"5Grn<3|ҀE8Ȅ0j;MC=jm*lOf'@UbD6iU8E翞DYd"!.ށm7'ֺRB4
"@FIUz,,g!Jk,%\*f%/J)Ā^m?4nP5qq&fT,M,/"Q ZR=Nc,Ad1jc<5ƠXPKO'M<> ֮.`m~8q`M,pxY1-!B,ߛu7SIpK
Ӝkk-WցU)Ʒ}𱊡`DWRe{1# vC=1[SelazN	,N'
ѰG;*Qhzwb\;BY~N}wց%T+9؏ܴr7fxͺ,M! t?#% ILK*޵7X@V{XFG={WRtŽ7inՆ<@37LY:X0ѼW&XlCwoU2QRyhb)EU5)צw`PY
( PV8{CXfqϕmi6dRZGuͩf1(k#ƊӵH`"l:GD1M1ڑPJӦ(H>ǌxSwiͳyZRgSӃYSdY"KZ:| ]N4A9uJOV$eMu0D>yF#YU?kK!΍;[ŧ	p^R)@].:}VtF(m*Rg`񡏨Vuetڙx.Ivf2]밇"n-O2kGX,[2FyEҁZ	M/hZgGdb=%`<"ezRWwLXlM(_bh~bn'{{_j-+oX:>56%~yˋdlvgm"hw`5djAŻ~
wݢb8o&lS$hŤ%,(F;`RqshPl(!{=K,:Q<,Cv:z|`ZҖ*vJ8gny9K^^8hO#Xyou{}9bl$.oC!(b'ȻդBv*5Z>+ԑU]l7	_I|Ie+Iǰ @X ahÑ:s[t#4Z4;(4
	 Bk5>sJ[c[9aE$/qP+`XcSCWSw)lfPDjt+ņ)B>(h,n˸U"P6MT8[ǰ睤9zٕBI*rfgYM4V8+CN~Hf%tK8n`>",T/ALmydlzyVYaCh[XS|RгMڡE}"K(+22	XSZFy?R
q>OdO
S
ŶXe/+~WN<B5."|@cWc72V)	_W+l!/9)o'~?CX@~>|)m y1;vh7ޡT0-lagOC*}^c@z0֤ѧEo&,ftl)·3;ͷ[?,T._m	L	v{'Jzp04sShN	/"BkgiГJRqxe@":kR'lK_)ትmIշ?{ZSvH<׺}'!bXlqitmam7WDxγq.R^>bb(,z'QZ\:6`[s(w.:tp6/jTr6ͻ@+ߐ^AѸZ:>(`2ׯB8_G zxiBM c6I"76@'%r-2-HCI͓A5+;R;2744W8lY}?-q8%2{X@FZgVx6{}y:*OMV$=CUcjzۨheĎc[b-2B%vbU"QH&wI)Sx dɢY2SN\3ѽskjpm߶ˑ3`G&*ߠ0T5U}58_kr^Km]6 +Nk0k;K̬[rss} Kxٓb!$ 2%St[ Q3<3>)ظoz Q`ϾըFw"qX:D%]a б#$f{].z-b_J]0
G X"xRgWP ,RR% Uuv+?
76IKŒKBc	o.kRA>:[!ȻsZuP᧭}	sW̰'Aޟcu.EY0ݭR%PwmHz`8ގ}r"1wx8or^aG9O}lo+ kO䝼̰\WE5Va% Y6Fart}|.B7a4gZis,t,>0Rv/o@ EfnҼ/e AGXBH\.tB mXFˍ+ 0Au2Bʱcꆹ"r!ĕ":mp\] CqYip2dZ]_V]MFBe\R}!Wx	`n-oGB RB D9γ@\w:;/(Cz}!Wl7=%yǕkFZ-K(^xt,aq.UÉl`Vp<F,XXt3VUBBDF)Vб(23>hBiM4U+9B+`'Za/=; 2"$5se/Ѿer 	`	3,huV^@%}ɇHwRBб܃7_/=jxp"0xv	%Nn H8ј{|; ,縑ywJQ5*<sQ:|y,wX	%XXܘ}2`>4
o`h̺{.aѻ+| e	r}a'xT~qI
If!Z/֍ŁI
Ij~Ұ?
I(3k.Wȼ#ĢԨ}
,BtP<ͬ^]0ˆuJ1
U-cz*W  %S:~h
XtF쳼h  i(S XfX":VHMḟB;Nb3hX B '}}]u,eJx.aJG2֗V|4;#&7@c	p'KW] 8QY})r+C#:7=7, [Y~ 
ǧ4#{\M(7]y?3Ck|xEhɤ/.+T4Myv_hS1P	AMha&0
 ]OMZ/Χ %םIFb;!^
Iڞ<q/Ս7%SӊD*?G[Ji55ii=9z*Ȼ7X1{k8LmBswBMzb*v`H6m[Z
a
V,UWܦXݱcs?XËsi%X
6HWw`ܲ:I,B|FiR'X5ۄPP71%s	AdE6v\T,TiD:
s		BMWȸ)'¡MhWnH!W.Wq
SS;ۄ*JՒKZwƭ3lBBzT"TFH&$}SRP!X
cU,g:eҷLҏv_Ƅ
37yȀՎWtu&m(F!B5Vu
ĥ Yt)Xر.r턆LȮXV^ O~F_]qSVر6CiKLhW#'g˾ +d9qFIND{g6q7[$$-]J.4D*/"m%SP/\6u7ިȵZUM%)ݥ.[ۚZ&{3Rpg<j`L⥳s`7t qj`IkY:
ag,XqTjHjNoـEʛ]~jX|U)KUU@}/
,nPC.Q`_!˴t+XM4ݽB hL;7coWO:,{D+
ԉكc`ΩG猇5!ӁuPHQbx WZ_78P-yhHG?сY4_o+u䖨HKx~K"gm9eEɯ̇BcpLى% ;įʻ^Q"c`Y_S6x]yJ2!V(rPVʓr	Y:AYW^8)f;7`fk.RU']c4	Rp3˗Ｈq͇cQ`)4_>2>~CW6,^g	ac
ԵڃepcN)QM`ϟ^P$p)7}Y:V8"`ٚz@
^ϠS9"a_z*G,	\{,*J:QK=Xm|"`gZ-2r~cD`n;-w %!-p
7Curb49Y_ccKu+ b5LN
nsj!NBq ' ҁ1QcUzWos9V6t&t,Kb
j?"]>sԏ=Fy{Ho/\MyoaiFP\X=,7Ehi0L&ģPxls7]<&%3RR!i5q'LwXR$J:aOtwp+~'.Bt5^bfֱw`ew[O>5'"n
Ta$籚]z,+;Vq=zC.Bӡ[)vK:e_oX#yVN?OӍ5$kW%bVBQGIh}quɺj
K,z^l~@cꍂk"ִn(rS+3W5Q`Etg2#?/~@f')57&F\xp|%P#18\M`{G=ǺB12
cI8ݹcqj^1XރGj,{xY+7FPm3Vcyw t`6$ Y+b-X5AI}-ss޽2XyrsޥXF5.])
wVd|~(a`λ"1֜ <XjR)XBZQJS7@:XWR8<{r,Ɲށˣ[/נ⮌8=B!BiHAٝy a=Q	`}5f!yw@
Qf@E@O`-BD$PHR4^(5nZa}:|SM<̗tBhsmwEF֞;
彣;{hR.v\ 롰PJS"t+uXw	CQ5#Z.,NR}YtS\|:9Hb@#D,xhAXWx3rnN>ЬB^PWXKI]\!ebaU(KO@CK2$qU$P>?W$DT,BwUV;1*I]>7PW.
=e.X4	-~i;-,Y!ƫ0u]>4̰D<΢֑B!r gXEYa<_*;ߧ#NiwX1	-aL3.A٧+(CEHB*4LOйI%ِ8-L~JP2Ah7?ƞ>^MGo|gޛ	бk,U:z&	R*-yģ!Ky,UAgAH5`)7士mh~{'}oLW;c>ybHD ?7{g`)dx^@u^gߣv;Bdp|`AnH*<8Fo$U+[bc6
aQ?bm1GN75`ĿU!a/i`ez,Pmf*SӃsQ"(Pc1s䰢(b(azh:6{e!bjfwe\a-R
P= 6n&	GlX˅T[:X*r
z@]~1N.Jr8HLْl*EkX.|No+TFu,}go	R:>Xa,ْAJ;t,
TISUTX[g?)LBb:p_!	<Jf\*Ej6,- Zx&G.Hyl5#5,]۟/Ξ{%˶{5`%/7ZXz,/  6o=-}+\qڒ^Qˏ_J+F(By}62y']Xl5eAY:,U;kdBCnpzjndB+T2oV<zkc,Ku,L
(б
1VbXlc&l^nz ^SJ4wX[rb,XɌAW{!BZy,7'<۠,X	x[V!"5XP
kC ^ynTͅX NK-ud˻kc?X7^&X6oт鬈]yTt'[7X0yv*($S j*Lsn VV[u t,gYO
	=JU)EiwMSA*ęwedM\~gY!'k>B^!|Rψ=
1ülBr;T:= `ݠ1<\e`r:O7bcnl
ͼL9cajU])Dݴ4zCf?_ln6>VI|BBH	;N;/69_~ `u챽ǋ;H8D{fjKmVXcI8x
"(4=Zc yǒjv,PXg
t,:xw @NYx.?P6m 묱	Ցǔ_c9-U~Os 1TrJ"w%#>.	J]v}O?coH   ?9J      8L    IENDB`                                                                                                                                                                                                                                                                                                                            images/custom_errordocs.png                                                                         100644       0       0        41417 11256640756  13617  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR       W   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<  >PLTE   qqquuuQQ}}   0ee릦  00eeeϚ      e  A 4<e0  e    0 0  000  0 00 00 0000e 0e0e e0 e00e0eee ee0eeeeee0eee 0 e e0eee 0eϚ Ϛ 0e e0eeeeeϚ Ϛ0ϚeϚϚϚ 0eϚe 0 e  0 000e00e eeee 0ehR   	pHYs    +  A.IDATx흏cƑg)UJrdSwVJ3Q)e_s'&##襱.m8?fvPDP3	|8.4b Vl0ƕqec[&M67ƕqeceN/gm:!_U_WMwZ#j\{;e}PWH$`^l%ې9\Óŕޫ\%\~@fM4qm4]\4to7K66^0~8I=]TlWڰjwwgJwcްW&Y[VVg[\*Y6^D ffŸ6dq@2~pMnȍNn9/ƍpݡλV WP	RB9ۻ:θ+vX.MiRfCoY@5@ vmqE\<@>2hM/jn4=*_:Z1cWsrE0PVܼ*.W.`ۂp6}2+h0%E[umĕ;Vm0l+Ƹ2l+B7Y0,g[]4m%q-s`?gn__U{ŰO`Oȣi|Hao`2s`[]\˔\
BTKE	'3pt{R7X{v`[]\fqU5pp-s-<_#%V0S3q/1=xBAllZ%Gu{*EMػ/h ׹c %;U 3PkV¸wZ*3F`lzvq/W@Y$i4 dV`ƕqecc\W6ƕqecsp`c[mk [u68*`Oʸ6Yqe{]ۂ+[Mpml`v.]Ý	MlC0$w'-Wi8x5QaWtܧD)<9ٸnd ք9ܠF}oGTGG8Uh`N4z+\'gtkmt9ٯ{ƊExc`Gvǅ36d/[[>>zP Y
ŕڹIeo;RgFע~+3q:tl=n3z5N+Ck{:~~(!r@P<̊]^_6@\5	OUØb̸4+ia~/`ebW03\&zUՃ5=Cɋ|MBҊzg͠<y:3h`7
p-ޥ]Q{@bbq}l?;h3DѪr[{^Ό"̉kɢV)\Ǘ@qpuaap%^<c` (qκ[B/u-bʸ{1uõVy^C_,.eslh?[93 3=In^!^)3,9F+lK]R\χ!Y*d*LJm%o5ͭ'sΉS̻6ڻ]ܖ	jIk|Ex>KlkAk.D\1յl5ƕ llK
W6ƕ&R,*.ll_̵gub׭Ŷf¸ŅޝE*e͸Uĵ(v52fX ;baR_fƕh}м.ҵX@:v.w6yҰD+/rp5Zd^3HVn|-76	NY\U׫:[HS
׫	s3\76<\Y;ڗy;p3\wgfc],6RRJOcnߤ434u:Wphݽlc#0Q]<Z\*hGP`S.aѝhǸ.W;KB,W
9\loW+pQи -;W	\u,Pk8"{vBdG&m-m9>xMg&`F<dYaGl6T,=WS zf%ħG_P9U8t^<A{弫A%,.6wŸBIZkw4gҸ*M\E)\޸Wj2&V7UѲu0pm71n6]/"]\1_DJt{#ZWVkc:}KzנTUP:?Mw3`i@'3 '3tܳUq"K3^"JU<E%k$cI̸Ů`t8tm*$Ӳuw[,gmouJX(s*ի&IкĚMt7fk]	tFxۻjٽ1emqm@h3-lKv2׼6;M"l6Vטmךl1
׺~.2Vr7u`YbZi\:e[ǵiMm1l]{mbk\E<j
}<\J>]l4]V W5߻O۪z,xX:0ۭ㪻k&Ph>>BͲ
:
@pJj%+]J޵JW_	X|'zf\V̻4(}s0Fk-vຕ5aɋ]uURveqgaު߽kGY ΂+"S~FW#3  EXa,pLp\5,wMc Y*t]5m9Wl\m^J㺌cY` <Pf PzWٻBPWXu
Fw=LK"Ij T`UqqA=Ћ/yOB^\ }y[A\^.a<}|fAEqM剬i"Fa.83Cͳׅ+8H͆F]i (\bq?\]cB\s-]A
v5UWVl,GGͿҸ)m*<X癸vWfk]kXaT3$զ~v]0űvۻ.W+'Y	WQWwwp9zǮ;FՃY|]ƼUk
@~QNp5Yk{J
Yy9qRfnL#f@m3P	^QNjVXQbPW8)Amx!5"Kr}%%/(H6A8h8nBA%w:Й]ЪV<yC\8l{X7w0U#YGDIZZiZY{{\(Q@qke1&zkʲ
ƕe1j+b-?,vca<\k(jvke1V'5le
.{5`[2	@\v/QͻKm,|N^.yk]d1Vι8,b59<F7`4<=hw,
gi~zғYElG'itrkd1VWZnʭ:H:SnT93P#YU]u@5@2G7#
$#b4u`[1\!A7׻ձ{+]0 Z{m޵^l+giW_+9=4LwOй/jQmpE~UJ%V(;cW,dFf&]i4ob\٪B9y}ǯ?ϩo18[2`NeUpYk5GQżVTU3Y5k,Co9+X+pDDǽQb5Ad1V:Gj>/ǾhQM `x/|Es&8`l+ɣŪIT+ǻdzGGALfa@[9U#Y}l}M.
q}-So>k8xk-d1V˻
d:DGd?ǮBn`{l#\r{Xz;_L[FYDh"rQ4G5A9Y`wfhD'wf<8Py׾wE^G9ֿdkU	XfւQ$dr1AXǓ9yHlQ(?zBYaEʲls9֣Nө(/Q=+cZ,v#墦wdykacR@8B<|:kyʲl7=.uBtz=>DΥ]1@^Dƾ#rUY,vâutMm!O9WjN0$FE9bW`~F?1aѻRQ/i-k6,6A"~ECcD YHUZ,6/ⷔ̚N~:F~W \HNTM0#ʲls޵uqۋ3{Z$dW̻RWr؂PEczWbYyle_Ư=
TjIfDr225v eu8k!bUvڷ^Z'V{%n#ܤk!bU\ {%)Zt:Z#L9q bC+^ʀ8OM\Od
g'}*,`ߨhH//ޥvO|.M:T$h̲l`}U"U+|md,"`/Q TbY9CR{ګipc_ܭ%e`9ho뜱+bKYjP`/kβ'K؉XZx+ƮS	˶lSiU` _c%x:'ߛc`[z*jZ*G$bY(OԦZ-{l&=gXsby߻KJZ=`iR$d&`2X+g8)cYf]0Ԁpv# |1;bY*֗IQ^B,:ؖK`GI{#Xm.'[ڷ	4/3ޗ}"W;NgGpyll:KN^].uq,
n3@1r0,F 4sXt{YĚIq4*S0#YP{P5Aص,F^I<j6l/U}Ju/!יHb)>Ud1 }06U^\%{IsX򯗲@Pu""9$KZY8 /#P1P~Fwnl5IW/la[>ud1 {5+h%.X/EZqql
բ./$. 3$5ûp^x5{a\4fK$Ꞽ@dqkVPU@VxM׊yJw5!we\9	o֞HMUVm@~F*aABZ]شTʸeJ"혥ɔ4u?գKTU]U*lM9;nH3 Gp|,XYE2u6q":K¿pH_JAksT;We1~R7gBs`f:\}2%ͷ&4t=؇RuB*v(a]*eQ	'.,U+TRWX%]a@yן{EbpZg@u{YnKX	ubiH-@Hyy[d-Po+״{^aSXJR}8|=&X1-dzͲlEYһ^jmJ`лX\w>ʲl% vK1ޥι%(šC)]ѵ&{,[9;Cw5Öߒ6z_Uczߍ[Hm1M@]Į+[Z~{'N/3!󯊠渧GIZRC5L֜+b0Bd2K:R	\nDɥQJ;nl6xrSU["hCfPUD19]+bU
ZNx'Ѫn?wXBi!E"{*eK4Li[,kRJ'D?r+SF8` #n8WE/}Q4 £t4U^_)o4բ^g#*WҘŃH+"l50&g[:3lwxF`e;,Q]Gʦx&?$1e1F48u";ЛSN&Fk@7~Oj(LӪ*#veYȕ$P͛/Ywu it-_OQc"X\d1]STvncH\u^R7rtǓnu"JQ,4o4)/!\&R!\wd|B*Xs]bS\#D:L@>/DWR=SxDY$Mݐ`&q,He[ˎ[t|HbI\EX]	ȔXyZUz״T(B:՗\DĻJ*U;'5I9wZRuDG5_#cb܁wE(%A&,A0\5rDhl6!<2#fZV,FyZS֒
U=zh:%Q^/-aa	]Ss4"'IK:+4fW׊ZUd1J*LRElZd[Q1_'c$/=P=Hk~w*vU~UU.D O#'?H]V,F%Z3\=M]{	wNEiPvKvRȔEi+{E%ۑpͳbT5bN4l{[S_#өl[Lށ+z(΢ׯהWG=s˻.T՘n޸c-i`n^Bp*EXw~;@)em6$l])W:J;Ve1`@Ut:%qe|N"NixQ>Rؕ@.Fg*Hj$uѲ\Nq]i  Ov"1_:8~JC2UҮm3pY@"K8Y.%g+6wo(Djѷ'o'd4/9>'-3̉2]K0Z,F^VKe:z#HxK$1pjiX̶| :!=F@g:ѲG	}ꋞnڶJ]!7@&
 t
L<-NͶX5P:PX!bxD6LA%a).UGTeߩEI:,v]1&j;=4;jNC|ؕTqh0P@:֤mD&n:x99cW`3o)$zJ^	Z=bU.'Q3n#s^@yױ:wlwEzh`Q"&Ud'rk-˩,*mV+j,[h/s{bu4v{p$]ʱN+neAURz$AeʲlESGGTH  VHi+wh.גkcdUǰ-ĻȹɚY#9P:Q'o$Ǫw6)cF/nqZ&x9W`sqD۶P u@AiOKH*V5yՑNLӮjՒTV,[A0דuZDQ aOcd)aQ:iv$F, {%i!JzQ$>كXJ-zI Iްi$l$X',  8@JX8 0=H:m`VbUueYEĮo1ъm\OH0EG. *@auĭi;ج<e1¸NULG*uEFJI].k(E^pI즎^Kʲlu0:N=)U.қD$I+ӣB|%!a!e{W`SRe} R.wtw>(E(kbLf0IcM?w],:d  6
KJ(N/@ziH	Pts$NusZsƮ`[J 5<z~,]HU<+2IwźI6ke1 t${S7:b:}hWyסjSD2P7Yq=k[Td:gEbwͰvx@rtH/8NS;vhBo2eU氌.FS5YR+K=urcj+0l8[NdqnԊƕ4%1ޅ</SvV<sa{`PƎFؑ80.tPk%dVGS=oRe1 f\+C
̿K@1H`+dڴ4փA71Iׄctގۋ"q#\ŭ*WV_Eڗ[}G5L=éggyuv~FOrf,\$néY4~V@:KnZݥ˥+(nL'3ӯ^	`,:"zpK2{9{9d6,O:Ӳ㿘˻ŀ_#yfeK5X]Z~bW5!v55[,q50/n+a[AVj1vfn:8dWͅq*yGWq.a/VBN)+p13."WosBx,-ܟ6w"F9t"\ f*SWp5a\oۻlm4Yaaq
vTf;D.^Wpۿ*{8V0iN(;[Of2rGi	i1<+nQu	cI
YOW͂Ukgv]T8X,̛y5=渞0g5dMp[Nd-U滚 uaʲl5]Y>ޕe1]Y&ޕe1j+bɻ,[+b(veYeXޕe1]Yvull`c[w],R3%e1VŻ`c[ص,F.OLOzo[;zB	[9in"BŢ/"e1|rݝ5ޔ4c WJ!zصUWOh36_WυUBuøړ\wmx=h	&]o˜1a[{#W#Z"_!PJt¢e?@v>U;rȸ'aĮn檘BZ}Bk{5_DP=<$-ۑT)ʍ8&]}1>jLde"W`B;wpSB}Mu` Us fMMY.?pi*p萧5'Li/]o*d\*Zu` לPWKP؂yd1>:{A?ى,<n@ DB8cXuВIpoc}̌<V2q1Jn,ì.`"v+S!.	%&l}t+ §]-ʸ`˔X+W`weY:zW`Qʲl5,[-+bɻ,[+bŻ,[+b(3l5,Vص *Ů+[MbV+c6d1V$-a&
a}jwhKO,cA`KNG?F;$&4fCq}7-BCehANJPicO75pgVGMot*<B?"c2uuۭsb2yJ2س4"XI9BKp&-e
laA[0qsaL3'$ٴ4#8Yt!/h5 ݒ\(3G|-0#{/dOt
kdx4aċy6HoٌHlH^:FeI+"ifk^ Eb$ GLV!m\Jr@Ng!$8KTeXLOڌLcp)	lZަ&kz_ڸ-kҕkyYyh*KˌJWU '!5,\fvDrN(K`oDdVX?^dv6e9d1Rq\m43L\ڕwkFmG*[d9<I੃F)s:,9bz ²{_AsL{wZ"(i=qđN1wnI^
(t? b5޵,Yi	::zD
~EAml=9"y_˸`
ejYEx#%:V}@.wLZ:F0I-ڙQAx#`hϺ'ǻ\cMt;KΧYvVVYtit:,[e1W`weYyW`weYyW`O:l]WĮ,V/ʲl+b1- [yZAmek	Y6U]Kbw-+v޵,۝zjllwllw]+b ?GEZJ϶ke1WflĻ,[+bλ,[]+bȻ,[2,V3ʲà,Fm|,l玲%oq8$o lCamj#ͲF  x-(Ƙm``2&,1 i`9٢sĮ,Q\SoAX`N&F)`qcN`2,i 7Ʈw5phy`(1A,ghU#NN/۠tFw,Fݜ֢epq;Xý-cwt27fYV0 *XFƲlk+bһ,[}+bĻgYVUe-qEuR܏kEYNH ůo'ikJZ"%Sp1*eCJYh(?cn:Õb}ׯܲw-%Q;EWݰ[/ba:M]g^-U[1۸D#|@>BwLp}o7v]SY X^];"dv+aחo	%Ay}#}Kq\X[YtWW%%=d_]5{.- ~+?azkue1Pϯ^{J(ʕo^%:6qmٹޞw]Yٳ/_=¸1N?OuJD$Df}	m_VR7]WCUgD,"{Eľ/?`?&.?_!a	m+Eyŵ%Yfzue1b*)_=Ȣ|In}#Yyz6ҳk+}7;,ъe/ϟ=K}lY}O>9f0YN?|sKvuň1F3%V9^RK"ˬ%JWϾ.b<À =!K+Q?9ӳZ X*(pEfdˢ9ϟ{G*>!lQ??ܚ~|LV׿\+9>$S?ݧum˸q){W}!+}NY_*gOwӸV\ Kf|Q"8!ǩ~R5D#~A Wd^Rd!\*{N~߿Yq۟~|JNM\"P..ު.~Gu˸ ꮯs>Wxw2u?mbcr[\1SWFi?o^?5VM8lp%zZJc;T+*{}O3[VۻMcXEpyV|_O\%ol^Γ2=@zt-lqi
Q) wYe ?*e\*煱Zg7ۏyzEwH,e;gVƵ2&ٲo?j^p<CԲ9ǿ\ FgxGO?8E-]1xſ{],F z,ۗŰw}'UoZcx*v\gAr7FM`\a,v=b3{cY8n>`nV0RLֻ~ )!OsG8oן21Kk#M[;>ep}K ?]tۏ>ĮX#M[WY^;z(n^qk|~gFcg>~U䴏_EV]uU߻,F=g ҴsL~Uޞz)wUh<'?b*\,#$}V۳ͻ,[MRV,ۺy׵`[[ﺖl,zfVmb=ͽ/ކ= PLŁ\MQ9aDA2؊9TH;34t7& .|]w㷦!+xֻw"ԘgFf[S,Έy8h5gC<11bNxɁC1%xX[E[#`zGd1Ho& p6Mɘ֒QWy/T<ML/-rL=[*㷚fɜ;~y׻ŀtHa {RWXۃW LokrjL7c^A9azz:uַ~mp;ܑ,c;۷1D)#VWa'u=a^ٚݼSw>`HF@-Z4~z5ŀ^,Ÿo,Fbwl뽒`[`bq0vK޵,F,/`7ȪrɧElCJ#/8w]w6e1jgޘe]Ak^fUE#
>Q+J(gٚu#bX-w*}pkZ:TŵԑCSG%@
׍0e1nFYR$-k435WkƎ Y̃s7h\clTE6t!d/a}4`k^+X:ݶ_ev3YWcdx"k&8Cf+q	xmD
%c~ܨAÿ JX*?/NK^*XhhqVuϡhp..Zlh"d64G^{6{BӍgpZaЮ 
ݍo3۾e1Vm末[ _Qpwu מ:rG:V9WBJt:ڦG~>8Fw]bxc:ٓ!tQKfn+ks_+Օ<rǇs*Pȹmϻ
ַ_B'zגvfwa +tn~,kb`wIwb3-1ܑ{}No3ٸdj8/ZyR8:\bcגV8ԓ{y7w[`nz#%<XmɻMAӅ`~;R08_<fJ*$>W`-yŸ9bzw_Ӱ:\-紖w"6w+Y69kiYNfZGZLz?`tqҟ}3aT#2e1l̊v
?ZpN;":jUd1:i-uZg.Gcur}%\zgk9֎z.Qu:}d.5Cc3n7`cz0wl*RV&bYt3IbW쌞decN7el$17j\Mu\S^f5w	wٜ>Ů2UX/D$:GvL,]yD:~c/Cr =Mp2&=amo&."k'󃰣掰W0Pdx3݃5VʡIu!TüNԙ}05pu~.:8W@:vv}!MO+lnnYÕu´F׈:mԌ;v<[z3Yx(qO&4Vlŵj0*
eٔD;A;;iw: ";6̀ȯv\@z03Ϝ[ýXdoTԒoXuj1V1NBLb,۹2lV`c\_n$vwV`c\Y6_	[Umٸnƶf`c[i`\jguVႬZ$⼕BdۺU [csʸ1+znoom*a^Ͷ|jv&֖ 4Rn7Nn3ݻ%mڈ]w-X|i֌vvB *ƕŖum6f]Ǥ2Ju[ѣG0õk2 Һ+v"\J\7%.Uؔ
T8n7W``slo6!\%];*џk[Jfâ5부Op7D.DIvf2IJn7ݶpmZo,Ƶwkƕqv[y'nJ0[m]Wӣn7vȜX@J*nqdfʸe9n7)%qc׶a2^ūZs&dnBwD{W5'3lbu޳cj ūvNymBB+4we?36V&iM+vmv޾ljZg%Rʸ2`@4v?AﺻMNng	2ش<knf@z]mƕq.vV0-g^Ѿɯq9ӳ:h~Xkø1+zK&/쇭Z8ܵFƸWɶs\j`+ƶ,\&ll5[n    IENDB`                                                                                                                                                                                                                                                 images/down.gif                                                                                     100644       0       0           70 11256640756  11061  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a     s!     ,       h.z޼  ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                        images/feather.gif                                                                                  100644       0       0        14507 11256640756  11622  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a F      o O 5       p `Xo3 P ps / n 6K c J+  3P nVFw@qUj
:O+8	2$r)7R. 8Ѳf喓mi[|}eCCCX7QPK!!!___..-ppof sȣ㍌w츛fVЃk-3"ga^r3͊Wմ@֒ee_xay)Rz?n7hDf8i6[Gt<` 3f                                                                                                                                                                                                                                                                                                                                                                                       !   ,     F @ 	H*\ȰÇ#J8Q3jȱǏ{P A"B0ŏ;ADI$YL/{2"'iz\ʴiS5+ItrǎD`	 A1R X 	
B@4$3E,A2D 0E0]N#K|r+@8s9@ԲU	,x-W mA'NTACP̸QE@؃	!L0̝i4?~lA^X2kI	NP\ pm Пkܵn,DтU&h\%t	x܈xPB QpFp,X @tP]D]taDPEvFLFwKzFELe*A^`%	,[bn  1!%d`	%H⠁`ܜ-ĸp %եj W<|@Q0Al0RBA6@yM&rBXa	-qς2Ga	Dpo0z ,Ѐkx+lp)Y/$(<D^V!3ʐJG,k0k;" jh+CG0 C2`En20	&W!% .<ZMC^i1pui遶(4% YJ0бܵDݲR0/-1 `I` ^-	.[e^pYVހBg0k}ڔI8QRV}@p@ 3Ѐ#p;to'PGaF<Ew=C=FxT/KPiY1W1EP@DJ0dJXBQÇ'\{<`lxr$ܠ>fIz%Hٛ՛M^0)c#BB
ev6l?p9NlAj Lt)ddLM9|u őVTncj4,p0H z(LF0+a\@|q	&>N#Pp}  {@m%0)hA_$4iCpH(8@E@ pd ^=
R:!A
7&.+'`(̒$.U$J0Le`nh;)%8!Xr8lQE(t@*.G8a\TΡjW\3+J0 no{ۀ`W XSYJ#S[%(o1Yn4;	Zf̨gV
D).D~kܧ*-W	1	 `f@XUA)J7 ZU,uiV+ۗ
L4	) %lb/-.hYB|s
X\Pm3 𙳙 hnD+
A 
T5A`ѭ.Ce33XȮ˱^+	npMw8XtAp4!.sw_BB3`!'mP fm(07,+X
^BJT+hBgÙpKI`BМ'AD"q<(yp0=EE;8j*?"BЅ%ha  ?G QH̴ɏ{3@@~u VF
` A/'Ԁx	Kx"<PO ©LiAx^T8Ys	<ZհY- Brz"JGJ
hJ(a`
0/ dM_+lNigo	C9~
-$dO
RxGU-&F '38Sl$\ mP1pf̯D 6٤,7d\F Զlɡm7h `* XXCp,\67	i+<̛A޵I`d'rZI$0{j'd	,N	J`("/h	 \`!"V !`(A<>H ³`lK²(WmE=q;wPc	ڞhAoUԠ' Xl@ @#	ZйqoR畟́eu&u T |wŋSjz5`E+TnCl	Tuo2)!)X/RLk!V%u6>Pez%+<@_7 pyA5GBO.j7OdwB"Kr"2P7(.pv~*L.b) Z+g6e\wR)77zRlPz+&-pBFRBPF('!!A-EU4ir&"9"P)`",:E|4NH8Q5QV:c	#AWW1}R{#+cX}+30R(rrP0ȆAw~2Tul&2 W'84ug/mᄎ i/o"YSg%IBy 9Qg0`d/P]6A0;cFQ^-R+ŊA0Rw73E/cUUdB P3g.sr/na 2PGgA]cg8u5`bQpuAs6:0AW4M;Ǐx+7c81U/IU YOYkqZceWi1hA`E.@!p$ggML660C3@RrÓ;i,%+}X3pQ3]#9+8ViL"	RVm]a_(@U :&ި opUcP^QW)ZP`)dL0de`!	=GL@XP|!>!{yi^`A^ ePVp$3VDw	=Yq=E'ih >nH4ptdv66>&A=!JFa iQ-lZ;%G'Eeg'yu?EY`GS``ah́K o :oY"7YA<MD@gw&BjP83ˤKwXS m#"U CdW×0rZ3N(a[y"\b/_ۡ?QHa?C6*u@1:8AqlZIQrn"#P1?FP "?ƩG'P*%SbqQ buT' kh-Oʫws} d*tp$:v֮gB2,g -PtO)šL R0OP 5#!6Y[Ŋ:MCB\qE*`;h+~ۦ,d'-;5KrH jbJs}Z :@5vJ}NA[, {@@!@Ғ"3RGZm Y`FR.AHC@TFi胢TBlmu{D)h~,2'G(;(z p=0nEP\n!rpp0U 䁤KjÆt8bt4xk,(zn{OGiG"v @]pQPQnS4=[@Tc{t/@/q<:0NRzRWE8oR3p mmQ{(;(ptPő'.rxQ#RZErk6һ` Z>;)y֤NU͆g[JgWGbǻ~-p{S2HC&*w	$X`nf ڥ4`GIiV&aUN`#u":I3Ie] Tt9cWvkOQ;"F+Fj/" Rww@c>J}#k;	YIp8v.@&}v%;{m\n(!rX!e[.dw&/4Xy ^cȂsk@`3:dg!׼wր±=P.pu6, 2'%;KBMEq.h&3r_+$p~@RLQbPigdI$r% Xm"+-@h{zM{<{pBd.ҷRv7~Y5$M@rt`hs>3Lμb}& F׆]篮4vhuôX"b{%@F,ԋw{`UT/J}h:ea9)\N=nd75ª(AӮ..c,ª)'oi!aSqtR8!B2:Z+8L:T? yW6`7Ap71E"[uIGƣ,,pRF,iԴ'wˋvB 31Ј"WT/KSۗn"}u78*RB8 m?B&.vk'2=vw;h(Gqh12=({.VQ[ńTـJM :ZW"0_pI+|RUfB]'zG͒"<oM"#>8rB-Ⱦ0^UWձ@L5?eU9`	E&Fh`OPcRd*5UXfx"孃Yq(H  TQy=YGJ3/ԭSnYO:g1`%P8H}Ծ60`/pX
R؏W}7-=.B2E#.,θUXxy=,2$ Y/955`ygMc%ns70BfRþ銲X2;iHB")`ұg=mqg[NqQ~}E{)?BX̣&5yIW9VC󳮒,:&hS'5)8	B0#7/*`HX2557gt8jA,4%__ꙥ/10|]bXZN muI:w>A/( c;.6v5i7D9Xr5SzCg[4c5XI0u偨ހ{ @9e[:dkD+CH\;ɫEN1ŞR]/1UlP~88ko8s_ 	Wڑf0n1qYxx;6Ņ;Ya;!D hDAA	.dC%NX1&lQ#Gp $n( 
M,
)Y 	nTPtME,ȱ"O:.	, A8||4"8FDEyw3x F0+HHqE-X
]򸐴'9PȜ	gI$G=o'n1,ťON<  ;                                                                                                                                                                                         images/feather.png                                                                                  100644       0       0        13210 11256640756  11627  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR      F   ϩ<   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<  PLTE    o O 5       p `Xo3 P ps / n 6K c J+  3P nVFw@qUj
:O+8	2$r)7R. 8Ѳf喓mi[|}eCCCX7QPK!!!___..-ppof sȣ㍌w츛fVЃk-3"ga^r3͊Wմ@֒ee_xay)Rz?n7hDf8i6[Gt<` 3fT#   	pHYs    +  \IDATx[_ZwU䡂"<},Ȣ q7QScfL3}wbjN,;I5skWvmn/?osp*[Eupo~}(ʃYwU;>=n]=qKj>=>|ݾ8}ו\wܹl'w*c;k݋Ó~yy;dsNWljijfm<٬]/=}rC]?c.7vnU'tzmsow|{o&3>H,o"@uѬmƵK^;ǟ={n0/szzzl:^QO6O67?`*?txx-NsـJFfF6k: hwytIk͛ܞ{rlYWO0bvu$gf"6k'AۭKu=9Z*(nnlG\]].WwLw,7ӽgSEؾ?<sKsMȺvڊd~ۿOBv:/oȐbJy[/.R0q6̑ښvݢZ5e^yZ?h5Ѳ7tWntѣ-WiKaQ@P:fWWƺep0e f
EK_`GAh~Q]䬝dg}}}Zouxi=8Z;Q~~W(7,me=bewEmX/.ӫ9Wx}'޿x_De]ZKJV놲p+V:ռNs(1Z¾ko{#I
׷PDsVW{5oNDFcˁͭ+w[Iw.D+R=(d#]"zNf,kڹNF{7_D|J2Laz6K= [RdNG'K_e]^Y3-,ʂjZ7}b1r=^G}?Qtkm7˓{e*cAui)gPw)zk7lyhdyTӁ}>ݓ7w={2´Ş]#yfc%H&#ZBqk"qtl7<t-}v~8ܪ7Rὑrݒʔ{K\{ٳS#c1~DV`?'---.{BbYF LB/1frPf{-$s\fQ^#_vj5gg{e_#fFϸ~:]ղ	cb%-ɂ?l^8rp	D)>@]NO&ÞHͽN~pVkU*GJGMԹ;̗9ZG$lH>Ik9¼F'Yo@GQNo7Gz}q~z}Q'#UY|[Ǝq5u0lt	(ioFY3vc~}_FN48C;k쟞7/jrW-Pl̴S}3|gfOyMt\Wzlb]+utzF7S$qW$5ggݭ_yb.
ZUsf,.X:eZuk?)M^M$E;U=	Ց{ xת{_nG޾(WِZK r}B+YPk2d2xtkUeawMkttU6j_n d'Uß |imZll?Rtfq[mtvP:?ʰg55bѾhw51<XuC,m|slx{ZDm?;kkw;Ϗl%C_2rv9å-)jO0i%ȵ`E_.3f?n`vᚱq㤆Z?:=Kr)lA-j!dݽ![AXuIG1Mk56=2CF*{tLQ1<<?	bgtE
=oe'kxOʬm8)]2"jQbMJ6H5M@c*H0C:fz5~}[獺5O+]AqIT΂	62Nz7dWdklϽ^LXeMUNMK~O!_qy}o]6mȶ{ϸ_.>cV!%ڥs	I二љ$6f,g-+뎎N//NSGBCh\X͞<yB^)Gd9S'j' ŲjHI32(uK)mٹfa0*׹]n~bxŁ֯nQ=ban'cQfeզacрdP χgtX-~pW;;Conp7+Y\pvQ'
`"is2j9f:+bjQ}(PdtY1[18YU;EşJ˶e\@Z]i+b a!I'ۥ`vw
ܖސc+/|m9LN7h.dz|3BYty9!͝bqV,Nu%,71|DP$icڸJ`g̐ w0cCкeY
yDͼ&>Xʽd'^R5Ӿq.W]4Zv^p80墩lSKpS=+O`X]XęNw~')eV!;uށq[bhlZ1a AuFWBpd1F~x>"[PzcZ~"gnRm;фl%hB*A }3t˱CsI%2NMYqmӍs䩩p77wÞ`s*ӂ^z]J5s t4!GՎjlZ2/TnEeNqDN+,hWo~n/ֈ x&'B!,#}<@-wO5F(|T "`oMG%o~.e=e'>{O^i8!t:KVl\Qؾ|.kp_	9:^^dHRfS4םk&xo;SU
$Rs	R0o:
]G^wX?eS Jr_y;FP#Ԝr["\%@s3<f4˺[Н+p͊2o!"nxn^R*dٹs<[VHܫi\_D~LqihrtL79@٤3a@g.6@_ݻ~ߙxo̥ƯtNsWQ&_lI[+
=ȼzer8b	fg.M<B"9icJS܅I\Gm!)_Z̉
~++XDMoVŴ-z6iRF\cgI.t8Y,H=;"dQ*a%4`[aND>Z'dFq	Z2+<{oCrUD:Ч9tl<`ۍ%-Wy1u糬	y%l47>fQ@G>2 'Ȯ*K3",4.rS=?3nI!+LW:y:lNspsmBƪgr2TD?gZwĻWBꔙIg4'd"Yo2W#2'dW ?[xv0q<j[I
bOS]b ͪI 0eX`+%{zy-#3*laWk1+C˸ەc,L]DGٞIL.)9d0J(g7ȋSrнP9gDST-ڷ4[4ueV7_l1/xy%,Elj6Y:d7B:
]2H0JĘ5P1,|I7;R.4^R6}yй![2J̰3ud8-aó 6|z e|tL[B!Gk5
g:U`=rWqJR󌸒V捴X=y!]d8n(&OSPeO>$0\5CA9#e8qoYk\D[[Ojq1V05\zZTl3",=2KiB>  b=me,_ԋ*!$IGOIZG+Ym8%yvFMLQq9GVܠ`&e)s8<iUq9$f{~K _zS.Մ2N\R.>P!ɇLùj[)|	9.SOrB;^N8Mp6Ws.w0ھxH_xMr$N'6рZ("XtL_gKi	jQ(^x&$G[~]o`P])lua(36ŭ؂@&*b7	a~&sy_՛>_e.W:}3Eَ Z
jt.+J܍[rUhAkg ԇ3Fz00>6FP7&^|>$oL֌
%g|,@I__~]'fA\$뱙s    IENDB`                                                                                                                                                                                                                                                                                                                                                                                        images/filter_arch.png                                                                              100644       0       0         4553 11256640756  12465  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR  9     [cc   PLTE   U~  	 IDATxOLxɖ5HiixhU`"U&C[岇,T`I0{/TBJza{qDH[Ro=*^o޼?d3}Yw{{߿7!IKZҒu1.#31z45O~v/f$t}@ ]AfpjRcFwڹlF$F@5	QɊ@k%G2=P
?=^<̿o(C}4}uPIu-ONk֏Ƿ7s6[ݜ݉ݥûʸ5VxiF _U2/샹5h-nF#;О9_>:bsAv8ܖ֪d&#Y=Ş z6ֿhb}6Gխ(=z~p2Fr'd3UH^q@:-99?:nch5n7G]ƵȠ[OJ6Fu( Zp@HKԤ]AE$Q(+<ۖ P *}Oi=ګq,PHR%C}K)CۣАeXB^d\d)
ӥKA!O˺d4~טc|?Ѹ\C$bB#64Хw~ARټv	d\uTRP/!4H7(@[ӉD@
VF@6HH,- #@_9=1:RHgC.GPBw~@G&d?td (z̱DdP}Uh"l(H[`&@9,"IVDt`i?#h̀ﰆl6^<E#YPJ@	(%74z*a/  N1^vEAh5: )C 'eGn+{JqeI'Y$WVOqFw5.sM"wn8/JqAPa\]ܸb]u7?9rAARH,W_cu <Y{2PO yfZp[P!ҧ7/"~bI遴);R|.ϑR"G)w]^r'[#_)2S?b=>\q0?崙wLdS',"=Ia0AWOc'9 ]-@m9_lӸWQY0x?*PdVP"ݥvl^)a}~^.ЂȤn6p SlyDܕR>boe<YN~|k!tMXZ#7VSea*/54_=k͈>?[JԉڑγPZH!Q`jeT[͈NF#_2[HCXHR=Squzgհ24f͖%<㯕QԾw/lZȔE2;R\P*Ծ=h_#<102VwTIz`mZ kc dt.{
*~#XWs Ұf^}Hnxr6(ZxoW1ld_	*brW1A}XtZLگkdi"t,vRȠTw)Fg(h.'[oeZEBݮC{tᧅ?~f=F_4gˍBsv36p,ZŌ i6Q*f  |R9?PcڑZcʦ@Oaׁ _7wA%&nrQ| F(dΑ, 
C7Wt/b3h4G/yAAIDtABj&NW5i"iE,4{6ϯW	O?~+#/@Y,Q3@9,P/"`>5DȰ_eQ@ڹH+^)_	ɿU
(sWԑze	$@"̑d{׉臭rA-`T̯7؂
(8;7Wƴ~h.jZ&6dCGXn!ђh:GWFB^:O1Z]?JhѪ1ՇīXVCժzFz:I@	(%4?)03    IENDB`                                                                                                                                                     images/filter_arch.tr.png                                                                           100644       0       0         4706 11256640756  13111  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR  9        PLTE   333ffff  	uIDATx^ˊ:`]A̋VO1+ж!zC3KVުOg*¸!)3!T)!=3=3=3=#P~ͳ3{DsWp<<)'	}G ,;=sAez陞/{/2=3=/+3=ڇ'@{f~pځ6 }G)G=y^^hOIcA'3*E_Yh)K:U?3תLT>2-ATfZ1Z^?YH#T=3V\ΊcHD+RgG8Pegr]<ճ@ēґVO䜒~zNÉ)'-/?Z.B3+<Ξϙk}Kis~#!ZWˁIJtsqRR|pHy	{S{{b4rnXyn+Jֳ iǹy=u4(6{h穃=Xc:ˮ{G9_{υ_

6V
P
R๷>U=ho w? q7lPXHE^ʃjOX0>xl1y D(uQ)XL=N!n"<=y3bx,2x!C&գGÏ_#=N[/"Xe)^ʣCєҵ0O"@<&rI*ߊ%-Ey_u!4sSxR[dG6Fz.BHbC=uQP<c=(s(ςS 	q婈</فXk|kĚ5k}Z>k agg>?陞陞陞陞陞陞O`Ͼ~Kz)@1<ʫBOs(߀ ;hꇛmn
Cy*ֈ6-m<tް=` |0S;xW% ]Ps]F]ԝf_rIbD}`β}<|r	꩒أ)?n0ϛunL0w^@6o]izL8|T'}~}}痡yLړUpv^"o>?_#fU$_=N:Ϯp>c{Dìy`~_ofP{<xI|ί{~ǿw%(- ӇQ8?_.a aS:?=o׏CϏs~y8W3eA8y<yYC¹UnU6MϞ zmc P[OX)3kL #O<-	º]N/k@k=sןiSϟahFS_^쑋'Qv7y$lURs~}mU,ZF?8Iﱚz
zKpO`]:ϓ_·_bmM~62pdNWy͞'<t귪6zS~=]oy~=
8d?{MA}7?}]c<o8T!ϛ覇x1|Sx 7<<ȣ=AUk0_qPqcw{c:փyeMiOG{  =RWf^{ j~Bn&S\' =^N"K~K=NY AzO8R]~J S˯`GF={m/x}?!%z,I s{23=|~`Hs8j|/kKg3[_([-֧C=NC=Oy4K0r,j0s,J0S,4̣<` q<, 8a<C͡<y|@w@¯ɯLO6t 2_ 9A`YuDCx bV]_
F{A/@띞=] {x!д6N/JWwNR߿SQ}%8PKAxlS[H)(y8<=6  3='ᘞ{gB_@@XC  b/ Ze/c}>/陞陞陞陞陞陞1ezgz	gjo    IENDB`                                                          images/left.gif                                                                                     100644       0       0           74 11256640756  11050  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a    @Xq!     ,       iLrezJ ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                    images/mod_filter_new.gif                                                                           100644       0       0         4530 11256640756  13154  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF87aK     ,    K ڋ޼H扦ʶL
ĢL*̦	JԪjܮN(8HXhx)9`yyp`Iũ@jp**ʚZ1j	Qj뉪{{,,[-Lkz<[ͼl^=ݠNOڎo2.?/@]|5",X'CW+Z1;z2ȑ$K<2ʕOֱ|Y%̙$ҼI!Ν5e!С=
ҥL:}
uϨ?Ri֭\z1+ؔbǞ,k6ڵlۺ]mǸr7ҭ7޽|l8)Q<bXGd-yVqo58kVYg5)5~!Wa5أfq:k3Lz+^rp-͜'FFzÀ)q:}~YN<8Yh_wƩ_\~x=,qX _t7Ӑ=F[r0@#~"dTc5wV=,IvB_[iR##Aԓ9H&ydq=n!O"˔TN`\iP&*D)m2'un	ʝ`~فI
eA.ʨajf4&*%ʙi<pC⏇&H.aMҩ,S骥R3-"mGZ\áiNi**
a櫦$5;bt2▱cbضQ٩,q+AW.to7 ]B
_>2ICs'j>-*J*hˍ;{Wkj[0l/תحZܭNuB[jӶBHԴtTSb}c,==3u m`=tBh03Ŋ#966gh
&'?Umw|pӝ{lפn/p¶ޚ;»;1u
&B<YRF8\[ޚx҇+?^$D~nb'6	}ZfOb|x d(`ހƫnr[R.m~]`8LcOx#CUP#;Gg73,uA nHTY7*
EYy)+cG14\3EvZsaFF8ob(?[`Hj$fcHKy?Yh2,,)OTR$d+'Wr-kxKEܥ@	LRVf.iL4cpM%9aS61C(}\8YBhS\`ʓ[l'&ቑrlȴ>ǽS;H
(@pĜ;Jz6%G:AM71X=љȹ`*CI4ԁ?ЉnbD>e'~++5ӈ~p_UHP	K=GZ0SC~a';cPM8͟ґi:O7ՔdM=F2(cݫX6s#3:Pe3[,ԘW#*jZYL)լ7qqZCe;;Go%mT*GFonRS.NqWi(׮9<pЋoM؋®mGid\ڦ.]-[GdoqV"Z/KK^Hlj4 8y,SC=w08O+b;LBXE;SbqmC,S52&1k<(3kyl7D.#9K~(KyWx2M|Nfy\a/Ṳ!ό4!j~^7yt^r=<co^y\X>*MhZLM4IGDGnF:/Жtieˣ?Sj>9~9u^\}U/Ú\5dlkJ.=Leڨs\xˌ9ojXJr=m.g7+f
pU!6뮨ywt#ۇk~_\5nW`)~)Ci8#䐹ȃ}rۤ+?p˙\3oN\i@W9O;B0zMb[LNTK}Tկk}\׿}d@  ;                                                                                                                                                                        images/mod_filter_new.png                                                                           100644       0       0         2034 11256640756  13170  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR    K   H"   PLTE   1=  IDATxNAgw4&.L;&$zEib+#4V"510фYQxD~ݒmw62'9̜ʘ1cƌn[)K}6J1rE[B	(/1%)!PU,<cyc2@To4'jIa̜~[@<<u?cAj00E6/vIܳ#_֚hRVy{fQo^GӖljGQ x(yE6?QNFе(6t!bW_2!b(V!wDe~$P"ҝ7jL4SSK2b0ů/pJFU P5Qq? zབ^+
)H^e_o4*tp^t&oe9!{˖϶sd/%6"rkd>yɰ#׈ڟAq;*9DJt-f y{YdgF)FB%eGɕ IQ냔'`7:I0
rH.K!QzAC
S9B8
+U甌v/8JxN)w9z+-9N9% Mm99hF_4WBM51\^t';Sl{a"UE؋GQQUԣ/b(N%6wbI5,XWeQs4+mLosbH8̬geCCCyR7_-H06|8	 *7z.AT8zv ^	tE+`Lu+~M=׵)A[T5m1YqRe(J47[P?igYRE9^vߖ'gOsSB@6FˢMJDz
K΁֥;"be̘%?¥     IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    images/mod_filter_new.tr.png                                                                        100644       0       0         2456 11256640756  13624  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR    K      	PLTE   333,/  IDATx^1n+7	<@0x)Ҥqb2УlJ&XyZBwE?`ªn2(ʻ
Q^JT/_Z>(J(JR >919$Һ Gي(.pe(ڃL@KQ@%xϋ5̟QS+xFUT4J%`G+ëD0~1QȫS\ Da*bq%ܧ;m&Pv3BŃ|"$ .۩Ɠ~8GL@Sn $Dmj@~D(~@_Ost)l_>t骝&_	lNKE@:ӳ9&U9BAB2TXA#R%)x@w&0Qs_u)QQXD'BFr(b
7N7>V|3N`CAo2Mt1OFVTAu2_8s{Tr=T&ro~6U1(y.U7ķSuS^F	VQ9H8P
P&%wuN4o6!$*b|CaEQ)[̦A<*%g 1"i灕JPEKtJ!"NBvL\)Dg[R7x̧
\0pQ(c*QgfQӦR|%RD/!8!N,*TMy
T;0;}hUQ&5^+PMώ(pa(O+Rmgw5.S\t};k"+S%R,?jRkg"vVvVvVkgM)֫L)J(N_ՖYmH22J0,+UPMHꗋQgS.Z÷3M)*eP.٬.Sv%h%ba	8pڽ)SRyMJܹUjQ$t(T}SWJΫ5lj~:1<#JS u2%>Sq*C	"XXg o=hPSФ"SQN<N`֠G-$~xJƏx/zQ13%BZ{oPw9L?"?Yeu2(    IENDB`                                                                                                                                                                                                                  images/mod_filter_old.gif                                                                           100644       0       0         2316 11256640756  13141  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF87a 6     ,     6 ڋ޼H扦ʶL
x.@Ҙx"jScd[OU!_U%&hF->Qf6Gw8EǸ6V8(h(Iy1h))JyTDƚ,<L\l||:6kݽ#-^n~C.?O_oO_0 }7,X	sh 'Zq^8~1ȑ@4%ɕ,[:s	4kڼ3jTI20
iGJ]45u)+V-	̪ӬX=S(Te%+EAc/IL^݆ɔ*UFuw)A{&`9b!-,LbTEHNf~%,'`j}]}>nTf>ۻgmn?f<&9ԫ[P䃖~Ut_}r_?=gH`s\n" d҅ n7.z!tJvkbUAYtv"q9Ȉ֚-"$θ&ո!hg4tIwe`XMiLEHIeyH#lBd`㚈0!%:q4'*bNg`_ʓ&:袒NLX*niJ8Zj:*r(w~z\	jPeR6Ⱥ+1vGlM,ڈm}#yȏ}K%\r~2r^B$.fAص7kֲͶȞ	,3{Oќ+q qR"*lLr2B4̳r/sB]/?t's2MgU F5?!嚣9]uaMI^si6chӎJwqm6i7;mtK"rwH&-橱ylgc6Y+ŷIyq!fr{;C[biQ?B/>{/JɹG-2]>*;LOn8{`#C}~ax2h۽67Oؿpnc r@$J15,Tm"-S/jp*  ;                                                                                                                                                                                                                                                                                                                  images/mod_rewrite_fig1.gif                                                                         100644       0       0         6705 11256640756  13413  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF87a         ,     ڋ޼H扦ʶL
ĢL*̦	JԪjܮN(8HXhx)9IYiy	  jGzږ
+;K[k{;ؚL\l|7-]Bm-^@n/?ONmߝ0<8-TᴇrJ9i#vבG[(6^_$7LFV`ִyg![^<s5frJ4
?6HS,Dj"Ҫ[vz)A>$["km)u{큺bM@50ֻ0w᷂dW"iqaG.3vNxb9!֬u\NyƔu88ɗ7E͸c.6eТ"YxRi7Ԫ{e9|ʡd΃l!yfkXVpY69Rzީg^e(^p@fDl8{gX-ƈo&\Z:bv"QuٵEbSgyXq}d_PZne^~	fbIff)h暽f.py˜tb睳g,|f_JhG >(.h0ioT
.c|
**" \|6jƭꫢN3V룰JJl3Tˌ=笶F.n>.C\o&

o
pLp<r:0}1<J19\kR|1. r"L
,ùk<3qA
§"#tж\Lэ-{jNr"PT"[O|&bԿzq#r4m368a'2	}7w!p8~H^!MhT.~韫k 5밟.|n{蹻;oo>s7!>o=gF/gx/~ᗯ觩`ǟ[دC¿*B "
\@,@0,lR >(t FHl[R"P%@^H򘟐@.# ,:$*s,qTLbC<	Ub[B,(z+Z hE2b>BaXŏGa҇x$;Lz);f	d`ʢ(d"'g+ ]HZ dA46$mʷҒLk6tHukiCrԈ44z:9PV2&4]I9@/zRlg;tj(zLBrĦ>C3T@V6Wf`D:'H@le(xKiy{F)b<ʀڈ3ACJ!wj?=I HIQQ8"NMKU>t@MpRE#qwrȠ4Tj#tғB)c5cBGIDźL䰭K#$%N6Ȏ=jRal JA;+
&h*eB [ϞI¬H[&^ DP\k5 ad~IKo+vRq!7K˕oz,5Hui\]\ٝvF]Z껻.ț\!7 uv[/ x< +Xz|a88`roeKJn 1<şP2
Ş1h	Ʈб1x
7ǜ2؈	#&p$
%ʍl#YR#d n9];di̘(5+932/;? Fc%|b=3S썳[p<V'WgL@_ Q\z}ZLpquP"2K]4Mli(ښ|%KaO(GP?5XN1Q"c_sжm#<;m$ض!\1WTd
H!I8t+Qs~Ma#~N2,(pJ\f/v?e33ݷtS	{V3P
~L.zSHy*U;oMcy>c>=&NU6(ĩThD)Q>Ɏ-zOXt5)iqV)ABqq>nf׫~/dWureMhG$^u|[
N3̲'k=t{w?>h{*kgTԋ>}ex>нOރ͟iOgv?o	?7G_
6(@`J 2ӀB9-G7f7+",Fr!*8!X6(x.d+#XWz?3v#'rF IC6?ȁ+
C893/4X+o\7E38KӅql|3<F3g*؆,i:vx#e3&#jHgBqs+un|XHZwÃa;c6Vh!` (5Ycch{,1ȉY_h5wcC貄81Hs8R (AЌQ [;hۘ_*\?0ሎ騎@03] ^)Iii~8yr zvsIYpiIVii?v7!mlm6PjxgX eC->w0&Gl$ɑCtA(9@yl:)iGUin	REvyRiB"JxboRbqXV钥xPnPN E%hsaEBɕ+;xIuٖԴ?"Mt1vA)x`PqL'WNi_	uqɗGk`v3R7P{PetTy9n<GUٚ|~
+՗x65L"rsTJyvW5eSwYz	Noŝ	uExxN5OxxhIRbAoɖOzIsiUwAiztva	
*JjZɡ"*#J%=jP+/
1Z&(*-@58;ʣ=:&7F1EjG
@irբMP*SJUjWY[ʥ]W  ;                                                           images/mod_rewrite_fig1.png                                                                         100644       0       0         3244 11256640756  13425  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR       Gm   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<   PLTE       `p   	pHYs    +  IDATxj< `y&1}C_AN!2 L`;It#ԍRNZFkF-RK-RK-z(˫1ƆƼZjijlh̫-2X!"Έvh1,b	 P"G/Z}GiѰՃONfJ8rhu^<'Π!bDS4.Mǻt,{#tc#"9	"lm2nL9I`&S1r$^uDZDl-Y.EK,z!#	`oX{bZ8֊J!gSQljY|ȩekpE6 #Q0#&1ȿfI&.@'%akOZvy^-ڪZ&kKgk?kZV|a[|U<?\f\oZr3U}kgeYVfٕVTM5<ceYcy{rw.dNKsxqmrc}|wj]mş_V!SZEmJƦZjZjZjZ?W||_Wjrxt2nu "7aS3`qeDD2.:Uz^_Em5\UD<7VhO[Z7SKMZ!尲Z^ġA"u5T,"M| ֿׄAp61~YC/ Cs]O6Jxbc03- "-Ƭva"ffBǌX1YC@tjU7/F">vb%2'Fb`1?P|I RI%RH4Nf'v!z е~) ^-}$2E?jŀC _V" x=?8 R9n'pyVςp>ZjZj֟:lwg53ZjZjZjMbߨWoTVs/יQߨׅ76ơE{\bUoő)7Rz[m5׿z7c7,9Q5Rc۷dFձ1P86RoߨSoǎoD7-coZjZjZj5OoY/wכߣ6}]Xd;Ǹjk=]Y.|z<`-|UgXe*WsXeUl3XS[?~٢Lc~]o]37֏Һ~-֏Q:֜`Q?vQsGt]Zj=ƱZ5yLa:X;kKe,\:XL!6q3y_8v,O8hM8lM8hM)j=-ƆƼZjij̫q1ZjT箈${    IENDB`                                                                                                                                                                                                                                                                                                                                                            images/mod_rewrite_fig2.gif                                                                         100644       0       0         4771 11256640756  13415  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF87a}          ,    }  ڋ޼H扦ʶL
ĢL*̦	JԪjܮ[ 8L.gΖ;PS89u9x'Ǉ`8F2)3YxHpi`zziyI#+	!W
L
iKiˑY,Sk-}z|]6=@fv`
!|~*??=ïP^{i.l	%gC!~*yH+@^ƠYh@R!ԈI{D~pGćKkZӦh=r1RtЩΗ<<֎ &EI֡f*ZUlp@kvOf$'ݧ^9MР_j\1? AymPhxi%2砅{"uahG*زԥ1)D)GG0o}uao<%롖H_mf~=|!fZC#|q`jW0@`("we
0hnPX{p(b+hb$"	(046 :Z`	c(^EBdJdG>^^eZne^~	fbIffn)%Vf
fl)gGig;g0g%*hjhLĠVy
h`8ʉ/az)[(-kb^)D.]%eLYT:hjZ̝"\.|fNJ&1gj-XB-~GAʧQF3.y~I@S_>O?w"W\V*5חnE7Wq2g/ae]&_Ce"vՙG+u7΄ǹR]}&KGlݽv0mqtOe!GXr)>|0_o_ln,Tm\K5BVjt4d-vF[c5vHbri?Fiւs/I*uؽ.Ynɀ?Њ0y+fۋ.L/j'BDᠢP,aVo9 :f~~_OcwA߿E?{/ M ^=8`	*00E&h"+i?@ODpAP!_pbi8C8|G
цSDjL|`&J	\DE?pA_DP5glRAP61*s#1\#A@6-`#vd0HB|@"C	$y 4rCL&/TN,'UJ#AL% I m/he,kHDj/	`.	ԥ	oY "\L!B38&5ghk0,&YLn9TyN5L%c괄¹xf05LVpUis$d8)
BoL?pʳ<>UC#<&	i,Zxv9|]"*-:*QLֲBå
NK6ҙKO|KCHgGN
4]F
碌'O&MMLzNsnՎt2łu9]m:g7A
3Ԯ/ۤe=jQs};6:UgiC28Ņ+Zpi]̅KW͆0mժnͳ6r{b{VegSֱ3t{Ul\q삎Ekgɺ&KE/hs{CsKz^Ҥ۠:eb'`rEn*QHjbC踯X-T)ؽåNUؖpm(Hכ,$)/qHF``q7#׀_0'ˀ^p+]/\@-i,q<ye3gɂ^!
m/"^hB:4gK/Ӛ;OPumj:zZ5W)ֲk}jB:ciԥԀ+%Qo=*L?4=R:nQZho;tȹ@kL+ *yWZnS
qX-Uڀsue
̭\^Rf<z-F/4sO1&u@nA[6k߂\dNu.k6bǜ΀4C.!70YyEcN\_zνO{7dNU58get\g(M&`;IϭB3F`*UF~Don:%upEf.R\0%>ZM{=wO?ԗk+oKԯ  ;       images/mod_rewrite_fig2.png                                                                         100644       0       0         2545 11256640756  13431  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR  }      $   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<   PLTE       `p   	pHYs    +  IDATxM<*
M/s{GAmtV~'' b?=*n94@4 B?8 p]w)O  ynlrّuϮ@Jt) g9*p|_  .7\EbrPUR=Qx Q=J3 {\c4<j#  f38R?Sd@ffl+ I)FaqVڻ/8.	ԻG(3pbٝ=qQU9 )%;2pb@'C1<ybb{QJLd`T\I=L1(:K)fK@v
`1sU^ty/33׷ȃGK("JE㖱xc#0Ïm; 3@ig֭5 m`ߙ]4X#N8}AN`K?0f-?8׊=?pkV?8}A=?([`8oѓ~`~<A6EWOΞxh~rjmmn`M_xS?0|x.~W7_{ {̮M)7kx0?pp'+A$?@_Y_7 򃸲Vi, ij3k]]_
&`x,?0AX~`GA@esXL~i4@
 7qBls{;^u4@4@4@^'µ4Ih"g. ' g@_\s\| o{ta~C5#Lv^8Jv,u]̩jXLR6]PJN^!;Ro5RJQZaޫ0wpr\L"b
BTL,
ybs6Rk/SG$d0 (jP5$ə;b)R7Y`
 H*\J@]/Ji/dUO@2| D2OLD$Ikz8`_ix94d    IENDB`                                                                                                                                                           images/right.gif                                                                                    100644       0       0           73 11256640756  11232  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a     s!     ,       lcrJ%6 ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                     images/ssl_intro_fig1.gif                                                                           100644       0       0        13152 11256640756  13121  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89aG     !GIF SmartSaver Ver1.1a ,    G I8ͻ`(dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N5;{0'9%˧7#5~}!3-ஂ&
|}"&a4qUG}'v
)mDBSN3"6A,SgGѬ$t[]Ҥ1=p>%fvkVZZ`;ۈd/5;-YOlѦnٜYԗX*^韗.7>6#]ϟmoצNZ9y}=[`9*ߓq}'*Qis[Z7tsή]vŏ<Ễ1/YKzk~wyg^z 7[wY:8{wb'be`Wxg[yf`f(F݉U0
:FpJ!;HԒ"nQ8l6h[]- Ȣdlyԓitu[:W\|V'~`Z|gnF<	PS*Hq zjj{cjjB뮼묷+$$쳗±V˨	̨mLwSZk9(I{r(ʻz2kuv-ꟄjהokSXօ[;of,avZm㦲2b796H32*:2}"nWԸ<KC8H7hO赜X2VC;Zvz݃	h^z2&6	=<th7]Mo	8t2go6Yi\uF֟^)0%JAJ8G.B}q0!<%/:ϤS9\|b#u)y$S/rlHi槯cb#٧>? z)QR"DID`6p}<4¨۠Ҷ}Cyt Xz%q@.o΂a=
֤24D"@&~;T&%.`X֝u*+ڝh0Ű\"8:QBdx28s.
[g8eYj\
U2ms*)8ͅI덯&IJZj&H9Z[甆(6[`9@R>l9MN+-2*	+F񘦬HIZH\!!q*svdrӌȀl&y/6f
D:i.wkEϷS U53~^OM(|UDu=jF9ϋqHGJҒ"=(%V
T,)\RXCtz5J?=R+)
FMJ!58E]TԞaW*U}
^*XǚկUgZɺմm+\UU@iMӾA{=LEJXVMl {|)+_Se9⥰jֺ,fٖp|4JD;bAqknS깯PpD&Y0'ƣqg%Q|8ܙPnrCRzwB+q[%v5sX% kS &Myu;dJܨ=5!G%~ q,I))n[LGu8ơ'OdSeXLAdM
*0ϺZbD1<$'y`$41_\،ʖ2&H4{ ыrqأ8zrQ]ְ81ey~7d/t-I@34BP3NƓ	+zα[x93҈9ZK&ۼsEq*$߸fj|ӟb!=j@78iazCvҊ\VDij%f.kͺvq*E
Uxѭ>N]RNhf*#ʾT	4}Jgꁶ`lFpiځW5ތ+⛍|qK_8Q!ҫR?!}6DpC<	b?3-Hŗ_%
dF'1ҏx`W#ЁC:W9M	QQ=q8ouW;y?۱(:8ݯԧCI-*ˣYK&;;h,%j,Xd7UWoKaL]eq=S9B>p28nnQ&lň;4>f4wB֒[ZM;<?c.9}&HFjd9B+Ζv(Lg&kG6|q+j(c3'D1s5b'ZD%B-(vz}^ru@tvOƃs|@XEGZgGԄ%PPRHPTXIxc^O``bAql؆nxVAxL\P_sl`CWp~D{؇qBW{ȇ${#>3?v>G=I"uEqHU?"QAT^CBr1舛Uae'EB8\ys_%B]ͅHev'>vys7dzw^}Td[E'TRrը^'8Ɖ=iH]}]o
v5Vtc(Wp y-[فِT)ly-8ȑ%DG(ib&p-/y1kV8i	P}<YY>	@yn?)ATSՓETvVxuWKyMɔOVuUNiRP99ɕQXX3]5W*i,YFpjWcɊoySl)gn9APS7AOx)SlYZSguq, "ń#bh$%gydXgrshg@wO\Lgg]	Śu'ChɒID˘]8^cbkR<nBw|DzhGy6yi{dk=x?nGqb@gfeф/Eǂf[;6&2iqc}Ŵd);&|Y7225tdGf~C
:y^vJ#hw#ȶK'93%0:Ij4
h~FkckDN4F#jq)`M6#*:&Hd9DFlچhqxJh-:|зm=:נ{ƤYZ[ʥv6~z4]sgXBouz ;鴤:pPY
J
3YW7YI貝g[*ZIqؘYة0.>F*qԃ.i::諿zq"$yI_`y7[Uy.H3'0iHt9"Cjg4䪚txx^iuhI;Ģ׬!Ww1vY{v|b~5NhC	J9WsmB ZǍG靊Ha9Ԉ~gE*@^J0 Xo{⭬PhB[T[ǫṵZ5*EصrgbGjm붎/١sK1ڷz-Zx`~{{r{+UŞw< H6Oe[:k빛{b4 ֺ{kKka{Yy;9FT:HYLu+JT`	ۻ;֛ػ]K`˻|PKo5{X`*an0U8r(G-~Y+[wJp	.%v#Ț66t!ҍ+k_r

U'\t|[~ǀ,lLvOǮDĻT;.]|Nw4eҘwO|wh:V^JrQ#' [\c,*<6`PǊla0_Þ	wT<ȧ[ɉ_ȔNȁZɳ'ʟ|_dʣ|=}Z~|_²;@hy뿦˗Hs6ʻl,HUˋSKLiy9l ,ɋ[F',D,|>|V,`+{{[3y2x}=~&=T(˙}3d@4vxٴe{XS%ق*b%/zWzsG,oЇHs{mT&קgi
*%v*8Ʊ4l	' Ӥ:+꣔sHP <$5r>UjmMjoydKay%(|	JEM 	K"@E c"hj6)o X~"H)L=՗
ڜLЛ{<1̀к]uʒ|MڷΕXZSE,)ck{Lŧ	y=,8>	y(_ە>h#mN1l0ˌ| ,<Yƚ\Ah+F,dYE7(d٬.\Q޺fCԖ8mp #%Lw$t JٌgM5\flLz:+KApr%9ohB*D:u}5k˴Cf:mcJJzز
zJu./ϒݏJp	~Ҡ&顾`~R؍-U9MnͿy^+̜YQ#@\<G^4,{iZ(sޚ#.Cl|2UgD'.T&vH.o
lÙem֊k	/pIjC@)E̢?$_&(*,.02?4_68:<>S:y5yUL"[%VS@@S5.PaROS"DUD_V =phV_T>uJ&TUCPp
U@NZ:1#KDSu=E0&Xs}{Wu2#x&@XE>KjzfZ[J޳Edvn#vy:$,tXXDl44T4kDc%-5=EMU]emu}&.6>FNV^fnv~V      ;                                                                                                                                                                                                                                                                                                                                                                                                                      images/ssl_intro_fig1.png                                                                           100644       0       0         6403 11256640756  13121  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR    G   xk   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<   PLTE   o`   	pHYs    +  TIDATx͊뺲24~
Sߧ
Jw\a=	B.&,wv'6{\=UrI*i==M2$L{	!G<}7F+%U-tXBhRPm@݃  /p]E)qCEg
%$ѵөRETQ\P71> FX
tmU*%_3 ̖=-Df9#_Ri˨6z=lٓ" 0{H_JiVQm"@S-RRi }`X
;2[(Q'mN[5د	b"fvnnE6rAoMy BpCdFlgJ6_CU_1XHZVԃ
kr7Ɇ@цc4s9F *PnQ~M 1P"剘-1#2$beb{D9b{C0,Vh*Pmc4k s12X0m'"F[$nD\^؊wDwߕr`+*uZmJLܠiW&zҬ֥܏@*UZlxSZ+-/i+SM,Jkue =<;ZL$Y.-9ѿAc}&6!ojwc cC@ن > 7PٷQm\x> 0X$b:ԍ\^1>h޷>f{DC{s  > 0Bԯ|0! 0"4߲oj261\|[R$P=z\PתJn}?4G%K!oHET%BrJ%%ҴMN2QJ/.*B$e64JK=R;|,J6ølGho[[߭ՏWL{z@d<ߥᏏO<ٰh}C9X`N&0Dp4!6rDE	b&m@qs bFno-"[>Q-YZf1BEd&/E`{ ȌCw(Cm7x qr 3-лi>Wo12o=0cM &``@W	E)P,gB
-(QԛMYY*JrS J!U[R"2˅àj[LBljA-D*JkRP|Ҳ!<T0J]sQ'?DUfU*2dSV90rkh<uy͗Gu)0R<%-C
~\va<%b> q &Qtm#XӰC-_~P@<%B$Z],kV
[],k4z}4rH-9iu;T}M+Cw=I;`dߤ5rJ1`g=JҢTrJUàRU3ZLjtVYERgP(JgCJijlEU+YnѤuLVcjDrjBMSu}un)-=^<-=4$-=04-=l2,-})w9iY$enҗļG
0gu~"U`n"Ɔx^ǴM1@]`8`9#{O>ڪKduLfOqGE,>>]tZ1<܋:qn i7guL
;y
D!oyw;I4n@6WM%:Uu\B_GPg͕J:mtJ뺮?lhN+R%J+Q1N+VJu/C:i\HVPm@7>:kTR]DyDf@5W*QeY-<
{QlM,ɋJ]xpX=LQu_L_>7l5|SgBM)>'Ԅ-o-c (Wm-Ta?mpYRetNlVU-WAmt,vBWJQUK=LJU&-εˁlURJ8r!pɹR)h E&7vIzU݊U"Zt/ӇPٳS|u'_=.5QZMkJP0(1Joi\J*QePZRUjQlK	UeWtV&M[giuz\sJ={AԸD}%C#o>^dFK3gn<`]Ķ0o= h[3![9|`5V3 36Ė5Pa TDh->P;M, V&Āx@bfkx@C1@ϼ%2 խ&1D&7Ulԃg7&	!P*mtB8qRjBj#T$IiUe^ᮭ3Adҥ.UIrGtUB*UfP*?V}wjtRBD19J-^RJRJ]nhE^ߋUJE,7UT\t Hdؘhq_.D"s{ܢjwC+ǻlu\5w	'=jląxZjuj%R'gN3j$-jV&z7zTz%l9Ү*UiudY[nVrnو)$ҳN5	5:jI&dI&9l~P/Oz/l?vz~={Q?_|{>Uk6/~Ͽ_z@ξDO/F{yuj>͞^fן|2{_ϯ$L2$j^>;.U    IENDB`                                                                                                                                                                                                                                                             images/ssl_intro_fig2.gif                                                                           100644       0       0         5214 11256640756  13102  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a      !GIF SmartSaver Ver1.1a ,      PI8ͻ`(dihlp,tmx|pH,Ȥrl:ШtJZجvzసE(zn|N~ϯ%SQbŮȆͺO`յذߞM^۬K\%E032ȈaD*H1#DLxLU$)Qœ2Qi䬗H)ʛXIEfB?9
Yd+8oT
Ѡ	jt]uIh+zjYwZz։ˎpFpAJ`.ݐTML|»5#C-R$o;zSKR^}Ld364<7#1+Ā<7cܼO
s/WM;6l+j5b|ߖ`5D`]Y}BjIVcWa_f[	BWauM @"0ymMk~9]B8ckx\q8X@,Vgbo#EM$Yh!SMoP$X郖f}4'|qz1yd3f)h)c~4f "$n$ru\r<K*V&jZb9;I$l裧0Jj***嫩:`UFk׺"Ϡr&3ƲjV,e\llr8':RL/yp6ک⶚®Ǯk:9qyƘo2Vi>>p.ʣ0ŀs8ttziݝ,s0|15
|b<9gupnYL3^x3Y]$25N32@KFBbp"wm:퐊j}RH'Jx;/z>n륔}y@7пJϤtӤm5ʫ$޻,WU#x
$'3%sTol}_#>>e>g^ï|_Ni*Ck"g.̀kPπrg+nN )grFp3 sac`u
QQh0%7C'>1H7E*.Xb9H/|bB15h/@:x̣>Q IB/L"	!$'9GR̤ YFMzl%CIR<<*WJY,Y$.wO겗&$)bs<2)b2<3Ijc̦6ŗmz&8IɈ$'6iY}v|<e@3!&SB1pgvO|~|Oj:%!!'A =4WD:7B._ĹNi;iA撞D!c-%THg6"33;5Z;oXLA*8;КLIS;	TR>'<~H\VCSUaXZִ:]UP@iV(G4|G!l;lo7?B,WZ֘fzhyњv=jYպ}l=ږn֐pXw=ry:W}tZ*ѽvz8xy?Mz |Kͯ~ LN<_N2'L
[3{ G(NW0gL8αwc߸@HNl%;P|,*[92.X^`0hNsѥ653L+˹xs>y|mc6jh}C/9Ў1;)[F3MJ_ t|Ei C6/AiTԮV1WPԛ5U4չ5gka1ymdήEiZG{Ⱦ6iZkq{>u{~y{}?q;\	[Ᾰƕ{ȟґ!?e񕻼)OI8Ϲws5|@q˃Nt Hѓt.PϣN?I:֋^9}f?Ӯ;7._v8]m4}6{m/m+~ތ/w{wG}<A?y77=Þc_us{۾=-ᏻ63/_S>]헺45O.Ͽ 8Xx
؀8X?  ;                                                                                                                                                                                                                                                                                                                                                                                    images/ssl_intro_fig2.png                                                                           100644       0       0         2270 11256640756  13120  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR        ~Y   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<   PLTE   i-   	pHYs    +  IDATxQ0<xPs ~i *3NY(|&t~˖2,꘥VY{~q~ڞYfe/t8<+@wX%2ڄј?OKqjxj"wz47	I d@AD(V֚$Y]$ e69:{&!	 z:)q׃Ij^M9*Y~=_[7Q l"w,6sZ<]KQP	62P,]ˇ."sgKq>_ߏޚB%ҔASUmb2cxP^뭚APˍ7zpmӐﱖF[Q֣$<]0Z>e -ﮪ+aU>0dMuA&v FF8k>kДMy[ ɨ5nN3o "(|Am0m~5n)%^޺ojrV,T
8rM baJS-(emEFӑu<n\S H()]%}џ,v
,Ă#d5,2ˬbBo,2,2,2,z3KuW|9?`r6za!Y$6
ůWUV]χ !eD)_>ow,Գ:㊅e}keoX%VÚ[eaMo8`gYy:.}c	x kB2,2,2,2XSGdYfeYfeYfeY{dIIc:IcGuJ)Ne#)4Jf]d̽Xs:i,2,2,2,2˫?=2,2,2,2ۘ$S2,G{,rdYfeYfeYfeYfNW2,J)urd.    IENDB`                                                                                                                                                                                                                                                                                                                                        images/ssl_intro_fig3.gif                                                                           100644       0       0         7664 11256640756  13116  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89aC  ̙fff   !GIF SmartSaver Ver1.1a ,    C I8ͻ`(dihlp,tmx|pH,Ȥrl:ШtJZجvzx5zn|Nx<y2|$~+g%f"i{gǃ)#QƘ, W߇ _,4Jxa-+OS~&*cǎAOC0ppT˄+䐠͗jҚi&&OvFKzLң$JMXad1 =뚓R7qtT[4H.eU:jݫJ`Z8%hF"ږ[dX$Xj~
[,7S+Xg#-7bL)qʍ:]hʾn-9fݟ'FR^WiL_c\rP7
8VB=lyѹ^__)5!/Cq.|==J|`|6mF8؃V(ǆv (bzh:'0xU2h%t<~1`)(5AD&ߒPF|!)XZ͖Yv%.Tid
yۙeY擣3pȦ*i')b8|.`)V"砈vq'@9梐V
9X)jp.|*N4*	v)^JES ,0+Tq>DB&lÙr["Nе8l2aӰbu.jڋro.p\ްoRyW\pD wY󰿮Fܱ/L)怯ɥؼ3qn,0ss6<Dy%4o-;A;9n4zu_0b`e7zljƭoӝeޘ.vJQIxê.("1nC.&VΥK9ؠ3x?:.ش#%CAS{"pUپǛVdOp|[|OȿRoޣ~Yd~#/vƷ篾U~ȉ1I, *ACg@d@ vNɀP3(@ ALn@DF<\]D	>4+	IeZ3)WP,!+pH%ωXCEXbX\i./
Ad.a`kƥq#HmuqvLx8-4P3F-fScH,ЃE)$m؎'r'AuytAK=1pg
fCI$$]cHj!d+=PeF>`/FI2 #!sTqt9#GN=(;I^Α[#M2!-]IcN$8	
7RҘlif&bvP"Ja
YC3]<(q0
1yӋ.HFDɏ9A7rk>Jړ<h BSixRR-jaN4{0j=z\.yUQe5XV5mZWu-Y ּt+bZZaYF=.dsc5MqHVJuld˿ֳ΅XmhZ-kg޵bֲocV=-!E.jiܪָE!c5]V7GCu]V%7Zgj,z':+|zYN܀`wW.҂;a	?xkzF=5,[=8+ً>8LqNbc֫ÄmؾCr]Lg)9R1ee xy ^ 1h&+?Ʈ'39l׼g:0"[x=yφ>=9ǂˣeҕ3i`ӛt(R;XĘy,izƢMDzwjoGh&󼤜sOl سu`*!Yu;i0N7kJԛAidݢf6Wԝj櫋mdx6]o`׋z	I޴jr0h;_fGP{{˵|sMqyere<0坣<(+C':ܥhN/+ԣ*QVRs(L^ϩX^<I:f'ڦ}mЈc7(ǽ6~wvjq5/T+e<x'] n-7-ä]w_5[L_I{	w~K/M3&+Lv|Cع%+F##-Pj N\;W/5<я>훿_:hIGoZ.LϿD<?'oFE\!
QrGkg2FȀKyRNv'*NBhy@b!eU&_(+浂҂.*024X)6xov:)9؃ƃ@(?8&FhHp"xzL؀s7PUUV7XQZ@x`x:se68i*gȆm|Hsv1hxzHMX~(z"HnO9HwqsgsmhW,r$nm(q܅8W9ah}f>S}{5'v&7vKU3CfxSq3'h(AȈiusQE!Q<7hHf\UvkGOWdaP%}~;Gp
MEsy%ЎtXA4WAȊlց 5MFwe"9O**h,֨/-w0;$^Qq8BY$vfrajC҇1fIxBYӔs?	Ty{XN;>ȕ]镉r`b9fGJiɖ@qRrIyuI&tykn(,~I~I{),iYm;axYYb.?<Cz}Sz5z
	x,13|1s,y%yŚ3%I)3Ƶ9ٛKh<R[˹9)ә|i)~ɝY#QɅYp詆乞a؅)w.6i3""i 0 Zz
ڠ:ZFsؐʡX$%舡b8>hO&2&:(Z Z*5tpu(h<:BZDzFzQ;jMCc<4zVz7ʤ+=
enD} (6fZ'2ƥq2J\$OrhZej8`>	A҆3PJjI:z:dl	wKZHWgzr60G$e`ʪԥʌ<tx֑Zk/~joI&By9ͪJjѺzzZ݊KȐʩz' ^0AJ=5eU]=qH8$GdRdI>'QSl5Ko)|΂MtZfka w;.|?@<=A¾@ĿC7JKL1O-P2QS2IVWؑҞZ۟\([]] `a7cdefghibklmnopqrstuvwxyz{|}~3D      ;                                                                            images/ssl_intro_fig3.png                                                                           100644       0       0         5010 11256640756  13114  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         PNG

   IHDR    C   l?   sRGB    gAMA  a    cHRM  z&         u0  `  :  pQ<   PLTE̙fff   Q<   	pHYs    +  	PIDATxKr8 qTS57fAMKɀjulYq	Q@iӦM6m?1Nor<9)TPkqPy1a;J( cmp/;w`3P,+C! 77P ChQyuX笳puϩX`aaB~X{YgYqk@JPrXqo%
pIPL@1(egQMEX235X PM<c4,aRP@(4|;c^qHR@D\2 UYV=fzDOFI~oP=
:&+߬xśU_/vEr%LCCNbjHRbiV^ˬO-CxeiQׄ;HHGw$dQAb&I#1CAYXH@L)leͱ;ƦSoICē8Q0iMg!Ob8%eNU %CIQJ9ág-!SG:%+~"bb{G zN$mq9kݡ}i/
Y0Kg~2=lϲÜ/X
exf&$U9<Z5ȴ(
$DRri2rDp%&*%#J&*{BJ:J</2ҾL
T\a0v=FrzJtQIiCMx:)(TTCCv<a%C.1vF2LeEġd❡I2OBc2(| B?F!/AɮS(뜵nYzbA5r=ž$Z893嬳CM
%PBBJ&fF;P>t^R,JX9*(`/(jd+`RcI=6E6E6H~6e~D{?[!Q?ks)oaoj8}^ԱEr
P
P
P
P
P
P
5,*į.	S[A|3ns*ҡڴ&UjQ<PTR/~>qA^PHH~'#R(+B)BeBkw.XDS%T*GJOPe(sJU$rTQ>V;)5N+&1OKd9lJkA6 Ioio!obZȜndFlST?~.MefSG۵Px|u{MuXR~hSB]ze-ٔ<aSsO z?nJĪβm-JשUuMU(}p=U]6RUX
M*b*TjK:/JHDԍ]W(J|Hue|d=xGQHQM$PjoɦΜ{)OXG_Kf3PrTӌM:D,)seޥ,("柳EdI-柳C)JYPD]g=EAonσS:f=A OO`eR(R(R(R(R[aG5UBӳ)*ƨ$ZJOI^!IRYh
P
ʂJLq+;3AI=7ALq(BCr_S%~ld	
#9]0PhA,`	5p}&~68ަ"L&l*Lo8AR~Y]YUkS`MP36JR<{ ,(#Xؓ65P`T(8
s\/=
f
5BϸEc+B)B)B)B)B)B)B6-)NܬP@1 faLTT[!3ED!mP_5A5&AZOWӱB)B)B)B)B*#v'aY4*Q(ғBϵ[P>6_B,j|W@[fDRl~m*T_~"%5
CU+&!]u(.!~61yH6E&1v-/N6}2/ީ~Nbxwktӱ_PnwkP>?;K%u2ԭ:6mڴiӶS[    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        images/up.gif                                                                                       100644       0       0           71 11256640756  10537  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         GIF89a    @Xq!     ,       4{n ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                       index.html                                                                                          100644       0       0        14132 11256641267  10235  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache HTTP Sunucusu Sürüm 2.2
Belgeleri - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="index-page">
<div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="http://httpd.apache.org/docs-project/"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a></div>
<div id="page-content"><h1>Apache HTTP Sunucusu Sürüm 2.2
Belgeleri</h1>

<form method="get" action="http://www.google.com/search"><p><input name="as_q" value="" type="text" /> <input value="Google’de Ara" type="submit" /><input value="10" name="num" type="hidden" /><input value="tr" name="hl" type="hidden" /><input value="UTF-8" name="ie" type="hidden" /><input value="Google Search" name="btnG" type="hidden" /><input name="as_epq" value="Sürüm 2.2" type="hidden" /><input name="as_oq" value="" type="hidden" /><input name="as_eq" value="&quot;List-Post&quot;" type="hidden" /><input value="" name="lr" type="hidden" /><input value="i" name="as_ft" type="hidden" /><input value="" name="as_filetype" type="hidden" /><input value="all" name="as_qdr" type="hidden" /><input value="any" name="as_occt" type="hidden" /><input value="i" name="as_dt" type="hidden" /><input value="httpd.apache.org" name="as_sitesearch" type="hidden" /><input value="off" name="safe" type="hidden" /></p></form>
<table id="indextable"><tr><td class="col1"><div class="category"><h2><a name="release" id="release">Sürümlerin Dağıtım Bilgileri</a></h2>
<ul><li><a href="new_features_2_2.html">Apache 2.1/2.2’deki yeni özellikler</a></li>
<li><a href="new_features_2_0.html">Apache 2.0’daki yeni özellikler</a></li>
<li><a href="upgrading.html">2.0’dan 2.2’ye yükseltme</a></li>
<li><a href="license.html">Apache Lisansı</a></li>
</ul>
</div><div class="category"><h2><a name="manual" id="manual">Başvuru Kılavuzu</a></h2>
<ul><li><a href="install.html">Derleme ve Kurulum</a></li>
<li><a href="invoking.html">Başlatma</a></li>
<li><a href="stopping.html">Durdurma ve Yeniden Başlatma</a></li>
<li><a href="mod/directives.html">Çalışma anı Yapılandırma Yönergeleri</a></li>
<li><a href="mod/quickreference.html">Hızlı Yönerge Kılavuzu</a></li>
<li><a href="mod/index.html">Modüller</a></li>
<li><a href="mpm.html">Çok Süreçlilik Modülleri (MPM’ler)</a></li>
<li><a href="filter.html">Süzgeçler</a></li>
<li><a href="handler.html">Eylemciler</a></li>
<li><a href="programs/index.html">Sunucu ve Desteklenen Programlar</a></li>
<li><a href="glossary.html">Terimler</a></li>
</ul>
</div></td><td><div class="category"><h2><a name="usersguide" id="usersguide">Kullanıcı Kılavuzu</a></h2>
<ul><li><a href="bind.html">Dinleme</a></li>
<li><a href="configuring.html">Yapılandırma Dosyaları</a></li>
<li><a href="sections.html">Yapılandırma Bölümleri</a></li>
<li><a href="caching.html">İçerik Bellekleme</a></li>
<li><a href="content-negotiation.html">İçerik Dili Yönetimi</a></li>
<li><a href="dso.html">Devingen Paylaşımlı Nesneler (DSO’lar)</a></li>
<li><a href="env.html">Ortam Değişkenleri</a></li>
<li><a href="logs.html">Günlük Dosyaları</a></li>
<li><a href="urlmapping.html">URL’lerin Dosya Sistemi ile Eşlenmesi</a></li>
<li><a href="misc/perf-tuning.html">Başarım Arttırma</a></li>
<li><a href="misc/security_tips.html">Güvenlik İpuçları</a></li>
<li><a href="server-wide.html">Sunucu Genelinde Yapılandırma</a></li>
<li><a href="ssl/index.html">SSL/TLS Şifrelemesi</a></li>
<li><a href="suexec.html">CGI için Suexec Desteği</a></li>
<li><a href="rewrite/index.html">URL Yeniden Yazma Rehberi</a></li>
<li><a href="vhosts/index.html">Sanal Konaklar</a></li>
</ul>
</div></td><td class="col3"><div class="category"><h2><a name="howto" id="howto">Nasıllar ve Öğreticiler</a></h2>
<ul><li><a href="howto/auth.html">Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi</a></li>
<li><a href="howto/cgi.html">CGI: Devingen İçerik</a></li>
<li><a href="howto/htaccess.html">.htaccess dosyaları</a></li>
<li><a href="howto/ssi.html">Sunucu Taraflı İçerik Yerleştirme (SSI)</a></li>
<li><a href="howto/public_html.html">Kullanıcı Dizinleri (public_html)</a></li>
</ul>
</div><div class="category"><h2><a name="platform" id="platform">Platformlara Özgü Bilgiler</a></h2>
<ul><li><a href="platform/windows.html">Microsoft Windows</a></li>
<li><a href="platform/netware.html">Novell NetWare</a></li>
<li><a href="platform/ebcdic.html">EBCDIC Port</a></li>
</ul>
</div><div class="category"><h2><a name="other" id="other">Diğer Konular</a></h2>
<ul><li><a href="faq/index.html">Sıkça Sorulan Sorular</a></li>
<li><a href="sitemap.html">Site Haritası</a></li>
<li><a href="developer/index.html">Geliştiriciler için Belgeler</a></li>
<li><a href="misc/index.html">Diğer Bilgiler</a></li>
</ul>
</div></td></tr></table></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                      install.html                                                                                        100644       0       0        55640 11256641267  10605  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Derleme ve Kurulum - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Derleme ve Kurulum</h1>



    <p>Bu belge Apache HTTP Sunucusunun sadece Unix ve Unix benzeri
      sistemlerde derlenmesini ve kurulmasını kapsar. Windows üzerinde
      derleme ve kurulum için <a href="platform/windows.html">Apache HTTPd’nin
      Microsoft Windows ile kullanımı</a> bölümüne bakınız. Diğer platformlar
      için ise <a href="platform/index.html">platform</a> belgelerine bakınız.</p>

    <p>Apache HTTPd, derleme ortamını oluşturmak için çoğu Açık Kaynak Kodlu
      projenin yaptığı gibi <code>libtool</code> ve <code>autoconf</code>
      kullanır.</p>

    <p>Eğer sadece sürüm yükseltiyorsanız (2.2.50’den 2.2.51’e yükseltmek
      gibi) lütfen doğrudan <a href="#upgrading">Yükseltme</a> bölümüne
      atlayınız.</p>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#overview">Tez canlılar için genel bir bakış</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#requirements">Gereksinimler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#download">İndirme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#extract">Paketi açma</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#configure">Kaynak ağacının yapılandırılması</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#compile">Derleme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#install">Kurulum</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#customize">Kişiselleştirme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#test">Deneme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#upgrading">Yükseltme</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="programs/configure.html">Kaynak ağacının yapılandırılması</a></li><li><a href="invoking.html">Apache HTTPd’nin başlatılması</a></li><li><a href="stopping.html">Durdurma ve yeniden başlatma</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Tez canlılar için genel bir bakış</a></h2>

    <table>
      
      <tr>
        <td><a href="#download">İndirme</a></td>

        <td><code>$ lynx http://httpd.apache.org/download.cgi</code>
        </td>
      </tr>

      <tr>
        <td><a href="#extract">Paketi açma</a></td>

        <td><code>$ gzip -d httpd-<em>NN</em>.tar.gz<br />
         $ tar xvf httpd-<em>NN</em>.tar<br />
         $ cd httpd-<em>NN</em></code></td>
      </tr>

      <tr>
        <td><a href="#configure">Yapılandırma</a></td>

        <td><code>$ ./configure --prefix=<em>ÖNEK</em></code>
        </td>
      </tr>

      <tr>
        <td><a href="#compile">Derleme</a></td>

        <td><code>$ make</code> </td>
      </tr>

      <tr>
        <td><a href="#install">Kurulum</a></td>

        <td><code>$ make install</code> </td>
      </tr>

      <tr>
        <td><a href="#customize">Kişiselleştirme</a></td>

        <td><code>$ vi <em>ÖNEK</em>/conf/httpd.conf</code> </td>
      </tr>

      <tr>
        <td><a href="#test">Deneme</a></td>

        <td><code>$ <em>ÖNEK</em>/bin/apachectl -k start</code>
        </td>
      </tr>
    </table>

    <p><em>NN</em> yerine kuracağınız sürümü, <code><em>ÖNEK</em></code>
      yerine de dosya sisteminde sunucunun altına kurulacağı dizin yolunu
      yazınız. <code><em>ÖNEK</em></code> belirtilmezse
      <code>/usr/local/apache2</code> öntanımlıdır.</p>

    <p>Derleme ve kurulum işleminin her aşaması, Apache HTTPd Sunucusunun
      derlenmesi ve kurulması için gerekenler başta olmak üzere aşağıda
      ayrıntılı olarak açıklanmıştır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="requirements" id="requirements">Gereksinimler</a></h2>

    <p>Apache HTTPd’yi derleyebilmek için şunlar mevcut olmalıdır:</p>

    <dl>
      <dt>Disk Alanı</dt>
      <dd>Geçici olarak en azından 50 MB boş disk alanınız olduğundan emin
        olunuz. Kurulumdan sonra Apache yaklaşık 10 MB disk alanı kaplıyor
        olacaktır. Asıl disk alanı gereksinimi seçtiğiniz yapılandırma
        seçenekleri ve üçüncü parti modüllere göre değişiklik
        gösterecektir.</dd>

      <dt>ANSI-C Derleyici ve Derleme Sistemi</dt>
      <dd>Bir ANSI-C derleyicinin kurulu olduğundan emin olunuz. <a href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
        tarafından dağıtılan <a href="http://www.gnu.org/software/gcc/gcc.html">GNU C derleyicisini
        (GCC)</a> kullanmanız önerilir. GCC yoksa en azından satıcınızın
        derleyicisinin ANSI uyumlu olduğundan emin olunuz. Ayrıca,
        <code>PATH</code> ortam değişkeninizin içerdiği yollarda
        <code>make</code> gibi temel derleme araçları da bulunmalıdır.</dd>

      <dt>Zamanın doğru belirlenmesi</dt>
      <dd>HTTP protokolünün elemanları sunuldukları tarih ve saate göre ifade
        edilirler. Bu bakımdan sisteminizdeki zaman ayarlama oluşumunun
        ayarlarını gözden geçirmenizin tam sırasıdır. Bu amaçla, Ağ Zaman
        Protokolüne (NTP) göre çalışan <code>ntpdate</code> veya
        <code>xntpd</code> programları kullanılır. NTP yazılımları ve halka
        açık zaman sunucuları hakkında daha ayrıntılı bilgi için <a href="http://www.ntp.org">NTP sitesine bakınız</a>.</dd>

      <dt><a href="http://www.perl.org/">Perl 5</a> [SEÇİMLİK]</dt>
      <dd>Perl ile yazılmış <code class="program"><a href="./programs/apxs.html">apxs</a></code> veya
        <code class="program"><a href="./programs/dbmmanage.html">dbmmanage</a></code> gibi bazı betikleri desteklemek için
        Perl 5 yorumlayıcısı gerekir (5.003 veya daha yeni sürümleri
        yeterlidir). Eğer sisteminizde birden fazla Perl yorumlayıcı
        kuruluysa (örneğin, sistem geneli için Perl 4, kendi kullanımızı için
        Perl 5 kurulu olabilir), doğru sürümün kullanılacağından emin olmak
        bunu <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine <code>--with-perl</code>
        seçeneğini kullanarak belirtmeniz önerilir. Eğer
        <code class="program"><a href="./programs/configure.html">configure</a></code> betiği sisteminizde Perl 5 yorumlayıcısı
        bulamazsa bu betikleri kullanamazsınız. Ancak, bu durum Apache
        HTTPd’nin derlenip kurulmasına engel değildir.</dd>

      <dt><a href="http://apr.apache.org">apr/apr-util &gt;= 1.2</a></dt>
      <dd><code>apr</code> ve <code>apr-util</code> Apache HTTPd kaynak
        paketiyle gelmektedir ve hemen hemen tüm durumlarda sorunsuz
        kullanılabilecek durumdadır. Ancak sisteminizde <code>apr</code> veya
        <code>apr-util</code>’in 1.0 veya 1.1 sürümleri kuruluysa onları paket
        içindeki kütüphaneleri kullanmaya zorlamak için ya 1.2 sürümlerine
        yükseltmeli ya da ayrı HTTPd derlemeleriniz olmalıdır. Paket içinde
        gelen <code>apr</code>/<code>apr-util</code> kaynak kodlarını
        kullanmak için <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine
        <code>--with-included-apr</code> seçeneğini belirtiniz.

      <div class="note"><h3>Ek bilgi</h3>
        <code>--with-included-apr</code> seçeneği 2.2.3 sürümünde eklenmiştir.
      </div>
      <div class="example"><p><code>
        # Paketteki apr/apr-util’in kullanımını zorlamak için<br />
        ./configure --with-included-apr<br />
      </code></p></div>

        Apache HTTPd’yi ve <code>apr</code>/<code>apr-util</code>’i ayrı ayrı
        derlemek için:
      <div class="example"><p><code>
        # apr 1.2’nin derlenmesi ve kurulması<br />
        cd srclib/apr<br />
        ./configure --prefix=/usr/local/apr-httpd/<br />
        make<br />
        make install<br />
        <br />
        # apr-util 1.2’nin derlenmesi ve kurulması<br />
        cd ../apr-util<br />
        ./configure --prefix=/usr/local/apr-util-httpd/
          --with-apr=/usr/local/apr-httpd/<br />
        make<br />
        make install<br />
        <br />
        # HTTPd’nin derlenmesi<br />
        cd ../../<br />
        ./configure --with-apr=/usr/local/apr-httpd/
          --with-apr-util=/usr/local/apr-util-httpd/
      </code></p></div>
    </dd>
  </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="download" id="download">İndirme</a></h2>

    <p>Apache HTTP Sunucusunu, çeşitli yansıların da listelendiği <a href="http://httpd.apache.org/download.cgi">Apache HTTP Sunucusu
      indirme sayfasından</a> indirebilirsiniz. Unix benzeri sistemler
      kullanan Apache HTTPd kullanıcılarının kaynak paketlerinden birini
      indirip derlemeleri daha iyi olacaktır. Derleme işlemi (aşağıda
      açıklanmıştır) kolaydır ve sunucunuzu ihtiyaçlarınıza uygun olarak
      kişiselleştirmenize imkan tanır. Ayrıca, hazır derlenmiş paketler
      çoğunlukla en son kaynak sürüm kadar güncel değildirler. Eğer böyle bir
      paket indirmişseniz, kurarken paketin içinde bulunan
      <code>INSTALL.bindist</code> dosyasındaki talimatlara uyunuz.</p>

    <p>İndirme işleminin ardından Apache HTTP Sunucusunun eksiksiz ve
      değişikliğe uğramamış olduğunun doğrulanması önemlidir. Bu indirilen
      tar paketinin PGP imzasına göre sınanması ile sağlanabilir. Bunun nasıl
      yapılacağı <a href="http://httpd.apache.org/download.cgi#verify">indirme
      sayfasında</a> anlatıldığı gibi <a href="http://httpd.apache.org/dev/verification.html">PGP
      kullanımının</a> anlatıldığı daha geniş bir örnek de vardır.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="extract" id="extract">Paketi açma</a></h2>

    <p>Apache HTTPd tar paketinden sıkıştırmayı kaldırdıktan sonra tar
      arşivinden dosyaları çıkarmak basit bir işlemdir:</p>

    <div class="example"><p><code>
      $ gzip -d httpd-<em>NN</em>.tar.gz<br />
      $ tar xvf httpd-<em>NN</em>.tar
    </code></p></div>

    <p>Bu işlem bulunduğunuz dizinin içinde dağıtımın kaynak dosyalarını
      içeren yeni bir dizin oluşturacaktır. Sunucuyu derleme işlmine
      başlayabilmek için önce <code>cd</code> ile bu dizine geçmelisiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="configure" id="configure">Kaynak ağacının yapılandırılması</a></h2>

    <p>Sonraki adım, Apache HTTPd kaynak ağacının platformunuza ve kişisel
      gereksinimlerinize uygun olarak yapılandırılmasıdır. Bu işlem dağıtımın
      kök dizininde bulunan <code class="program"><a href="./programs/configure.html">configure</a></code> betiği kullanılarak
      yapılır. (Apache HTTPd kaynak ağacının resmen dağıtıma girmemiş bir
      sürümünü indiren geliştiricilerin sistemlerinde <code>autoconf</code> ve
      <code>libtool</code> kurulu olması ve sonraki adıma geçmek için
      <code>buildconf</code> çalıştırmaları gerekir. Bu işlem resmi
      dağıtımlar için gerekli değildir.)</p>

    <p>Kaynak ağacını tamamen öntanımlı seçenekler kullanılarak derlemek için
      <code>./configure</code> komutunu vermek yeterlidir. Öntanımlı
      seçenekleri değiştirmek için <code class="program"><a href="./programs/configure.html">configure</a></code> betiği
      çeşitli değişkenler ve komut satırı seçenekleri kabul eder.</p>

    <p>En önemli seçenek, Apache HTTP Sunucusunun kurulacağı yerin
      belirlenmesini, dolayısıyla Apache’nin bu konumda doğru olarak
      çalışması için yapılandırılmasını sağlayan <code>--prefix</code>’tir.
      Kurulacak dosyaların yerleri ile ilgili daha ayrıntılı denetim ek <a href="programs/configure.html#installationdirectories">yapılandırma
      seçenekleri</a> ile mümkün kılınmıştır.</p>

    <p>Bu noktada ayrıca, Apache HTTPd’de hangi özelliklerin bulunmasını
      istediğinizi <a href="mod/index.html">modülleri</a> etkin kılarak veya iptal
      ederek belirtebilirsiniz. Apache, öntanımlı olarak içerilmiş <a href="mod/module-dict.html#Status">temel</a> modüllerle gelir. Diğer
      modüller <code>--enable-<var>modül</var></code> seçenekleri
      kullanılarak etkinleştirilir. Buradaki <code><var>modül</var></code>,
      önünden <code>mod_</code> dizgesi kaldırılmış ve içindeki altçizgi
      imleri tire imleri ile değiştirilmiş modül ismidir. Ayrıca,
      <code>--enable-<var>modül</var>=shared</code> seçeneklerini kullanarak
      modülleri çalışma anında gerektiğinde yüklemek veya kaldırmak üzere <a href="dso.html">paylaşımlı nesneler (DSO’lar)</a> olarak derlemeniz de
      mümkündür. Temel modülleri de benzer şekilde
      <code>--disable-<var>modül</var></code> seçenekleriyle iptal
      edebilirsiniz. <code class="program"><a href="./programs/configure.html">configure</a></code> betiği mevcut olmayan
      modüller için sizi uyarmayıp, seçeneği yok saymakla yetineceğinden, bu
      seçenekleri kullanırken dikkatli olmalısınız.</p>

    <p>Ek olarak, bazen kullandığınız derleyici, kütüphaneler veya başlık
      dosyalarının yerleri hakkında <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine
      ilave bilgiler sağlamanız gerekir. Bu işlem
      <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine ya ortam değişkenleriyle ya da
      komut satırı seçenekleriyle bilgi aktarılarak yapılır. Daha fazla bilgi
      için <code class="program"><a href="./programs/configure.html">configure</a></code> kılavuz sayfasına bakınız.</p>

    <p>Apache’yi derlerken ne gibi olasılıklara sahip olduğunuz hakkında bir
      izlenim edinmeniz için aşağıda tipik bir örneğe yer verilmiştir. Bu
      örnekte, Apache’nin <code>/sw/pkg/apache</code> önekiyle başlayan
      dizinlere kurulması, belli bir derleyici ve derleyici seçenekleriyle
      derlenmesi ve <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> ve
      <code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code> modüllerinin de DSO mekanizması üzerinden
      daha sonra yüklenmek üzere derlenmesi istenmektedir:</p>

    <div class="example"><p><code>
      $ CC="pgcc" CFLAGS="-O2" \<br />
       ./configure --prefix=/sw/pkg/apache \<br />
       --enable-rewrite=shared \<br />
       --enable-speling=shared
    </code></p></div>

    <p><code class="program"><a href="./programs/configure.html">configure</a></code> betiği başlatıldığında sisteminizde
      mevcut özelliklerin işe yararlığını sınamak ve sonradan sunucuyu
      derlemek için kullanılacak Makefile dosyalarını oluşturmak için bir kaç
      dakika çalışacaktır.</p>

    <p><code class="program"><a href="./programs/configure.html">configure</a></code> seçeneklerinin tamamı ayrıtılı olarak
      <code class="program"><a href="./programs/configure.html">configure</a></code> kılavuz sayfasında açıklanmıştır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="compile" id="compile">Derleme</a></h2>

    <p>Artık, Apache HTTPd paketini şekillendiren çeşitli parçaları derlemek
      için basitçe aşağıdaki komutu verebilirsiniz:</p>

    <div class="example"><p><code>$ make</code></p></div>

    <p>Bu komutu verdikten sonra lütfen sabırlı olunuz. Temel yapılandırmanın
      derlenmesi bir kaç dakika alsa da modüllerin derlenmesi donanımınıza ve
      seçtiğiniz modüllerin sayısına bağlı olarak daha uzun süre
      gerektirecektir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="install" id="install">Kurulum</a></h2>

    <p>Şimdi sıra <code><em>ÖNEK</em></code> dizini altına kurulmak üzere
      yapılandırdığınız (yukarı <code>--prefix</code> seçeneğine bakınız)
      paketi kurmaya geldi. Basitçe şu komutu veriniz:</p>

    <div class="example"><p><code># make install</code></p></div>

    <p><code><em>ÖNEK</em></code> dizininde genellikle yazma izinlerinin
      sınırlı oluşu nedeniyle bu adım genellikle root yetkilerini
      gerektirir.</p>

    <p>Eğer sürüm yükseltiyorsanız, kurulum sırasında mevcut yapılandırma
      dosyalarının ve belgelerin üzerine yazılmayacaktır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="customize" id="customize">Kişiselleştirme</a></h2>

    <p>Bu adımda, Apache HTTP Sunucunuzu <code><em>ÖNEK</em>/conf/</code>
      dizini altındaki <a href="configuring.html">yapılandırma
      dosyalarını</a> düzenleyerek kişiselleştirebilirsiniz.</p>

    <div class="example"><p><code>$ vi <em>ÖNEK</em>/conf/httpd.conf</code></p></div>

    <p>Bu kılavuz ve kullanılabilecek <a href="mod/directives.html">yapılandırma yönergelerinin</a> kılavuzlarını
      <a href="./index.html">docs/manual/</a> altında bulabileceğiniz gibi en
      son sürümünü daima <a href="http://httpd.apache.org/docs/2.2/">http://httpd.apache.org/docs/2.2/</a> adresinde
      bulabilirsiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="test" id="test">Deneme</a></h2>

    <p>Artık Apache HTTP Sunucunuzu <a href="invoking.html">başlatmaya</a>
      hazırsınız. Hemen şu komutu verin:</p>

    <div class="example"><p><code>$ <em>ÖNEK</em>/bin/apachectl -k start</code></p></div>

    <p><code>http://localhost/</code> üzerinden ilk belgeniz için bir istek
      yapmalısınız. Genellikle <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> olarak bilinen
      <code><em>ÖNEK</em>/htdocs/</code> altındaki sayfayı görürsünüz.
      Çalışmakta olan sunucuyu <a href="stopping.html">durdurmak</a> için şu
      komutu verebilirsiniz:</p>

    <div class="example"><p><code>$ <em>ÖNEK</em>/bin/apachectl -k stop</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="upgrading" id="upgrading">Yükseltme</a></h2>

    <p>Sürüm yükseltme işleminin ilk adımı, sitenizi etkileyen değişiklikleri
      öğrenmek için dağıtım duyurusunu ve kaynak paketindeki
      <code>CHANGES</code> dosyasını okumaktır. Ana sürümlerden yükseltme
      yapıyorsanız (1.3’ten 2.0’a veya 2.0’dan 2.2’ye gibi), derleme anı ve
      çalışma anı yapılandırmalarındaki ana farklılıklar elle ayarlamalar
      yapmanızı gerektirecektir. Ayrıca, tüm modüllerin de modül API’sindeki
      değişikliklere uyum sağlaması için yükseltilmesi gerekecektir.</p>

    <p>Aynı ana sürüm içinde yükseltme yapmak (2.2.55’ten 2.2.57’ye
      yükseltmek gibi) daha kolaydır. <code>make install</code> işlemi,
      mevcut yapılandırma ve günlük dosyalarınızın ve belgelerin üzerine
      yazmayacaktır. Ek olarak, geliştiriciler alt sürüm değişikliklerinde
      <code class="program"><a href="./programs/configure.html">configure</a></code> seçenekleri, çalışma anı yapılandırması
      veya modül API’sinde uyumsuz değişiklikler yapmamaya özen
      göstereceklerdir. Çoğu durumda, aynı <code class="program"><a href="./programs/configure.html">configure</a></code> komut
      satırını, aynı yapılandırma dosyasını kullanabileceksiniz ve tüm
      modülleriniz de çalışmaya devam edebilecektir.</p>

    <p>Aynı ana sürüm içinde yükseltme işlemine, eski kaynak ağacının kök
      dizininde veya kurulu sunucunuzun <code>build</code> dizininde
      bulacağınız <code>config.nice</code> dosyasını yeni kaynak ağacının kök
      dizinine kopyalamak suretiyle başlayabilirsiniz. Bu dosya evvelce
      kaynak ağacını yapılandırmakta kullandığınız
      <code class="program"><a href="./programs/configure.html">configure</a></code> komut satırını içerir.
      <code>config.nice</code> dosyasında yapmak istediğiniz değişiklikler
      varsa yaptıktan sonra şu komutları veriniz:</p>

    <div class="example"><p><code>
    $ ./config.nice<br />
    $ make<br />
    $ make install<br />
    $ <em>ÖNEK</em>/bin/apachectl -k graceful-stop<br />
    $ <em>ÖNEK</em>/bin/apachectl -k start<br />
    </code></p></div>

    <div class="warning">Her yeni sürümü hizmete sokmadan önce daima çalışma
      ortamınızda denemeniz gerekir. Örneğin, yükseltme işlemini
      sonuçlandırmadan önce eski sürümün çalışmasını durdurmadan yenisini
      farklı bir <code>--prefix</code> ile kurabilir ve farklı bir port ile
      (<code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesini
      ayarlamak suretiyle) çalıştırabilirsiniz.</div>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                invoking.html                                                                                       100644       0       0        23443 11256641267  10757  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache HTTPd’nin başlatılması - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache HTTPd’nin başlatılması</h1>


    <p>Apache normal olarak, Windows NT, 2000 ve XP'de bir hizmet olarak,
      Windows 9x ve ME’de ise bir konsol uygulaması olarak çalışır. Ayrıntılı
      bilgi için <a href="platform/windows.html#winsvc">Apache HTTPd’nin bir
      hizmet olarak çalıştırılması</a> ve <a href="platform/windows.html#wincons">Apache HTTPd’nin bir konsol
      uygulaması olarak çalıştırılması</a> bölümlerine bakınız.</p>

    <p>Unix’te ise artalanda isteklere yanıt vermek için sürekli çalışan bir
      artalan sürecidir. Bu belgede <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin nasıl
      çalıştırılacağı açıklanmaktadır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#startup">Apache Nasıl Başlatılır?</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#errors">Başlatma Sırasındaki Hatalar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#boot">Sistem Açılışında Başlatma</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#info">Ek Bilgiler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="stopping.html">Durdurma ve Yeniden Başlatma</a></li><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="startup" id="startup">Apache Nasıl Başlatılır?</a></h2>

    <p>Yapılandırma dosyasında <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesi ile öntanımlı olan port
      80 (veya 1024’ten küçük herhangi bir port) belirtilmişse Apache HTTP
      Sunucusunu başlatmak için root yetkileri gerekecektir. Sunucu başlatılıp
      günlük dosyalarını açmak gibi bazı ön hazırlık etkinliklerinde
      bulunduktan sonra istemcilerden gelen istekleri dinlemek ve yanıt vermek
      için çeşitli <em>çocuk</em> süreçler başlatır. Ana <code>httpd</code>
      süreci root kullanıcısının aidiyetinde çalışmasını sürdürürken çocuk
      süreçler daha az yetkili bir kullanıcının aidiyetinde çalışır. Bu işlem
      seçilen <a href="mpm.html">Çok Süreçlilik Modülü</a> tarafından
      denetlenir.</p>

    <p><code class="program"><a href="./programs/httpd.html">httpd</a></code>’yi çalıştırmak için önerilen yöntem
      <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiğini kullanmaktır. Bu betik,
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin bazı işletim sistemlerinde işlevini
      gerektiği gibi yerine getirebilmesi için gereken belli ortam
      değişkenlerini ayarlar ve <code class="program"><a href="./programs/httpd.html">httpd</a></code>’yi çalıştırır.
      <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>, komut satırı argümanlarını
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye aktarabildiğinden gerekli
      <code class="program"><a href="./programs/httpd.html">httpd</a></code> seçenekleri <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>
      betiğine komut satırı seçenekleri olarak belirtilebilir. Ayrıca,
      <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiğinin içeriğini doğrudan düzenlemek
      suretiyle betiğin başlangıç satırlarındaki <code>HTTPD</code>
      değişkenine <code class="program"><a href="./programs/httpd.html">httpd</a></code> çalıştırılabilir dosyasının doğru
      yerini ve <em>daima</em> mevcut olmasını istediğiniz komut satırı
      seçeneklerini belirtebilirsiniz.</p>

    <p><code>httpd</code> çalıştırıldığında yaptığı ilk şey <a href="configuring.html">yapılandırma dosyası</a>
      <code>httpd.conf</code>’u bulup okumaktır. Bu dosyanın yeri derleme
      sırasında belirtilmekteyse de <code>-f</code> komut satırı seçeneği
      kullanılarak çalıştırma sırasında belirtmek de mümkündür:</p>

    <div class="example"><p><code>/usr/local/apache2/bin/apachectl -f
      /usr/local/apache2/conf/httpd.conf</code></p></div>

    <p>Başlatma sırasında herşey yolunda giderse sunucu kendini uçbirimden
      ayıracak ve hemen ardından uçbirim, komut istemine düşecektir. Bu,
      sunucunun etkin ve çalışmakta olduğunu gösterir. Artık tarayıcınızı
      kullanarak sunucuya bağlanabilir ve <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> dizinindeki deneme sayfasını
      görebilirsiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="errors" id="errors">Başlatma Sırasındaki Hatalar</a></h2>

    <p>Apache başlatma sırasında ölümcül bir sorunla karşılaşacak olursa
      çıkmadan önce sorunu açıklayan bir iletiyi konsola veya <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi ile belirtilen hata
      günlüğüne yazacaktır. En çok karşılaşılan hata iletilerinden biri
      "<code>Unable to bind to Port ...</code>" dizgesidir. Bu iletiye
      genellikle şu iki durumdan biri sebep olur:</p>

    <ul>
      <li>Sunucunun, root yetkileri gerektiren bir portu kullanmak üzere root
        kullanıcısı tarafından çalıştırılmamış olması.</li>

      <li>Aynı portu kullanan başka bir Apache Sunucusunun veya başka bir HTTP
        sunucusunun zaten çalışmakta oluşu.</li>
    </ul>

    <p>Bu ve diğer sorun çözme talimatları için Apache <a href="faq/index.html">SSS</a>’sini inceleyiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="boot" id="boot">Sistem Açılışında Başlatma</a></h2>

    <p>Sunucunuzun sistem yeniden başlatıldıktan sonra çalışmasına devam
      etmesini istiyorsanız sistem başlatma betiklerinize (genellikle ya
      <code>rc.local</code> dosyasıdır ya da bir <code>rc.N</code> dizininde
      bir dosyadır) <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiği için bir çağrı
      eklemelisiniz. Bu, Apache sunucunuzu root yetkileriyle başlatacaktır.
      Bunu yapmadan önce sunucunuzun güvenlik ve erişim kısıtlamaları
      bakımından gerektiği gibi yapılandırıldığından emin olunuz.</p>

    <p><code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiği, bir standart SysV init betiği gibi
      davranacak şekilde tasarlanmıştır. <code>start</code>,
      <code>restart</code> ve <code>stop</code> argümanlarını kabul edebilir
      ve bunları <code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye uygun sinyallere dönüştürebilir.
      Bu bakımdan, çoğunlukla uygun init dizinlerinden birine
      <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiği için basitçe bir bağ
      yerleştirebilirsiniz. Fakat bunu yapmadan önce betiğin sisteminizin
      gereklerini yerine getirdiğinden emin olunuz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="info" id="info">Ek Bilgiler</a></h2>

    <p><code class="program"><a href="./programs/httpd.html">httpd</a></code>, <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> ve sunucuyla
      gelen diğer destek programlarının komut satırı seçenekleri hakkında ek
      bilgi  <a href="programs/index.html">Sunucu ve Destek Programları</a> sayfasında
      bulunabilir. Ayrıca, Apache dağıtımında bulunan tüm <a href="mod/index.html">modüller</a> ve bunlarla sağlanan <a href="mod/directives.html">yönergeler</a> hakkında da belgeler
      vardır.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                             license.html                                                                                        100644       0       0        32120 11256641267  10545  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>The Apache License, Version 2.0 - Apache HTTP Server</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/index.html">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./index.html">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>The Apache License, Version 2.0</h1>


    <p class="centered">Apache License<br />
    Version 2.0, January 2004<br />
    <a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a><br /><br />

    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION</p>

    <ol>
    <li><strong>Definitions</strong><br />

    <p>"License" shall mean the terms and conditions for use, reproduction,
    and distribution as defined by Sections 1 through 9 of this document.</p>

    <p>"Licensor" shall mean the copyright owner or entity authorized by
    the copyright owner that is granting the License.</p>

    <p>"Legal Entity" shall mean the union of the acting entity and all
    other entities that control, are controlled by, or are under common
    control with that entity. For the purposes of this definition,
    "control" means (i) the power, direct or indirect, to cause the
    direction or management of such entity, whether by contract or
    otherwise, or (ii) ownership of fifty percent (50%) or more of the
    outstanding shares, or (iii) beneficial ownership of such entity.</p>

    <p>"You" (or "Your") shall mean an individual or Legal Entity
    exercising permissions granted by this License.</p>

    <p>"Source" form shall mean the preferred form for making modifications,
    including but not limited to software source code, documentation
    source, and configuration files.</p>

    <p>"Object" form shall mean any form resulting from mechanical
    transformation or translation of a Source form, including but
    not limited to compiled object code, generated documentation,
    and conversions to other media types.</p>

    <p>"Work" shall mean the work of authorship, whether in Source or
    Object form, made available under the License, as indicated by a
    copyright notice that is included in or attached to the work
    (an example is provided in the Appendix below).</p>

    <p>"Derivative Works" shall mean any work, whether in Source or Object
    form, that is based on (or derived from) the Work and for which the
    editorial revisions, annotations, elaborations, or other modifications
    represent, as a whole, an original work of authorship. For the purposes
    of this License, Derivative Works shall not include works that remain
    separable from, or merely link (or bind by name) to the interfaces of,
    the Work and Derivative Works thereof.</p>

    <p>"Contribution" shall mean any work of authorship, including
    the original version of the Work and any modifications or additions
    to that Work or Derivative Works thereof, that is intentionally
    submitted to Licensor for inclusion in the Work by the copyright owner
    or by an individual or Legal Entity authorized to submit on behalf of
    the copyright owner. For the purposes of this definition, "submitted"
    means any form of electronic, verbal, or written communication sent
    to the Licensor or its representatives, including but not limited to
    communication on electronic mailing lists, source code control systems,
    and issue tracking systems that are managed by, or on behalf of, the
    Licensor for the purpose of discussing and improving the Work, but
    excluding communication that is conspicuously marked or otherwise
    designated in writing by the copyright owner as "Not a Contribution."</p>

    <p>"Contributor" shall mean Licensor and any individual or Legal Entity
    on behalf of whom a Contribution has been received by Licensor and
    subsequently incorporated within the Work.</p></li>

    <li><strong>Grant of Copyright License.</strong> Subject to the terms
    and conditions of this License, each Contributor hereby grants to You
    a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
    irrevocable copyright license to reproduce, prepare Derivative Works of,
    publicly display, publicly perform, sublicense, and distribute the
    Work and such Derivative Works in Source or Object form.</li>

    <li><strong>Grant of Patent License.</strong> Subject to the terms
    and conditions of this License, each Contributor hereby grants to You a
    perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    (except as stated in this section) patent license to make, have made,
    use, offer to sell, sell, import, and otherwise transfer the Work,
    where such license applies only to those patent claims licensable
    by such Contributor that are necessarily infringed by their
    Contribution(s) alone or by combination of their Contribution(s)
    with the Work to which such Contribution(s) was submitted. If You
    institute patent litigation against any entity (including a
    cross-claim or counterclaim in a lawsuit) alleging that the Work
    or a Contribution incorporated within the Work constitutes direct
    or contributory patent infringement, then any patent licenses
    granted to You under this License for that Work shall terminate
    as of the date such litigation is filed.</li>

    <li><strong>Redistribution.</strong> You may reproduce and distribute
    copies of the Work or Derivative Works thereof in any medium, with or
    without modifications, and in Source or Object form, provided that You
    meet the following conditions:

    <ol class="lo-A">
        <li>You must give any other recipients of the Work or
        Derivative Works a copy of this License; and</li>

        <li>You must cause any modified files to carry prominent notices
        stating that You changed the files; and</li>

        <li>You must retain, in the Source form of any Derivative Works
        that You distribute, all copyright, patent, trademark, and
        attribution notices from the Source form of the Work,
        excluding those notices that do not pertain to any part of
        the Derivative Works; and</li>

        <li>If the Work includes a "NOTICE" text file as part of its
        distribution, then any Derivative Works that You distribute must
        include a readable copy of the attribution notices contained
        within such NOTICE file, excluding those notices that do not
        pertain to any part of the Derivative Works, in at least one
        of the following places: within a NOTICE text file distributed
        as part of the Derivative Works; within the Source form or
        documentation, if provided along with the Derivative Works; or,
        within a display generated by the Derivative Works, if and
        wherever such third-party notices normally appear. The contents
        of the NOTICE file are for informational purposes only and
        do not modify the License. You may add Your own attribution
        notices within Derivative Works that You distribute, alongside
        or as an addendum to the NOTICE text from the Work, provided
        that such additional attribution notices cannot be construed
        as modifying the License.</li>
    </ol>

    <p>You may add Your own copyright statement to Your modifications and
    may provide additional or different license terms and conditions
    for use, reproduction, or distribution of Your modifications, or
    for any such Derivative Works as a whole, provided Your use,
    reproduction, and distribution of the Work otherwise complies with
    the conditions stated in this License.</p></li>

    <li><strong>Submission of Contributions.</strong> Unless You explicitly
    state otherwise, any Contribution intentionally submitted for inclusion
    in the Work by You to the Licensor shall be under the terms and
    conditions of this License, without any additional terms or conditions.
    Notwithstanding the above, nothing herein shall supersede or modify
    the terms of any separate license agreement you may have executed
    with Licensor regarding such Contributions.</li>

    <li><strong>Trademarks.</strong> This License does not grant permission
    to use the trade names, trademarks, service marks, or product names of
    the Licensor, except as required for reasonable and customary use in
    describing the origin of the Work and reproducing the content of the
    NOTICE file.</li>

    <li><strong>Disclaimer of Warranty.</strong> Unless required by
    applicable law or agreed to in writing, Licensor provides the Work (and
    each Contributor provides its Contributions) on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    implied, including, without limitation, any warranties or conditions
    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    PARTICULAR PURPOSE. You are solely responsible for determining the
    appropriateness of using or redistributing the Work and assume any
    risks associated with Your exercise of permissions under this License.</li>

    <li><strong>Limitation of Liability.</strong> In no event and under no
    legal theory, whether in tort (including negligence), contract, or
    otherwise, unless required by applicable law (such as deliberate and
    grossly negligent acts) or agreed to in writing, shall any Contributor be
    liable to You for damages, including any direct, indirect, special,
    incidental, or consequential damages of any character arising as a
    result of this License or out of the use or inability to use the
    Work (including but not limited to damages for loss of goodwill,
    work stoppage, computer failure or malfunction, or any and all
    other commercial damages or losses), even if such Contributor
    has been advised of the possibility of such damages.</li>

    <li><strong>Accepting Warranty or Additional Liability.</strong> While
    redistributing the Work or Derivative Works thereof, You may choose to
    offer, and charge a fee for, acceptance of support, warranty, indemnity,
    or other liability obligations and/or rights consistent with this
    License. However, in accepting such obligations, You may act only
    on Your own behalf and on Your sole responsibility, not on behalf
    of any other Contributor, and only if You agree to indemnify,
    defend, and hold each Contributor harmless for any liability
    incurred by, or claims asserted against, such Contributor by reason
    of your accepting any such warranty or additional liability.</li>
    </ol>

    <p class="centered">END OF TERMS AND CONDITIONS</p>

    <p class="centered">APPENDIX: How to apply the Apache License to your
    work.</p>

    <p>To apply the Apache License to your work, attach the following
    boilerplate notice, with the fields enclosed by brackets "[]"
    replaced with your own identifying information. (Don't include
    the brackets!)  The text should be enclosed in the appropriate
    comment syntax for the file format. We also recommend that a
    file or class name and description of purpose be included on the
    same "printed page" as the copyright notice for easier
    identification within third-party archives.</p>

    <div class="example"><pre>Copyright [yyyy] [name of copyright owner]

Licensed 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.</pre></div>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/index.html">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/index.html">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                logs.html                                                                                           100644       0       0       104265 11256641267  10121  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Günlük Dosyaları - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Günlük Dosyaları</h1>


    <p>Bir HTTP sunucusunu verimli şekilde yönetebilmek için oluşabilecek
      sorunlardan başka sunucunun başarımı ve etkinliği hakkında da bazı geri
      bildirimler almak gerekir. Apache HTTP Sunucusu çok kapsamlı ve esnek
      bir günlükleme yeteneğine sahiptir. Bu belgede sunucunun günlükleme
      yeteneğini nasıl yapılandıracağınızdan ve günlük kayıtlarını nasıl
      yorumlayacağınızdan bahsedilecektir.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Uyarısı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#errorlog">Hata Günlüğü</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#accesslog">Erişim Günlüğü</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#rotation">Günlük Çevrimi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#piped">Borulu Günlükler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Sanal Konaklar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#other">Diğer Günlük Dosyaları</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Uyarısı</a></h2>
    

    <p>Apache’nin günlük dosyalarını yazdığı dizine yazabilen birinin sunucuyu
      başlatan kullanıcı kimliğine (bu genellikle root olur) erişim
      kazanabileceğine hemen hemen kesin gözüyle bakılabilir. Sonuçlarının
      neler olacağını kestiremiyorsanız günlüklerin yazıldığı dizinde <em>hiç
      kimseye</em> yazma erişimi vermeyin; ayrıntılı bilgi için <a href="misc/security_tips.html">güvenlik ipuçları</a> belgesine
      bakınız.</p>

    <p>Buna ilaveten, günlük dosyaları istemci tarafından sağlanmış bilgiler
      de içerebilir. Bu nedenle, kötü niyetli istemcilerin günlük dosyalarına
      denetim karakterleri girmeleri olasılığına karşı ham günlükler ele
      alınırken dikkatli olunmalıdır.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="errorlog" id="errorlog">Hata Günlüğü</a></h2>
    
    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code></li><li><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code></li></ul></td></tr></table>

    <p>İsmi ve yeri <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi
      ile belirtilen sunucu hata günlüğü, en önemli günlük dosyasıdır. Apache
      httpd tarafından istekler işlenirken saptanan hatalar ve tanı bilgileri
      bu dosyaya gönderilir. Sunucuyu başlatırken veya sunucu çalışırken bir
      sorunla karşılaşıldığında, neyin yanlış gittiğini öğrenmek için
      bakılacak ilk yer burasıdır. Günlük kaydı çoğunlukla sorunun nasıl
      düzeltileceği ile ilgili ayrıntıları da içerir.</p>

    <p>Hata günlüğü normal olarak bir dosyaya yazılır (genellikle, dosyanın
      ismi Unix sistemlerinde <code>error_log</code>, Windows ve OS/2’de ise
      <code>error.log</code>’dur). Ayrıca, Unix sistemlerinde sunucunun
      hataları <code>syslog</code>’a veya <a href="#piped">borulamak suretiyle
      bir programa</a> aktarması da mümkündür.</p>

    <p>Hata günlüğünün biçemi anlaşılır olup içeriği kısmen serbestçe
      belirlenir. Çoğu hata günlüğü girdisinde bulunan belli başlı bilgiler
      vardır. Örnek tipik bir hata iletisi içermektedir:</p>

    <div class="example"><p><code>
      [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
      client denied by server configuration:
      /export/home/live/ap/htdocs/test
    </code></p></div>

    <p>Günlük girdisinin ilk öğesi iletinin yazıldığı tarih ve saatten oluşur.
      İkinci öğe raporlanan bilginin önem derecesini belirtir. Hata günlüğüne
      gönderilecek hata türlerinin önem seviyesini belirlemek için <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> yönergesi kullanılır. Üçüncü öğe
      hatanın üretilmesine sebep olan istemcinin IP adresini içerir. Kalanı
      iletinin kendisidir (duruma bakılırsa sunucu istemci erişimini reddetmek
      üzere yapılandırılmış). Sunucu istenen belgenin (belge yolunu değil)
      dosya sistemindeki yolunu raporlamıştır.</p>

    <p>Hata günlüğünde görünebilecek ileti çeşitliliği oldukça fazladır. Çoğu
      yukarıdaki örneğin benzeridir. Hata günlüğü ayrıca, CGI betiklerinin
      hata ayıklama çıktılarını da içerir. Bir CGI betiği tarafından standart
      hataya (<code>stderr</code>) yazılan her türlü bilgi doğrudan hata
      günlüğüne kopyalanır.</p>

    <p>Hata günlüğünü bilgi ekleyerek veya kaldırarak kişiselleştirmek
      mümkündür. Bununla birlikte, hata günlüğü girdilerinin ilgili olduğu
      isteklerin <a href="#accesslog">erişim günlüğünde</a> de girdileri
      vardır. Örneğin, yukarıdaki girdi, erişim günlüğünde 403 durum kodlu bir
      girdiyle ilgilidir. Erişim günlüğünü de kişiselleştirmek mümkün
      olduğundan hata durumlarında bu günlük dosyasını da kullanarak daha
      fazla bilgi sağlayabilirsiniz.</p>

    <p>Sunucuyu denerken olası sorunlara karşı hata günlüğünü sürekli
      izlemelisiniz. Unix sistemlerinde bunu şöyle bir komutla
      sağlayabilirsiniz:</p>

    <div class="example"><p><code>
      tail -f error_log
    </code></p></div>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="accesslog" id="accesslog">Erişim Günlüğü</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li></ul></td></tr></table>

    <p>Sunucu erişim günlüğü sunucu tarafından işleme alınan tüm istekleri
      kaydeder. Erişim günlüğünün yeri ve içeriği  <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi ile belirlenir.
      <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile
      günlük içeriğini kişiselleştirmek mümkündür. Bu bölümde sunucunun
      bilgileri erişim günlüğüne kaydetmesi için nasıl yapılandırılacağından
      bahsedilecektir.</p>

    <p>Şüphesiz, bilginin erişim günlüğünde saklanması günlük yönetiminde ilk
      adımı oluşturur.  Sonraki adım yararlı istatistikleri üretmek için bu
      bilgiyi incelemektir. Günlük incelemesi bu belgenin kapsamına dahil
      değildir ve aslında bu işlem sunucunun yaptığı işlerden biri değildir.
      Bu konu ve günlük incelemesi yapan uygulamalar hakkında daha ayrıntılı
      bilgi edinmek için <a href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/">dmoz.org</a> veya <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a>’ya bakınız.</p>

    <p>Apache httpd’nin çeşitli sürümlerinde erişim günlüklerini denetlemek
      için kullanılan diğer modüller ve yönergeler arasında mod_log_referer,
      mod_log_agent modülleri ve <code>TransferLog</code> yönergesi
      sayılabilir. Artık, daha eski tüm diğer yönergelerin işlevselliklerini
      bir araya toplayan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanılmaktadır.</p>

    <p>Erişim günlüğünün girdi biçemi kolayca isteğe göre
      düzenlenebilmektedir. Biçemi belirtmekte kullanılan biçem dizgesi, C
      tarzı printf(1) biçem dizgesini andırır. Sonraki bölümlerde bazı
      örneklere yer verilmiştir. Biçem dizgesini oluşturan belirteçlerin tam
      listesi için <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code> belgesinin <a href="mod/mod_log_config.html#formats">Günlük Girdilerinin
      Kişiselleştirilmesi</a> bölümüne bakınız.</p>

    <h3><a name="common" id="common">Ortak Günlük Biçemi (OGB)</a></h3>
      

      <p>Erişim günlüğü için sıklıkla kullanılan bir yapılandırma:</p>

      <div class="example"><p><code>
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
        CustomLog logs/access_log common
      </code></p></div>

      <p>İlk satırda belli bir biçem dizgesi için <code>common</code> diye bir
        <em>takma ad</em> tanımlanmaktadır. Biçem dizgesi, sunucuya hangi
        belli bir bilgi parçalarını günlükleyeceğini söyleyen % imli biçem
        belirteçlerinden oluşur. Biçem dizgesine ayrıca dizgesel sabitler de
        yerleştirilebilir ve bunlar erişim günlüğüne oldukları gibi
        kopyalanırlar. Biçem dizgesi içinde çift tırnak karakteri (") biçem
        dizgesini vaktinden önce sonlandırmaması için ters bölü çizgisi ile
        öncelenmelidir. Biçem dizgesi ayrıca, satır sonlarını belirtmek için
        "<code>\n</code>" ve sekmeleri belirtmek için "<code>\t</code>"
        denetim karakterlerini de içerebilir.</p>

      <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi
        evvelce tanımlanmış bir <em>takma adı</em> kullanarak yeni bir günlük
        dosyası tanımlar. Erişim günlüğünün dosya ismi bölü çizgisi ile
        başlamadıkça dosya yolunun <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> değerine göreli olduğu varsayılır.</p>

      <p>Yukarıdaki yapılandırma günlük dosyasına girdileri Ortak Günlük
        Biçemi (Common Log Format) adı verilen standart biçemde yazar.
        Bu standart biçem başka HTTP sunucuları tarafından da kullanılır ve
        çoğu günlük inceleme yazılımı tarafından tanınır. Ortak Günlük
        Biçeminde üretilen günlük girdileri şöyle görünür:</p>

      <div class="example"><p><code>
        127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
        /apache_pb.gif HTTP/1.0" 200 2326
      </code></p></div>

      <p>Bu günlük girdisini parça parça açıklayalım:</p>

      <dl>
        <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>

        <dd>Bu, sunucuya istek yapan istemcinin (uzak konağın) IP adresidir.
          Eğer <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code>
          yönergesine <code>On</code> değeri atanmışsa sunucu bu IP adresi
          için DNS sorgusu yapacak ve IP adresi yerine bulduğu konak ismini
          yazmaya çalışacaktır. Bununla birlikte, bu işlem sunucuyu epeyce
          yavaşlattığından önerilmemektedir. Konak isimlerini saptamak için en
          iyisi günlük girdilerini <code class="program"><a href="./programs/logresolve.html">logresolve</a></code> gibi bir
          günlük işlemcisinden geçirmektir. Burada raporlanan IP adresi
          doğrudan istemcinin IP adresi olmayabilir. Eğer sunucu ile istemci
          arasında bir vekil sunucu varsa bu IP adresi, vekil sunucunun IP
          adresi olacaktır.</dd>

        <dt><code>-</code> (<code>%l</code>)</dt>

        <dd>Çıktıdaki bir "tire" imi istenen bilgi parçasının mevcut olmadığı
          anlamına gelir. Bu durumda, mevcut olmayan bilgi istemci makine
          üzerinde <code>identd</code> tarafından belirlenen istemcinin RFC
          1413 kimliğidir. Bu bilgi oldukça güvenilmezdir ve sıkıca denetlenen
          iç ağlar haricinde hemen hemen asla kullanılmamalıdır. Apache,
          <code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code> yönergesine
          <code>On</code> değeri atanmış olmadıkça bu bilgiyi saptamaya
          uğraşmaz.</dd>

        <dt><code>frank</code> (<code>%u</code>)</dt>

        <dd>Bu, belge isteğinde bulunan kişinin HTTP kimlik doğrulamasıyla
          saptanan kullanıcı kimliğidir. Bu değer CGI betiklerine
          <code>REMOTE_USER</code> ortam değişkeni ile sağlanır. Eğer istek
          için durum kodu 401 ise (aşağıya bakınız) henüz kullanıcının kimliği
          doğrulanmamış olacağından bu değere güvenilmemelidir. Eğer belge
          parola korumalı değilse günlüğün bu kısmı da yukarıdaki gibi
          "<code>-</code>" olacaktır.</dd>

        <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
        (<code>%t</code>)</dt>

        <dd>İsteğin alındığı tarih ve saat. Biçemi şöyledir:

          <p class="indent">
            <code>[gün/ay/yıl:saat:dakika:saniye dilim]<br />
             gün&nbsp;&nbsp;&nbsp;&nbsp;= 2 hane<br />
             ay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 3 harf<br />
             yıl&nbsp;&nbsp;&nbsp;&nbsp;= 4 hane<br />
             saat&nbsp;&nbsp;&nbsp;= 2 hane<br />
             dakika = 2 hane<br />
             saniye = 2 hane<br />
             dilim&nbsp; = (`+' | `-') 4 hane</code>
          </p>
          Günlük biçem dizgesinde zaman gösterim biçemini
          <code>%{<em>biçem</em>}t</code> şeklinde belirtmek de mümkündür.
          Buradaki <code><em>biçem</em></code> dizgesi, stardart C
          kütüphanesindeki <code>strftime(3)</code> işlevi için tanımlanmış
          biçem belirteçleriyle oluşturulabilir.
        </dd>

        <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
        (<code>\"%r\"</code>)</dt>

        <dd>İstemciden alınan istek satırının çift tırnaklar arasında
          gösterilmesi istenmiştir. İstek satırı en yararlı bilgi parçalarını
          içerir. Birincisi, istemci tarafından kullanılan yöntem
          <code>GET</code>’miş. İkinci olarak istemci
          <code>/apache_pb.gif</code> dosyasını istemiş ve üçüncü olarak
          istemci <code>HTTP/1.0</code> protokolünü kullanmış. İstek satırının
          bazı parçalarını bağımsız olarak da günlüklemek mümkündür. Örneğin,
          "<code>%m %U%q %H</code>" dizgesi, yöntem, yol, sorgu dizgesi ve
          protokolü kaydedecektir; bu dizge "<code>%r</code>" biçem
          belirtecinin tek başına yaptığı işi yapar.</dd>

        <dt><code>200</code> (<code>%&gt;s</code>)</dt>

        <dd>Bu, sunucunun istemciye gönderdiği durum kodudur. İsteğin
          başarıyla yerine getirilip getirilmediğini gösterdiği için bu bilgi
          çok değerlidir. Durum kodu 2 ile başlıyorsa istek başarıyla yerine
          getirilmiştir, 3 ile başlıyorsa yönlendirilmiştir, 4 ile başlıyorsa
          istemci tarafında bir hata oluşmuştur, 5 ile başlıyorsa sunucuda bir
          hata oluşmuştur. Olası hata kodlarının tam listesi <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC2616 Hiper
          Metin Aktarım Protokolü</a>nün 10. bölümünde bulunabilir.</dd>

        <dt><code>2326</code> (<code>%b</code>)</dt>

        <dd>Son parça istemciye döndürülen nesnenin yanıt başlığı hariç
          uzunluğudur. Eğer istemciye bir içerik döndürülmemişse bu değer
          "<code>-</code>" olacaktır. Bunun yerine günlüğe "<code>0</code>"
          yazdırmak için <code>%B</code> belirtecini kullanınız.</dd>
      </dl>
    

    <h3><a name="combined" id="combined">Birleşik Günlük Biçemi</a></h3>
      

      <p>Sıklıkla kullanılan diğer bir biçem dizgesi Birleşik Günlük Biçemi
        (Combined Log Format) olup şöyle kullanılabilir:</p>

      <div class="example"><p><code>
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
        \"%{User-agent}i\"" combined<br />
         CustomLog log/access_log combined
      </code></p></div>

      <p>Bu biçem ilaveten 2 alan içermesi dışında Ortak Günlük Biçemi ile
        aynıdır. İlave alanların ikisi de <code>%{<em>başlık</em>}i</code>
        biçeminde olup buradaki <code><em>başlık</em></code>, HTTP isteğindeki
        başlık alanlarından biridir. Bu biçemin kullanıldığı bir erişim
        günlüğü girdisi şöyle olurdu:</p>

      <div class="example"><p><code>
        127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
        /apache_pb.gif HTTP/1.0" 200 2326
        "http://www.example.com/start.html" "Mozilla/4.08 [en]
        (Win98; I ;Nav)"
      </code></p></div>

      <p>Ek alanlar:</p>

      <dl>
        <dt><code>"http://www.example.com/start.html"</code>
        (<code>\"%{Referer}i\"</code>)</dt>

        <dd>HTTP istek başlığı "Referer". İstemcinin raporladığı isteğin
          kaynaklandığı URI. (Bu isteğin yapılmasını sağlayan bağlantıyı
          içeren URL veya istek bir sayfanın bileşenleri ile ilgiliyse istenen
          sayfanın URL’si olabilir.)</dd>

        <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
        (<code>\"%{User-agent}i\"</code>)</dt>

        <dd>Tarayıcı kimliğini içeren HTTP istek başlığı. Bu istemcinin
          tarayıcısının raporladığı kendi tanıtım bilgisidir.</dd>
      </dl>
    

    <h3><a name="multiple" id="multiple">Çok Sayıda Erişim Günlüğü</a></h3>
      

      <p>Yapılandırma dosyasında çok sayıda <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanarak çok
        sayıda erişim günlüğü kolayca oluşturulabilir. Örneğin aşağıdaki
        yönergelerle 3 tane erişim günlüğü oluşturulacaktır. İlki temel OGB
        bilgisini içerirken diğer ikisi isteğin kaynaklandığı yeri ve tarayıcı
        kimliğini içerir. Son iki <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> satırı ayrıca, <code>ReferLog</code> ve
        <code>AgentLog</code> yönergelerinin etkilerinin nasıl taklit
        edileceğini de göstermektedir.</p>

      <div class="example"><p><code>
        LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
        CustomLog logs/access_log common<br />
        CustomLog logs/referer_log "%{Referer}i -&gt; %U"<br />
        CustomLog logs/agent_log "%{User-agent}i"
      </code></p></div>

      <p>Bu örnek ayrıca, <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile bir takma ad tanımlamanın şart
        olmadığını da göstermektedir. Günlük biçemi doğrudan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinde
        belirtilebilir.</p>
    

    <h3><a name="conditional" id="conditional">Şarta Bağlı Günlükler</a></h3>
      

      <p>Bazı durumlarda istemcinin yaptığı isteğe bağlı olarak erişim
        günlüğünde belli girdilerin dışlanması gerekebilir. Bu, <a href="env.html">ortam değişkenleri</a> sayesinde kolayca yerine
        getirilebilir. Önce isteğin belli koşulları sağladığını belirten bir
        ortam değişkeni ataması yapılır. Bu işlem <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> yönergesi ile yapılır.
        Sonra da, ortam değişkenine bağlı olarak isteklerin günlüğe dahil
        edilip edilmeyeceği <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinin
        <code>env=</code> deyimi kullanılarak belirtilir. Bazı örnekler:</p>

      <div class="example"><p><code>
        # yerel konaktan kaynaklanan istekleri imleyelim<br />
        SetEnvIf Remote_Addr "127\.0\.0\.1" kaydetme<br />
        # robots.txt dosyası isteklerini imleyelim<br />
        SetEnvIf Request_URI "^/robots\.txt$" kaydetme<br />
        # Kalanları günlüğe kaydedelim<br />
        CustomLog logs/access_log common env=!kaydetme
      </code></p></div>

      <p>Başka bir örnek olarak, Türkçe belge isteklerini bir dosyaya diğer
        dillerdeki istekleri başka bir dosyaya kaydedelim.</p>

      <div class="example"><p><code>
        SetEnvIf Accept-Language "tr" turkce<br />
        CustomLog logs/turkce_log common env=turkce<br />
        CustomLog logs/diger_diller_log common env=!turkce
      </code></p></div>

      <p>Şarta bağlı günlük kaydının çok esnek ve güçlü olabileceğini
        göstermiş olsak da günlük içeriğini denetlemenin tek yolu bu değildir.
        Günlük dosyaları sunucu etkinliğini eksiksiz olarak kaydedebildikleri
        takdirde daha yararlı olurlar. Günlük dosyalarını sonradan işleme tabi
        tutarak istenmeyen girdileri kaldırılmış bir kopya almak hem kolay hem
        de daha yararlıdır.</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="rotation" id="rotation">Günlük Çevrimi</a></h2>
    

    <p>Yükü ağır sunucularda günlük dosyalarına kaydedilen bilginin miktarı
      çok büyük boyutlara ulaşabilir. 10.000 istek içeren bir erişim günlüğü
      yaklaşık 1MB yer kaplar. Etkin günlük dosyasını belirli aralıklarla
      değiştirmek veya silmek gerekebilir. Apache çalışırken dosyayı sürekli
      açık tuttuğu ve yazdığı için bu işlem sunucu çalışırken yapılamaz. Bu
      bakımdan, günlük dosyası değiştirildikten veya silindikten sonra yeni
      dosyanın açılması için <a href="stopping.html">sunucunun yeniden
      başlatılması</a> gerekir.</p>

    <p><a href="stopping.html#graceful">Nazikçe yeniden başlatmak</a>
      suretiyle sunucunun, mevcut ve bekleyen bağlantıları kaybetmeden yeni
      günlük dosyalarını açması sağlanabilir. Bununla birlikte, bu işlem
      sırasında sunucunun eski isteklere sunumu bitirene kadar eski günlük
      dosyalarına yazmaya devam edebilmesi gerekir. Bu bakımdan, yeniden
      başlatmanın ardından eski günlük dosyaları üzerinde bir işlem yapmadan
      önce biraz beklemek gerekir. Günlük dosyalarını döndürürken kullanılan
      senaryolarda genellikle eski günlük dosyaları yer kazanmak için
      sıkıştırılırlar:</p>

    <div class="example"><p><code>
      mv access_log access_log.old<br />
      mv error_log error_log.old<br />
      apachectl graceful<br />
      sleep 600<br />
      gzip access_log.old error_log.old
    </code></p></div>

    <p>Günlük çevrimi yapmanın başka bir yolu da sonraki bölümde açıklandığı
      gibi <a href="#piped">borulu günlükler</a> kullanmaktır.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="piped" id="piped">Borulu Günlükler</a></h2>
    

    <p>Apache httpd hata ve erişim günlüklerini doğrudan bir dosyaya yazmak
      yerine bir boru üzerinden başka bir sürece yazabilir. Bu yetenek ana
      sunucuya herhangi bir kod eklemeksizin günlükleme esnekliğini şaşırtıcı
      derecede arttırır. Günlükler boruya yazılmak istenirse dosya ismini boru
      karakteriyle ("<code>|</code>") değiştirip ardına günlük girdilerini
      standart girdisinden kabul edecek programın ismini eklemek yeterlidir.
      Apache sunucusu başlatıldığı zaman borulu günlük işlemini de
      başlatacaktır. Eğer sunucu çalışırken günlükleri kabul eden süreç
      çökerse Apache bu programı yeniden başlatır. (Bu son özelliği sebebiyle
      bu tekniğe “güvenilir borulu günlükleme” adını veriyoruz.)</p>

    <p>Borulu günlük süreçleri ana Apache httpd süreci tarafından başlatılır
      ve bu süreçler ana Apache httpd sürecinin kullanıcı kimliğini miras
      alırlar. Yani borulu günlükleme programları aslında root tarafından
      çalıştırılmış gibi olur. Bu bakımdan, bu programları basit ve güvenilir
      kılmak çok önemlidir.</p>

    <p>Borulu günlüklerin önemli kullanım alanlarından biri de sunucuyu
      yeniden başlatmak gerekmeksizin günlük çevrimini mümkün kılmaktır.
      Apache HTTP sunucusu bu amaçla kullanılmak üzere
      <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> diye bir program içerir. Örneğin,
      günlükleri 24 saatte bir döndürmek isterseniz bunu şöyle
      yapabilirsiniz:</p>

    <div class="example"><p><code>
      CustomLog "|/usr/local/apache/bin/rotatelogs
      /var/log/access_log 86400" common
    </code></p></div>

    <p>Borunun diğer ucundaki süreci başlatacak komutun tırnak içine
      alındığına dikkat ediniz. Bu örnekler erişim günlüğü için verilmişse de
      aynı teknik hata günlüğü için de kullanılabilir.</p>

    <p>Hariçten bir uygulama olarak <a href="http://www.cronolog.org/">cronolog</a> isminde buna benzer ancak
      çok daha esnek bir program daha vardır.</p>

    <p>Borulu günlükler de şarta bağlı günlükleme kadar güçlü olmakla beraber
      çevrimdışı ardıl işlemler gibi daha basit çözümler için
      kullanılmamalıdır.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2>
    

    <p>Bir sunucu çok sayıda <a href="vhosts/index.html">sanal konak</a> ile hizmet
      sunarken bunların günlük kayıtları için çeşitli seçenekler mevcuttur.
      İlk seçenekte, sanki sunucu tek bir konakla hizmet sunuyormuş gibi
      günlük kaydı yapılır. Günlükleme yönergelerini <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümlerinin dışına, ana sunucu
      bağlamına yerleştirerek tüm isteklerin aynı erişim ve hata günlüğüne
      yazılmasını sağlamak olasıdır. Bu teknik, tek tek sanal konaklar için
      kolayca istatistik toplamaya izin vermez.</p>

    <p>Eğer  <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
      veya <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi bir
      <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümüne
      yerleştirilirse bu sanal konağa bütün erişimler veya hatalar belirtilen
      dosyaya günlüklenecektir. Böyle günlükleme yönergeleri içermeyen sanal
      konakların günlükleri hala ana sunucunun hata ve erişim günlüklerine
      yazılmaya devam edecektir. Bu teknik az sayıda sanal konak barındıran
      sunucular için çok kullanışlıdır. Fakat sanal konak sayısı çok fazlaysa
      bu teknikle günlük dosyalarını yönetmek çok karmaşık bir hal alabilir.
      Ayrıca, <a href="vhosts/fd-limits.html">yetersiz dosya tanıtıcısı</a>
      sorunlarıyla çok sık karşılaşılabilir.</p>

    <p>Erişim günlükleri için çok az bir fedakarlıkla çok iyi bir çözüm vardır.
      Günlük biçemine sanal konaklarla ilgili bilgi eklemek suretiyle tüm
      konakların aynı günlük dosyasını kullanmaları olasıdır. Böylece günlük
      dosyası sonradan her sanal konak için ayrı bir dosya oluşturmak üzere
      ayrıştırılabilir. Örneğin, bu işlem için şu yönergeler kullanılıyor
      olsun:</p>

    <div class="example"><p><code>
      LogFormat "%v %l %u %t \"%r\" %&gt;s %b"
      ortaksankon<br />
      CustomLog logs/access_log ortaksankon
    </code></p></div>

    <p><code>%v</code> belirteci isteği sunan sanal konağın ismini günlüğe
      yazmak için kullanılır. Daha sonra <a href="programs/other.html">split-logfile</a> gibi bir program
      kullanarak, bu dosyadan her sanal konak için ayrı birer dosya elde
      edilebilir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="other" id="other">Diğer Günlük Dosyaları</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_log_forensic.html#forensiclog">ForensicLog</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptloglength">ScriptLogLength</a></code></li></ul></td></tr></table>

    <h3>Gönderilen ve alınan bayt sayısının günlüklenmesi</h3>
      

      <p><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code> modülü <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesinde kullanılan
        biçem belirteçlerine alınan ve gönderilen bayt sayıları için iki
        belirteç (%I ve %O) ekler.</p>
    

    <h3>Adli Günlük</h3>
      

      <p><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü istemci isteklerinin kanıt
        olarak kullanılmak amacıyla günlüklenmesini sağlar. Günlükleme her
        istek için isteğe hizmet sunmadan önce ve sonra olmak üzere iki defa
        yapılır. Böylece günlük dosyasında başarılı her istek için iki satır
        bulunur. Adli günlükleme çok sıkı kurallara tabi olup
        kişiselleştirilemez. Güvenlik ve hata ayıklama aracı olarak yararlı
        değildir.</p>
    

    <h3><a name="pidfile" id="pidfile">PID Dosyası</a></h3>
      

      <p>Apache httpd başlatıldığında, ana httpd sürecinin kimliği (PID)
        <code>logs/httpd.pid</code> dosyasına kaydedilir. Bu dosyanın ismi
        <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile
        değiştirilebilir. Bu süreç kimliği sistem yöneticisi tarafından ana
        sürece sinyal göndererek artalan sürecini sonlandırmak veya yeniden
        başlatmak için kullanılır. Windows üzerinde bu işlem için
        <code>-k</code> komut satırı seçeneği kullanılır. Bu konuda daha
        ayrıntılı bilgi edinmek için <a href="stopping.html">Durdurma ve
        Yeniden Başlatma</a> belgesine bakınız.</p>
    

    <h3><a name="scriptlog" id="scriptlog">Betik Günlüğü</a></h3>
      

      <p><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> yönergesi CGI
        betiklerinin girdi ve çıktılarını kaydetmenizi mümkün kılmak suretiyle
        hata ayıklamaya yardımcı olur. Bu sadece deneysel amaçla kullanılmalı,
        asıl sunucuya uygulanmamalıdır. <a href="mod/mod_cgi.html">mod_cgi</a>
        belgesinde daha fazla bilgi bulunabilir.</p>
    

    <h3><a name="rewritelog" id="rewritelog">Yeniden Yazım Günlüğü</a></h3>
      

      <p>Güçlü ve karmaşık  <a href="mod/mod_rewrite.html">mod_rewrite</a>
        özellikleri kullanılırken, hata ayıklamaya yardımcı olmak için
        <code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> yönergesini
        kullanmak gerekebilir. Yönerge, günlük dosyasında yeniden yazım
        motorunun istekleri nasıl dönüştürdüğüyle ilgili ayrıntılı bir döküm
        üretir. Ayrıntı seviyesi <code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code> yönergesi ile belirlenir.</p>
    
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                           misc/index.html                                                                                     100644       0       0         7720 11256641267  11155  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Çeşitli Belgeler - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Çeşitli Belgeler</h1>



    <p>Aşağıda listelenen belgeler de Apache HTTP sunucusu geliştirme projesi
      kapsamındadır.</p>

    <div class="warning"><h3>Uyarı</h3>
    <p>Aşağıdaki belgeler, Apache HTTP Sunucusunun 2.1 sürümünde yapılmış
      değişikliklere göre tam olarak güncellenmemiştir. Hala güncel kalmış
      bazı bilgiler olabilir, fakat siz yine de bu belgeleri kullanırken
      dikkatli olun.</p>
    </div>

    <dl>
      <dt><a href="perf-tuning.html">Başarım Arttırma İpuçları - Apache’ye
        İnce Ayar Çekilmesi</a></dt>

      <dd>
        <p>Yüksek başarım elde etmek için Apache yapılandırmasında (çalışma
          anında ve derleme sırasında) yapılacaklar ile ilgili bazı bilgiler
          yanında Apache’de bazı şeylerin (bir şeyleri hızlandıran ve
          yavaşlatan şeylerin) yapılma ve yapılmama sebepleri
          açıklanmıştır.</p>
      </dd>

      <dt><a href="security_tips.html">Güvenlik İpuçları</a></dt>

      <dd>
        <p>Apache HTTP sitenizi güvenli kılmak için yapılacaklar ve
          yapılmayacaklar.</p>
      </dd>

      <dt><a href="rewriteguide.html">URL Yeniden Yazma Rehberi</a></dt>

      <dd>
        <p>Bu belge <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülünün <a href="../mod/mod_rewrite.html">başvuru belgesi</a> yerine geçer.
          Site yöneticilerinin sıkça karşılaştıkları belli başlı URL temelli
          sorunları çözümlemek için Apache’nin <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          modülünün nasıl kullanılacağını açıklar.</p>
      </dd>

      <dt><a href="relevant_standards.html">İlgili Standartlar</a></dt>

      <dd>
        <p>Bu belge Apache’nin uyacağı standartların bir çoğuna atıfta
          bulunmak amacıyla hazırlanmıştır.</p>
      </dd>

      <dt><a href="password_encryptions.html">Parola Şifreleme Biçimleri</a>
      </dt>

      <dd>
        <p>Belgede, kimlik doğrulama amacıyla Apache tarafından desteklenen
          çeşitli şifreleme tekniklerinden bahsedilmiştir.</p>
      </dd>
    </dl>

  </div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                misc/password_encryptions.html                                                                      100644       0       0        21773 11256641267  14371  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Password Formats - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Miscellaneous Documentation</a></div><div id="page-content"><div id="preamble"><h1>Password Formats</h1>


    <p>Notes about the password encryption formats generated and understood by
    Apache.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#basic">Basic Authentication</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#digest">Digest Authentication</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="basic" id="basic">Basic Authentication</a></h2>

    <p>There are four formats that Apache recognizes for basic-authentication
    passwords. Note that not all formats work on every platform:</p>
    
    <dl>
      <dt>PLAIN TEXT (i.e. <em>unencrypted</em>)</dt>
      <dd>Windows, BEOS, &amp; Netware only.</dd>
       
       <dt>CRYPT</dt>
       <dd>Unix only. Uses the traditional Unix <code>crypt(3)</code> function
       with a randomly-generated 32-bit salt (only 12 bits used) and the first 8
       characters of the password.</dd>
       
       <dt>SHA1</dt>
       <dd>"{SHA}" + Base64-encoded SHA-1 digest of the password.</dd>
       
       <dt>MD5</dt>
       <dd>"$apr1$" + the result of an Apache-specific algorithm using an
       iterated (1,000 times) MD5 digest of various combinations of a
       random 32-bit salt and the password. See the APR source file
       <a href="http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/crypto/apr_md5.c?view=co">apr_md5.c</a>
       for the details of the algorithm.</dd>
    </dl>
    
    <h3>Generating values with htpasswd</h3>
      
      <div class="example"><h3>MD5</h3><p><code>
      $ htpasswd -nbm myName myPassword<br />
      myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
      </code></p></div>
      
      <div class="example"><h3>SHA1</h3><p><code>
      $ htpasswd -nbs myName myPassword<br />
      myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=
      </code></p></div>
      
      <div class="example"><h3>CRYPT</h3><p><code>
      $ htpasswd -nbd myName myPassword<br />
      myName:rqXexS6ZhobKA
      </code></p></div>
      
    
    
    <h3>Generating CRYPT and MD5 values with the OpenSSL
             command-line program</h3>
      
      
      <p>OpenSSL knows the Apache-specific MD5 algorithm.</p>
      
      <div class="example"><h3>MD5</h3><p><code>
      $ openssl passwd -apr1 myPassword<br />
      $apr1$qHDFfhPC$nITSVHgYbDAK1Y0acGRnY0
      </code></p></div>

      <div class="example"><h3>CRYPT</h3><p><code>
      openssl passwd -crypt myPassword<br />
      qQ5vTYO3c8dsU
      </code></p></div>
    
    
    <h3>Validating CRYPT or MD5 passwords with the OpenSSL command
             line program</h3>
      
      <p>The salt for a CRYPT password is the first two characters (converted to
      a binary value). To validate <code>myPassword</code> against
      <code>rqXexS6ZhobKA</code></p>
      
      <div class="example"><h3>CRYPT</h3><p><code>
      $ openssl passwd -crypt -salt rq myPassword<br />
      Warning: truncating password to 8 characters<br />
      rqXexS6ZhobKA
      </code></p></div>
      
      <p>Note that using <code>myPasswo</code> instead of
      <code>myPassword</code> will produce the same result because only the
      first 8 characters of CRYPT passwords are considered.</p>
      
      <p>The salt for an MD5 password is between <code>$apr1$</code> and the
      following <code>$</code> (as a Base64-encoded binary value - max 8 chars).
      To validate <code>myPassword</code> against
      <code>$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/</code></p>
      
      <div class="example"><h3>MD5</h3><p><code>
      $ openssl passwd -apr1 -salt r31..... myPassword<br />
      $apr1$r31.....$HqJZimcKQFAMYayBlzkrA/
      </code></p></div>
    
    
    <h3>Database password fields for mod_dbd</h3>
      <p>The SHA1 variant is probably the most useful format for DBD
      authentication. Since the SHA1 and Base64 functions are commonly
      available, other software can populate a database with encrypted passwords
      that are usable by Apache basic authentication.</p>
      
      <p>To create Apache SHA1-variant basic-authentication passwords in various
      languages:</p>
      
      <div class="example"><h3>PHP</h3><p><code>
      '{SHA}' . base64_encode(sha1($password, TRUE))
      </code></p></div>
      
      <div class="example"><h3>Java</h3><p><code>
      "{SHA}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))
      </code></p></div>
      
      <div class="example"><h3>ColdFusion</h3><p><code>
      "{SHA}" &amp; ToBase64(BinaryDecode(Hash(password, "SHA1"), "Hex"))
      </code></p></div>
      
      <div class="example"><h3>Ruby</h3><p><code>
      require 'digest/sha1'<br />
      require 'base64'<br />
      '{SHA}' + Base64.encode64(Digest::SHA1.digest(password))
      </code></p></div>
      
      <div class="example"><h3>C or C++</h3><p><code>
      Use the APR function: apr_sha1_base64
      </code></p></div>
      
      <div class="example"><h3>PostgreSQL (with the contrib/pgcrypto functions
               installed)</h3><p><code>
        
        '{SHA}'||encode(digest(password,'sha1'),'base64')
      </code></p></div>
    
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="digest" id="digest">Digest Authentication</a></h2>
    <p>Apache recognizes one format for
    digest-authentication passwords - the MD5 hash of the string
    <code>user:realm:password</code> as a 32-character string of hexadecimal
    digits. <code>realm</code> is the Authorization Realm argument to the
    <code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> directive in
    httpd.conf.</p>
    
    <h3>Database password fields for mod_dbd</h3>
      
      <p>Since the MD5 function is commonly available, other software can
      populate a database with encrypted passwords that are usable by Apache
      digest authentication.</p>
      
      <p>To create Apache digest-authentication passwords in various
      languages:</p>
      
      <div class="example"><h3>PHP</h3><p><code>
      md5($user . ':' . $realm . ':' .$password)
      </code></p></div>
      
      <div class="example"><h3>Java</h3><p><code>
      byte b[] = java.security.MessageDigest.getInstance("MD5").digest( (user + ":" + realm + ":" + password ).getBytes());<br />
      java.math.BigInteger bi = new java.math.BigInteger(1, b);<br />
      String s = bi.toString(16);<br />
      while (s.length() &lt; 32)<br />
      <span class="indent">
        s = "0" + s;
      </span>
      // String s is the encrypted password
      </code></p></div>
      
      <div class="example"><h3>ColdFusion</h3><p><code>
      LCase(Hash( (user &amp; ":" &amp; realm &amp; ":" &amp; password) , "MD5"))
      </code></p></div>
      
      <div class="example"><h3>Ruby</h3><p><code>
      require 'digest/md5'<br />
      Digest::MD5.hexdigest(user + ':' + realm + ':' + password)
      </code></p></div>
      
      <div class="example"><h3>PostgreSQL (with the contrib/pgcrypto functions installed)</h3><p><code>
        
        encode(digest( user || ':' || realm || ':' || password , 'md5'), 'hex')
      </code></p></div>
      
    
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
     misc/perf-tuning.html                                                                               100644       0       0       162311 11256641267  12342  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache’de Başarımın Arttırılması - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Çeşitli Belgeler</a></div><div id="page-content"><div id="preamble"><h1>Apache’de Başarımın Arttırılması</h1>



    <p>Apache 2.x, esneklik, taşınabilirlik ve başarım arasında bir denge
      sağlamak üzere tasarlanmış genel amaçlı bir HTTP sunucusudur. Başka
      sunucularla kıyaslama denemelerinde öne geçmek üzere tasarlanmamış
      olsa da Apache 2.x gerçek yaşamda karşılaşılan pek çok durumda oldukça
      yüksek bir başarıma ulaşacak yetenektedir.</p>

    <p>Apache 1.3 ile karşılaştırıldığında 2.x sürümleri toplam veri hızını
      ve ölçeklenebilirliği arttırmak için pek çok en iyileme seçeneği
      içerir. Bu iyileştirmelerin pek çoğu zaten öntanımlı olarak etkin
      olmakla birlikte derleme ve kullanım sırasında başarımı önemli ölçüde
      etkileyebilen yapılandırma seçenekleri de mevcuttur. Bu belgede, bir
      Apache 2.x kurulumunda sunucu yöneticisinin sunucunun başarımını
      arttırmak amacıyla yapılandırma sırasında neler yapabileceğinden
      bahsedilmiştir. Bu yapılandırma seçeneklerinden bazıları, httpd’nin
      donanımın ve işletim sisteminin olanaklarından daha iyi
      yararlanabilmesini sağlarken bir kısmı da  daha hızlı bir sunum için
      yöneticinin işlevsellikten ödün verebilmesini olanaklı kılar.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#hardware">Donanım ve İşletim Sistemi ile İlgili Konular</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#runtime">Çalışma Anı Yapılandırması ile İlgili Konular</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#compiletime">Derleme Sırasında Yapılandırma ile İlgili Konular</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#trace">Ek: Bir çağrı izlemesinin ayrıntılı çözümlemesi</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="hardware" id="hardware">Donanım ve İşletim Sistemi ile İlgili Konular</a></h2>

    

    <p>HTTP sunucusunun başarımını etkileyen en önemli donanım bellektir
      (RAM). Bir HTTP sunucusu asla takaslama yapmamalıdır. Çünkü takaslama,
      kullanıcının "yeterince hız" umduğu noktada sunumun gecikmesine sebep
      olur. Böyle bir durumda kullanıcılar yüklemeyi durdurup tekrar
      başlatma eğilimindedirler; sonuçta yük daha da artar. <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergesinin değerini
      değiştirerek takaslamaya sebep olabilecek kadar çok çocuk süreç
      oluşturulmasını engelleyebilirsiniz ve böyle bir durumda bunu mutlaka
      yapmalısınız. Bunun için yapacağınız işlem basittir: <code>top</code>
      benzeri bir araç üzerinden çalışan süreçlerinizin bir listesini alıp
      Apache süreçlerinizin ortalama büyüklüğünü saptayıp, mevcut bellekten
      bir kısmını diğer süreçler için ayırdıktan sonra kalan miktarı bu
      değere bölerseniz yönergeye atayacağınız değeri bulmuş olursunuz.</p>

    <p>Donanımın diğer unsurları için kararı siz verin: Daha hızlı işlemci,
      daha hızlı ağ kartı, daha hızlı disk; daha hızlının ne kadar hızlı
      olacağını deneyimlerinize bağlı olarak tamamen sizin ihtiyaçlarınız
      belirler.</p>

    <p>İşletim sistemi seçimi büyük oranda yerel ilgi konusudur. Fakat yine
      de, genelde yararlılığı kanıtlanmış bazı kurallar bu seçimde size
      yardımcı olabilir:</p>

    <ul>
      <li>
        <p>Seçtiğiniz işletim sisteminin (çekirdeğin) en son kararlı
          sürümünü çalıştırın. Bir çok işletim sistemi, son yıllarda TCP
          yığıtları ve evre kütüphaneleri ile ilgili belirgin iyileştirmeler
          yapmışlar ve yapmaktadırlar.</p>
      </li>

      <li>
        <p>İşletim sisteminiz <code>sendfile</code>(2) sistem çağrısını
          destekliyorsa bunun etkinleştirilebildiği sürümün kurulu olması
          önemlidir. (Örneğin, Linux için bu, Linux 2.4 ve sonraki sürümler
          anlamına gelirken, Solaris için Solaris 8’den önceki sürümlerin
          yamanması gerektirdiği anlamına gelmektedir.)
          <code>sendfile</code> işlevinin desteklendiği sistemlerde Apache 2
          duruk içeriği daha hızlı teslim etmek ve işlemci kullanımını
          düşürmek amacıyla bu işlevselliği kullanacaktır.</p>
      </li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="runtime" id="runtime">Çalışma Anı Yapılandırması ile İlgili Konular</a></h2>

    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></li><li><code class="module"><a href="../mod/mpm_common.html">mpm_common</a></code></li><li><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code></li><li><code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code></li><li><code class="directive"><a href="../mod/core.html#enablemmap">EnableMMAP</a></code></li><li><code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code></li><li><code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code></li><li><code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li><li><code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li></ul></td></tr></table>

    <h3><a name="dns" id="dns"><code>HostnameLookups</code> ve DNS ile ilgili diğer konular</a></h3>

      

      <p>Apache 1.3 öncesinde, <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> yönergesinin öntanımlı değeri
        <code>On</code> idi. İstek yerine getirilmeden önce bir DNS sorgusu
        yapılmasını gerektirmesi sebebiyle bu ayarlama her istekte bir
        miktar gecikmeye sebep olurdu. Apache 1.3’ten itibaren yönergenin
        öntanımlı değeri <code>Off</code> yapılmıştır. Eğer günlük
        dosyalarınızda konak isimlerinin bulunmasını isterseniz, Apache ile
        birlikte gelen <code class="program"><a href="../programs/logresolve.html">logresolve</a></code> programını
        kullanabileceğiniz gibi günlük raporlarını çözümleyen Apache ile
        gelmeyen programlardan herhangi birini de kullanabilirsiniz.</p>

      <p>Günlük dosyaları üzerindeki bu işlemi sunucu makinesi dışında
        günlük dosyasının bir kopyası üzerinde yapmanızı öneririz. Aksi
        takdirde sunucunuzun başarımı önemli ölçüde etkilenebilir.</p>

      <p><code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> veya
        <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code>
        yönergelerinde IP adresi yerine bir konak veya alan ismi
        belirtirseniz, iki DNS sorguluk bir bedel ödersiniz (biri normal,
        diğeri IP taklidine karşı ters DNS sorgusu). Başarımı en iyilemek
        için bu yönergelerde mümkün olduğunca isim yerine IP adreslerini
        kullanınız.</p>

      <p><code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code>
        yönergelerinin <code>&lt;Location /server-status&gt;</code> gibi
        bölüm yönergelerinin içinde de yer alabileceğini unutmayın. Bu gibi
        durumlarda DNS sorguları sadece istek kuralla eşleştiği takdirde
        yapılacaktır. Aşağıdaki örnekte <code>.html</code> ve
        <code>.cgi</code> dosyalarına yapılan istekler hariç DNS sorguları
        iptal edilmektedir:</p>

      <div class="example"><p><code>
        HostnameLookups off<br />
        &lt;Files ~ "\.(html|cgi)$"&gt;<br />
        <span class="indent">
          HostnameLookups on<br />
        </span>
        &lt;/Files&gt;
      </code></p></div>

      <p>Yine de bazı CGI’lerin DNS isimlerine ihtiyacı olursa bu CGI’lerin
        bu ihtiyaçlarına yönelik olarak <code>gethostbyname</code> çağrıları
        yapabileceğini gözardı etmeyiniz.</p>

    

    <h3><a name="symlinks" id="symlinks"><code>FollowSymLinks</code> ve
        <code>SymLinksIfOwnerMatch</code></a></h3>

      

      <p>URL uzayınızda geçerli olmak üzere bir <code>Options
        FollowSymLinks</code> yoksa veya <code>Options
        SymLinksIfOwnerMatch</code> yönergeleri varsa, Apache her sembolik
        bağın üzerinde bazı sınamalar yapmak için ek bir sistem çağrısından
        başka istenen her dosya için de ayrı bir çağrı yapacaktır.</p>

      <div class="example"><h3>Örnek:</h3><p><code>
        DocumentRoot /siteler/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          Options SymLinksIfOwnerMatch<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>Bu durumda <code>/index.html</code> için bir istek yapıldığında
        Apache, <code>/siteler</code>, <code>/siteler/htdocs</code> ve<br />
        <code>/siteler/htdocs/index.html</code> üzerinde
        <code>lstat</code>(2) çağrıları yapacaktır. <code>lstat</code>
        sonuçları önbelleğe kaydedilmediğinden bu işlem her istekte
        yinelenecektir. Amacınız gerçekten sembolik bağları güvenlik
        açısından sınamaksa bunu şöyle yapabilirsiniz:</p>

      <div class="example"><p><code>
        DocumentRoot /siteler/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          Options FollowSymLinks<br />
        </span>
        &lt;/Directory&gt;<br />
        <br />
        &lt;Directory /sitem/htdocs&gt;<br />
        <span class="indent">
          Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>Böylece <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> altındaki
        dosyalar için fazladan bir çağrı yapılmasını engellemiş olursunuz.
        Eğer bazı bölümlerde <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> gibi yönergeler üzerinden belge kök
        dizininizin dışında kalan dosya yollarına sahipseniz benzer
        işlemleri onlar için de yapmalısınız. Sembolik bağ koruması yapmamak
        suretiyle başarımı arttırmak isterseniz, <code>FollowSymLinks</code>
        seçeneğini her yerde etkin kılın ve
        <code>SymLinksIfOwnerMatch</code> seçeneğini asla
        etkinleştirmeyin.</p>

    

    <h3><a name="htacess" id="htacess"><code>AllowOverride</code></a></h3>

      

      <p>Genellikle <code>.htaccess</code> dosyaları üzerinden yapıldığı
        gibi URL uzayınızda geçersizleştirmelere izin veriyorsanız, Apache
        her dosya bileşeni için bu <code>.htaccess</code> dosyalarını açmaya
        çalışacaktır.</p>

      <div class="example"><h3>Örnek:</h3><p><code>
        DocumentRoot /siteler/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          AllowOverride all<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>Bu durumda <code>/index.html</code> sayfasına yapılan bir istek için
        Apache, <code>/.htaccess</code>, <code>/siteler/.htaccess</code> ve
        <code>/siteler/htdocs/.htaccess</code> dosyalarını açmaya
        çalışacaktır. Çözüm <code>Options FollowSymLinks</code> durumunun
        benzeridir; başarımı arttırmak için dosya sisteminizin her yerinde
        <code>AllowOverride None</code> olsun.</p>

    

    <h3><a name="negotiation" id="negotiation">Dil Uzlaşımı</a></h3>

      

      <p>Başarımı son kırıntısına kadar arttırmak istiyorsanız, mümkünse
        içerik dili uzlaşımı da yapmayın. Dil uzlaşımından yararlanmak
        isterken büyük başarım kayıplarına uğrayabilirsiniz. Böyle bir
        durumda sunucunun başarımını arttırmanın tek bir yolu vardır. </p>

      <div class="example"><p><code>
        DirectoryIndex index
      </code></p></div>

      <p>Yukarıdaki gibi bir dosya ismi kalıbı kullanmak yerine, aşağıdaki
        gibi seçenekleri tam bir liste halinde belirtin:</p>

      <div class="example"><p><code>
        DirectoryIndex index.cgi index.pl index.shtml index.html
      </code></p></div>

      <p>Buradaki sıralama öncelik sırasını belirler; yani,
        öncelikli olmasını istediğiniz seçeneği listenin başına
        yazmalısınız.</p>

      <p>İstenen dosya için <code>MultiViews</code> kullanarak dizini
        taratmak yerine, gerekli bilgiyi tek bir dosyadan okutmak suretiyle
        başarımı arttırabilirsiniz. Bu amaçla türeşlem
        (<code>type-map</code>) dosyaları kullanmanız yeterli olacaktır.</p>

      <p>Sitenizde içerik dili uzlaşımına gerek varsa, bunu <code>Options
        MultiViews</code> yönergesi üzerinden değil, türeşlem dosyaları
        kullanarak yapmayı deneyin. İçerik dili uzlaşımı ve türeşlem
        dosyalarının oluşturulması hakkında daha ayrıntılı bilgi edinmek
        için <a href="../content-negotiation.html">İçerik Uzlaşımı</a>
        belgesine bakınız.</p>

    

    <h3>Bellek Eşlemleri</h3>

      

      <p>Apache’nin SSI sayfalarında olduğu gibi teslim edilecek dosyanın
        içeriğine bakma gereği duyduğu durumlarda, eğer işletim sistemi
        <code>mmap</code>(2) ve benzerlerini destekliyorsa çekirdek normal
        olarak dosyayı belleğe kopyalayacaktır.</p>

      <p>Bazı platformlarda bu belleğe eşleme işlemi başarımı arttırsa da
        başarımın veya httpd kararlılığının zora girdiği durumlar
        olabilmektedir:</p>

      <ul>
        <li>
          <p>Bazı işletim sistemlerinde işlemci sayısı artışına bağlı
            olarak, <code>mmap</code> işlevi <code>read</code>(2) kadar iyi
            ölçeklenmemiştir. Örneğin, çok işlemcili Solaris sunucularda
            <code>mmap</code> iptal edildiği takdirde içeriği sunucu
            tarafından işlenen dosyalar üzerinde bazen daha hızlı işlem
            yapılabilmektedir.</p>
        </li>

        <li>
          <p>Belleğe kopyalanacak dosya NFS üzerinden bağlanan bir dosya
            sistemindeyse ve dosya başka bir NFS istemcisi makine tarafından
            silinmiş veya dosyanın boyutu değiştirilmişse sunucunuz dosyaya
            tekrar erişmeye çalıştığında bir hata alabilecektir.</p>
        </li>
      </ul>

      <p>Böyle durumların olasılık dahilinde olduğu kurulumlarda içeriği
        sunucu tarafından işlenecek dosyaların belleğe kopyalanmaması için
        yapılandırmanıza <code>EnableMMAP off</code> satırını ekleyiniz.
        (Dikkat: Bu yönerge dizin seviyesinde geçersizleştirilebilen
        yönergelerdendir.)</p>

    

    <h3><code>sendfile</code></h3>

      

      <p>Apache’nin duruk dosyalarda olduğu gibi teslim edilecek dosyanın
        içeriğine bakmadığı durumlarda, eğer işletim sistemi
        <code>sendfile</code>(2) desteğine sahipse çekirdek normal olarak bu
        desteği kullanacaktır.</p>

      <p>Bazı platformlarda <code>sendfile</code> kullanımı, okuma ve yazma
        işlemlerinin ayrı ayrı yapılmamasını sağlasa da
        <code>sendfile</code> kullanımının httpd kararlılığını bozduğu bazı
        durumlar sözkonusudur:</p>

      <ul>
        <li>
          <p>Bazı platformlar derleme sisteminin saptayamadığı bozuk bir
            <code>sendfile</code> desteğine sahip olabilir. Özellikle
            derleme işleminin başka bir platformda yapılıp
            <code>sendfile</code> desteği bozuk bir makineye kurulum
            yapıldığı durumlarda bu desteğin bozuk olduğu
            saptanamayacaktır.</p>
        </li>
        <li>
          <p>Çekirdek, NFS üzerinden erişilen ağ dosyalarını kendi önbelleği
            üzerinden gerektiği gibi sunamayabilir.</p>
        </li>
      </ul>

      <p>Böyle durumların olasılık dahilinde olduğu kurulumlarda içeriğin
        <code>sendfile</code> desteğiyle teslim edilmemesi için
        yapılandırmanıza <code>EnableSendfile off</code> satırını ekleyiniz.
        (Dikkat: Bu yönerge dizin seviyesinde geçersizleştirilebilen
        yönergelerdendir.)</p>

    

    <h3><a name="process" id="process">Süreç Oluşturma</a></h3>

      

      <p>Apache 1.3 öncesinde <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code> ve <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> ayarları, başka sunucularla kıyaslama
        denemelerinde olağanüstü kötü sonuçlar alınmasına sebep olmaktaydı.
        Özellikle uygulanan yükü karşılamaya yetecek sayıda çocuk süreç
        oluşturulması aşamasında Apache’nin elde ettiği ivme bunlardan
        biriydi. Başlangıçta <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> yönergesiyle belli sayıda süreç
        oluşturulduktan sonra her saniyede bir tane olmak üzere <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code> sayıda çocuk süreç
        oluşturulmaktaydı. Örneğin, aynı anda 100 isteğe yanıt vermek için
        <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>
        yönergesinin öntanımlı değeri olarak başta <code>5</code> süreç
        oluşturulduğundan kalan süreçler için 95 saniye geçmesi gerekirdi.
        Sık sık yeniden başlatılmadıklarından dolayı gerçek hayatta
        sunucuların başına gelen de buydu. Başka sunucularla kıyaslama
        denemelerinde ise işlem sadece on dakika sürmekte ve içler acısı
        sonuçlar alınmaktaydı.</p>

      <p>Saniyede bir kuralı, sunucunun yeni çocukları oluşturması sırasında
        sistemin aşırı meşgul duruma düşmemesi için alınmış bir önlemdi.
        Makine çocuk süreç oluşturmakla meşgul edildiği sürece isteklere
        yanıt veremeyecektir. Böylesi bir durum Apache’nin başarımını
        kötüleştirmekten başka işe yaramayacaktır. Apache 1.3’te saniyede
        bir kuralı biraz esnetildi. Yeni gerçeklenimde artık bir süreç
        oluşturduktan bir saniye sonra iki süreç, bir saniye sonra dört
        süreç oluşturulmakta ve işlem, saniyede 32 çocuk süreç oluşturulur
        duruma gelene kadar böyle ivmelenmektedir. Çocuk süreç oluşturma
        işlemi <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>
        değerine ulaşılınca durmaktadır.</p>

      <p>Bu, <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>,
        <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code> ve
        <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> ayarlarıyla
        oynamayı neredeyse gereksiz kılacak kadar iyi sonuçlar verecek gibi
        görünmektedir. Saniyede 4 çocuktan fazlası oluşturulmaya
        başlandığında hata günlüğüne bazı iletiler düşmeye başlar. Bu
        iletilerin sayısı çok artarsa bu ayarlarla oynama vakti gelmiş
        demektir. Bunun için <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> çıktısını bir
        kılavuz olarak kullanabilirsiniz.</p>

      <p>Süreç oluşturmayla ilgili olarak süreç ölümü <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> değeri ile
        sağlanır. Bu değer öntanımlı olarak <code>0</code> olup, çocuk süreç
        başına istek sayısının sınırsız olduğu anlamına gelir. Eğer
        yapılandırmanızda bu değeri <code>30</code> gibi çok düşük bir
        değere ayarlarsanız bunu hemen kaldırmak zorunda kalabilirsiniz.
        Sunucunuzu SunOS veya Solaris’in eski bir sürümü üzerinde
        çalıştırıyorsanız bellek kaçaklarına sebep olmamak için bu değeri
        <code>10000</code> ile sınırlayınız.</p>

      <p>Kalıcı bağlantı özelliğini kullanıyorsanız, çocuk süreçler zaten
        açık bağlantılardan istek beklemekte olacaklardır. <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> yönergesinin öntanımlı
        değeri <code>5</code> saniye olup bu etkiyi en aza indirmeye yönelik
        süredir. Burada ağ band genişliği ile sunucu kaynaklarının kullanımı
        arasında bir seçim yapmak söz konusudur. Hiçbir şey umurunuzda
        değilse <a href="http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-4.html">
        çoğu ayrıcalığın yitirilmesi pahasına</a> bu değeri rahatça
        <code>60</code> saniyenin üzerine çıkarabilirsiniz.</p>

    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compiletime" id="compiletime">Derleme Sırasında Yapılandırma ile İlgili Konular</a></h2>
    

    <h3>MPM Seçimi</h3>
      

      <p>Apache 2.x, <a href="../mpm.html">Çok Süreçlilik Modülleri</a>
        (MPM) adı verilen eklemlenebilir çok görevlilik modellerini
        destekler. Apache’yi derlerken bu MPM’lerden birini seçmeniz
        gerekir. MPM’lerden bazıları platformlara özeldir:
        <code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>,
        <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> ve <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>. Unix
        benzeri sistemler için ise seçebileceğiniz modül sayısı birden
        fazladır. MPM seçiminin httpd’nin hızında ve ölçeklenebilirliğinde
        bazı etkileri olabilir:</p>

      <ul>

        <li><code class="module"><a href="../mod/worker.html">worker</a></code> modülü her biri çok evreli çok sayıda
          çocuk süreç kullanımını destekler. Her evre aynı anda tek bir
          bağlantıya hizmet sunar. Aynı hizmeti daha az bellek harcayarak
          vermesi nedeniyle yüksek trafiğe sahip sunucularda
          <code class="module"><a href="../mod/prefork.html">prefork</a></code> modülüne göre daha iyi bir seçimdir.</li>

        <li><code class="module"><a href="../mod/prefork.html">prefork</a></code> modülü her biri tek bir evreye sahip
          çok sayıda çocuk süreç kullanımını destekler. Her süreç aynı anda
          tek bir bağlantıya hizmet sunar. Çoğu sistemde daha hızlı olması
          nedeniyle <code class="module"><a href="../mod/worker.html">worker</a></code> modülüne göre daha iyi bir seçim
          olarak görünürse de bunu daha fazla bellek kullanarak sağlar.
          <code class="module"><a href="../mod/prefork.html">prefork</a></code> modülünün evresiz tasarımının
          <code class="module"><a href="../mod/worker.html">worker</a></code> modülüne göre bazı yararlı tarafları
          vardır: Çok evreli sistemlerde güvenilir olmayan üçüncü parti
          modülleri kullanabilir ve evrelerde hata ayıklamanın yetersiz
          kaldığı platformlarda hatalarını ayıklamak daha kolaydır.</li>

      </ul>

      <p>Bu modüller ve diğerleri hakkında daha ayrıntılı bilgi edinmek için
        <a href="../mpm.html">Çok Süreçlilik Modülleri</a> belgesine
        bakınız.</p>

    

    <h3><a name="modules" id="modules">Modüller</a></h3>

        

        <p>Bellek kullanımı başarım konusunda önemli olduğundan gerçekte
        kullanmadığınız modülleri elemeye çalışmalısınız. Modülleri birer <a href="../dso.html">DSO</a> olarak derlediyseniz <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesinin bulunduğu satırı
        açıklama haline getirmeniz modülden kurtulmanız için yeterli
        olacaktır. Modülleri bu şekilde kaldırarak onların yokluğunda
        sitenizin hala işlevlerini yerine getirdiğini görme şansına da
        kavuşmuş olursunuz.</p>

        <p>Ancak, eğer modülleri Apache çalıştırılabilirinin içine
        gömmüşseniz istenmeyen modülleri kaldırmak için Apache'yi yeniden
        derlemeniz gerekir.</p>

        <p>Bu noktada bir soru akla gelebilir: Hangi modüller gerekli,
        hangileri değil? Bu sorunun yanıtı şüphesiz siteden siteye değişir.
        Ancak, olmazsa olmaz moüller olarak <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>,
        <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> ve <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>
        modüllerini sayabiliriz. Bunlardan <code>mod_log_config</code>
        olmadan da bir sitenin çalışabileceğinden hareketle bu modülün
        varlığı isteğe bağlı olsa da bu modülü kaldırmanızı önermiyoruz.</p>

    

    <h3>Atomik İşlemler</h3>

      

      <p>Worker MPM'nin en son geliştirme sürümleri ve
      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> gibi bazı modüller APR'nin atomik API'sini
      kullanırlar. Bu API, düşük ayarlı evre eşzamanlamasında atomik
      işlemler yapar.</p>

      <p>Öntanımlı olarak, APR bu işlemleri hedef işletim sistemi/işlemci
      platformunda kullanılabilecek en verimli mekanizmayı kullanarak
      gerçekleştirir. Günümüz işlemcilerinin çoğu, örneğin, bir atomik
      karşılaştırma ve takas (CAS) işlemini donanımda gerçekleştirmektedir.
      Bazı platformlarda APR'nin atomik işlemler için öntanımlı olarak daha
      yavaş olan mutekslere dayalı gerçeklenimi kullanmasının sebebi eski
      işlemcilerde bu tür makine kodlarının yokluğudur. Apache'yi bu tür
      platformalarda günümüz işlemcileriyde çalıştırmayı düşünüyorsanız
      Apache'yi derlemek için yapılandırırken en hızlı atomik işlemin
      seçilebilmesi için <code>--enable-nonportable-atomics</code>
      seçeneğini kullanın:</p>

      <div class="example"><p><code>
        ./buildconf<br />
        ./configure --with-mpm=worker --enable-nonportable-atomics=yes
      </code></p></div>

      <p><code>--enable-nonportable-atomics</code> seçeneği şu platformlar
      için uygundur:</p>

      <ul>

        <li>SPARC üzerinde Solaris<br />
            APR öntanımlı olarak, SPARC/Solaris üzerinde mutekslere dayalı
            atomik işlemleri kullanır. Ancak,
            <code>--enable-nonportable-atomics</code> yapılandırmasını
            kullanırsanız, donanım üzerinde hızlı karşılaştırma ve takas
            için uygun SPARC v8plus kodunu kullanacak şekilde kod üretilir.
            Apache'yi bu seçenekle yapılandırırsanız atomik işlemler daha
            verimli olacak fakat derlenen Apache çalıştırılabiliri sadece
            UltraSPARC kırmığı üzerinde çalışacaktır.
        </li>

        <li>x86 üzerinde Linux<br />
            APR öntanımlı olarak, Linux üzerinde mutekslere dayalı atomik
            işlemleri kullanır. Ancak,
            <code>--enable-nonportable-atomics</code> yapılandırmasını
            kullanırsanız, donanım üzerinde hızlı karşılaştırma ve takas
            için uygun 486 kodunu kullanacak şekilde kod üretilir. Apache'yi
            bu seçenekle yapılandırırsanız atomik işlemler daha verimli
            olacak fakat derlenen Apache çalıştırılabiliri (386 üzerinde
            değil) sadece 486 ve sonrası kırmıklarda çalışacaktır.
        </li>

      </ul>

    

    <h3><code>mod_status</code> ve <code>ExtendedStatus On</code>
      </h3>

      

      <p><code class="module"><a href="../mod/mod_status.html">mod_status</a></code> modülünü derlemiş ve Apache'yi
      yapılandırır ve çalıştırırken <code>ExtendedStatus On</code> satırını
      da kullanmışsanız Apache her istek üzerinde
      <code>gettimeofday(2)</code> (veya işletim sistemine bağlı olarak
      <code>time(2)</code>) çağrısından başka (1.3 öncesinde) fazladan
      defalarca  <code>time(2)</code> çağrıları yapacaktır. Bu çağrılarla
      durum raporununun zamanlama bilgilerini içermesi sağlanır. Başarımı
      arttırmak için <code>ExtendedStatus off</code> yapın (zaten öntanımlı
      böyledir).</p>

    

    <h3><code>accept</code> dizgilemesi ve çok soketli işlem</h3>

      

    <div class="warning"><h3>Uyarı:</h3>
      <p>Bu bölüm, Apache HTTP sunucusunun 2.x sürümlerinde yapılan
      değişikliklere göre tamamen güncellenmemiştir. Bazı bilgiler hala
      geçerliyse de lütfen dikkatli kullanınız.</p>
    </div>

      <p>Burada Unix soket arayüzü gerçeklenirken ihmal edilen bir durumdan
      bahsedeceğiz. HTTP sunucunuzun çok sayıda adresten çok sayıda portu
      dinlemek için çok sayıda <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> yönergesi kullanmakta olduğunu varsayalım. Her
      soketi çalıştığını görmek için denerken Apache bağlantı için
      <code>select(2)</code> kullanacaktır. <code>select(2)</code> çağrısı
      bu soketin üzerinde <em>sıfır</em> veya <em>en azından bir</em>
      bağlantının beklemekte olduğu anlamına gelir. Apache'nin modeli çok
      sayıda çocuk süreç içerir ve boşta olanların tümünde aynı anda yeni
      bağlantılar denenebilir. Gerçekte çalışan kod bu olmasa da meramımızı
      anlatmak için kodun şöyle bir şey olduğunu varsayabiliriz:</p>

      <div class="example"><p><code>
        for (;;) {<br />
        <span class="indent">
          for (;;) {<br />
          <span class="indent">
            fd_set accept_fds;<br />
            <br />
            FD_ZERO (&amp;accept_fds);<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              FD_SET (i, &amp;accept_fds);<br />
            </span>
            }<br />
            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
            if (rc &lt; 1) continue;<br />
            new_connection = -1;<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              if (FD_ISSET (i, &amp;accept_fds)) {<br />
              <span class="indent">
                new_connection = accept (i, NULL, NULL);<br />
                if (new_connection != -1) break;<br />
              </span>
              }<br />
            </span>
            }<br />
            if (new_connection != -1) break;<br />
          </span>
          }<br />
          process the new_connection;<br />
        </span>
        }
      </code></p></div>

      <p>Bu özet gerçeklenim bir takım açlık sorunlarına sebep olur. Bu
      döngünün çalışması sırasında aynı anda çok sayıda çocuk süreç yeniden
      çağrılır ve istekler arasında kalan çoğu çocuk da <code>select</code>
      ile engellenir. Engellenen tüm bu çocuklar soketlerden herhangi biri
      üzerinde tek bir istek göründüğünde <code>select</code> tarafından
      uyandırılıp işleme sokulmak üzere döndürülürler (uyandırılan çocuk
      sayısı işletim sistemine ve zamanlama ayarlarına göre değişiklik
      gösterir). Bunların hepsi döngüye katılıp bağlantı kabul etmeye
      (<code>accept</code>) çalışırlar. Fakat içlerinden yalnız biri
      (sadece bir bağlantı isteğinin mevcut olduğu varsayımıyla) bunu
      başarabilir. Kalanının bağlantı kabul etmesi (<code>accept</code>)
      engellenir. Bu durum, bu çocukları istekleri başka başka soketlerden
      değil mecburen tek bir soketten kabul etmeye kilitler ve bu soket
      üzerinde yeni bir istek belirip uyandırılana kadar bu durumda
      kalırlar. Bu açlık sorunu ilk olarak <a href="http://bugs.apache.org/index/full/467">PR#467</a> sayılı raporla
      belgelenmiştir. Bu sorunun en az iki çözümü vardır.</p>

      <p>Çözümün biri engellenmeyen soket kullanımıdır. Bu durumda
      <code>accept</code> çocukları engellemeyecek ve yapılan bir
      bağlantının ardından diğer çocuklar durumları değişmeksizin bağlantı
      beklemeye devam edeceklerdir. Fakat bu durum işlemci zamanının boşa
      harcanmasına sebep olur.  Seçilmiş (<code>select</code>) boşta on
      çocuğun olduğunu ve bir bağlantı geldiğini varsayalım. Kalan dokuz
      çocuk işine devam edip bağlantı kabul etmeyi (<code>accept</code>)
      deneyecek, başarızsız olacak, dönecek başa, tekrar seçilecek
      (<code>select</code>) ve böyle hiçbir iş yapmadan dönüp duracaktır. Bu
      arada hizmet sunmakta olanlar da işlerini bitirdikten sonra bu
      döngüdeki yerlerini alacaklardır. Aynı kutunun içinde boşta bir sürü
      işlemciniz (çok işlemcili sistemler) yoksa bu çözüm pek verimli
      olmayacaktır.</p>

      <p>Diğer çözüm ise Apache tarafından kullanılan çözüm olup, girdiyi
      bir iç döngüde sıraya sokmaktır. Döngü aşağıda örneklenmiştir (farklar
      vurgulanmıştır):</p>

      <div class="example"><p><code>
        for (;;) {<br />
        <span class="indent">
          <strong>accept_mutex_on ();</strong><br />
          for (;;) {<br />
          <span class="indent">
            fd_set accept_fds;<br />
            <br />
            FD_ZERO (&amp;accept_fds);<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              FD_SET (i, &amp;accept_fds);<br />
            </span>
            }<br />
            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
            if (rc &lt; 1) continue;<br />
            new_connection = -1;<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              if (FD_ISSET (i, &amp;accept_fds)) {<br />
              <span class="indent">
                new_connection = accept (i, NULL, NULL);<br />
                if (new_connection != -1) break;<br />
              </span>
              }<br />
            </span>
            }<br />
            if (new_connection != -1) break;<br />
          </span>
          }<br />
          <strong>accept_mutex_off ();</strong><br />
          process the new_connection;<br />
        </span>
        }
      </code></p></div>

      <p><code>accept_mutex_on</code> ve <code>accept_mutex_off</code> <a id="serialize" name="serialize">işlevleri</a> bir karşılıklı red
      semoforu oluştururlar. Mutekse aynı anda sadece bir çocuk sahip
      olabilir. Bu muteksleri gerçeklemek için çeşitli seçenekler vardır.
      Seçim, <code>src/conf.h</code> (1.3 öncesi) veya
      <code>src/include/ap_config.h</code> (1.3 ve sonrası) dosyasında
      tanımlanmıştır. Bazı mimariler bir kilitleme seçeneğine sahip
      değildir. Böyle mimarilerde çok sayıda <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> yönergesi kullanmak güvenilir
      olmayacaktır.</p>

      <p><code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> yönergesi,
      seçilen muteks gerçeklenimini çalışma anında değiştirmek için
      kullanılabilir.</p>

      <dl>
        <dt><code>AcceptMutex flock</code></dt>

        <dd>
          <p>Bu yöntem, bir kilit dosyasını kilitlemek için
          <code>flock(2)</code> sistem çağrısını kullanır (Kilit dosyasının
          yeri <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>
          yönergesiyle belirtilir).</p>
        </dd>

        <dt><code>AcceptMutex fcntl</code></dt>

        <dd>
          <p>Bu yöntem, bir kilit dosyasını kilitlemek için
          <code>fcntl(2)</code> sistem çağrısını kullanır (Kilit dosyasının
          yeri <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>
          yönergesiyle belirtilir).</p>
        </dd>

        <dt><code>AcceptMutex sysvsem</code></dt>

        <dd>
          <p>(1.3 ve sonrası) Bu yöntem muteksi gerçeklemek için SysV tarzı
          semaforları kullanır. Maalesef, SysV tarzı semaforların bazı yan
          etkileri vardır. Bunlardan biri Apache'nin semaforu temizlemeden
          ölme ihtimalidir (<code>ipcs(8)</code> kılavuz sayfasına bakınız).
          Diğer biri, CGI'lerin sunucu ile aynı kullanıcı kimliğini
          kullanmaları nedeniyle semafor arayüzünün hizmet reddi
          saldırılarına açık olmasıdır (<code class="program"><a href="../programs/suexec.html">suexec</a></code> veya
          <code>cgiwrapper</code> gibi bir şeyler kullanmadıkça bütün
          CGI'ler için söz konusudur). Bu sebeple bu yöntem IRIX haricinde
          hiçbir mimaride kullanılmaz (önceki ikisi çoğu IRIX makine için
          elde edilmesi imkansız derecede pahalı olduğundan).</p>
        </dd>

        <dt><code>AcceptMutex pthread</code></dt>

        <dd>
          <p>(1.3 ve sonrası) Bu yöntem POSIX mutekslerini kullanır ve POSIX
          evreleri belirtiminin tamamen gerçeklendiği mimarilerde çalışması
          gerekirse de sadece Solaris (2.5 ve sonrası) üzerinde ve sadece
          belli yapılandırmalarla çalışmakta gibi görünmektedir. Bunu
          denemişseniz sunucunuzun çöktüğünü ve yanıt vermediğini
          görmüşsünüzdür. Sadece duruk içerikli sunucular iyi
          çalışmaktadır.</p>
        </dd>

        <dt><code>AcceptMutex posixsem</code></dt>

        <dd>
          <p>(2.0 ve sonrası)  Bu yöntem POSIX semaforlarını kullanır. Eğer
          işlem sırasında bir evre muteks kaynaklı parçalama arızalarıyla
          karşı karşıya kalırsa HTTP sunucusunun çökmesiyle semaforun sahibi
          kurtarılamaz.</p>
        </dd>

      </dl>

      <p>Eğer sisteminiz yukarıda bahsedilenler dışında başka bir dizgileme
      yöntemi kullanıyorsa bununla ilgili kodun APR'ye eklenmesi girilen
      zahmete değecektir.</p>

      <p>Başka bir çözüm daha vardır ancak döngü kısmen dizgilenmeyeceğinden
      (yani belli sayıda sürece izin verilemeyeceğinden) asla
      gerçeklenmemiştir. Bu sadece, aynı anda çok sayıda çocuk sürecin
      çalışabileceği ve dolayısıyla band genişliğinin tüm yönleriyle
      kullanılabileceği çok işlemcili sistemlerde ilginç olabilirdi. Bu
      gelecekte incelenmeye değer bir konu olmakla beraber çok sayıda HTTP
      sunucusunun aynı anda aynı amaca hizmet edecek şekilde çalışması
      standart olarak pek mümkün görülmediğinden bu olasılık çok
      düşüktür.</p>

      <p>En yüksek başarımı elde etmek için ideal olanı sunucuları
      çalıştırırken çok sayıda <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> yönergesi kullanmamaktır. Fakat siz yine de
      okumaya devam edin.</p>

    

    <h3><code>accept</code> dizgilemesi - tek soket</h3>

      

      <p>Çok soketli sunucular için yukarıda açıklananlar iyi güzel de tek
      soketli sunucularda durum ne? Kuramsal olarak, bunların hiçbiriyle bir
      sorunları olmaması gerekir. Çünkü yeni bir bağlantı gelene kadar tüm
      çocuklar <code>accept(2)</code> ile engellenirler dolayısıyla hiçbir
      açlık sorununun ortaya çıkmaması gerekir. Uygulamada ise son
      kullanıcıdan gizli olarak, yukarıda engellenmeyen çocuklar çözümünde
      bahsedilenle hemen hemen aynı "boşa dönüp durma" davranışı mevcuttur.
      Çoğu TCP yığıtı bu yolu gerçeklemiştir. Çekirdek, yeni bir bağlantı
      ortaya çıktığında <code>accept</code> ile engellenen tüm süreçleri
      uyandırır. Bu süreçlerden bağlantıyı alan kullanıcı bölgesine geçerken
      çekirdek içinde döngüde olan diğerleri de yeni bağlantı keşfedilene
      kadar uykularına geri dönerler. Bu çekirdek içi döngü, kullanıcı
      bölgesindeki kodlara görünür değildir ama bu olmadıkları anlamına
      gelmez. Bu durum, çok soketli engellenmeyen çocuklar çözümündeki boşa
      döngünün sebep olduğu gereksiz işlemci yükü sorununu içinde
      barındırır.</p>

      <p>Bununla birlikte, tek soketli durumda bile bundan daha verimli bir
      davranış sergileyen bir çok mimari bulduk. Bu aslında hemen hemen her
      durumda öntanımlı olarak böyledir. Linux altında yapılan üstünkörü
      denemelerde (128MB bellekli çift Pentium pro 166 işlemcili makinede
      Linux 2.0.30) tek sokette dizgilemenin dizgilenmemiş duruma göre
      saniyede %3 daha az istekle sonuçlandığı gösterilmiştir. Fakat
      dizgilenmemiş tek soket durumunda her istekte 100ms'lik ek bir gecikme
      olduğu görülmüştür. Bu gecikmenin sebebi muhtemelen uzun mesafeli
      hatlar olup sadece yerel ağlarda söz konusudur. Tek soketli
      dizgilemeyi geçersiz kılmak için
      <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> tanımlarsanız tek
      soketli sunucularda artık dizgileme yapılmayacaktır.</p>

    

    <h3>Kapatmayı zamana yaymak</h3>

      

      <p><a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">draft-ietf-http-connection-00.txt</a> taslağının 8. bölümünde
      bahsedildiği gibi, bir HTTP sunucusunun protokolü <strong>güvenilir
      şekilde</strong> gerçeklemesi için her iki yöndeki iletişimi
      birbirinden bağımsız olarak (iki yönlü bir TCP bağlantısının her
      yarısını diğerinden bağımsız olarak) kapatması gerekir. Bu olgu başka
      sunucular tarafından çoğunlukla dikkate alınmaz fakat Apache'nin 1.2
      sürümünden beri gerektiği gibi gerçeklenmektedir.</p>

      <p>Bu özellik Apache'ye eklendiğinde Unix'in çeşitli sürümlerinde
      uzgörüsüzlükten dolayı bir takım geçici telaş sorunlarına sebep oldu.
      TCP belirtimi <code>FIN_WAIT_2</code> durumunda bir zaman aşımından
      bahsetmez ama yasaklamaz da. Zaman aşımı olmayan sistemlerde, Apache
      1.2 çoğu soketin sonsuza kadar <code>FIN_WAIT_2</code> durumunda
      takılıp kalmasına sebep olur. Çoğu durumda, satıcıdan sağlanan en son
      TCP/IP yamalarını uygulanarak bu önlenebilir. Satıcının hiçbir yeni
      yama dağıtmadığı durumlarda (örneğin, SunOS4 -- bir kaynak lisansı ile
      insanlar bunu kendileri yamayabilirse de) bu özelliği devre dışı
      bırakmaya karar verdik.</p>

      <p>Bunun üstesinden gelmenin iki yolu vardır. Bunlardan biri
      <code>SO_LINGER</code> soket seçeneğidir. Bu işin kaderi buymuş gibi
      görünürse de çoğu TCP/IP yığıtında bu gerektiği gibi
      gerçeklenmemiştir. Bu yığıtlar üzerinde, bu yöntemin, doğru bir
      gerçeklenimle bile (örneğin, Linux 2.0.31) sonraki çözümden daha
      pahalı olduğu ortaya çıkmıştır.</p>

      <p>Çoğunlukla, Apache bunu (<code>http_main.c</code> içindeki)
      <code>lingering_close</code> adında bir işlevle gerçekler. Bu işlev
      kabaca şöyle görünür:</p>

      <div class="example"><p><code>
        void lingering_close (int s)<br />
        {<br />
        <span class="indent">
          char junk_buffer[2048];<br />
          <br />
          /* gönderen tarafı kapat */<br />
          shutdown (s, 1);<br />
          <br />
          signal (SIGALRM, lingering_death);<br />
          alarm (30);<br />
          <br />
          for (;;) {<br />
          <span class="indent">
            /* s'i okumak için, 2 saniyelik zaman aşımı ile seç */<br />
            select (s for reading, 2 second timeout);<br />
            /* Hata oluşmuşsa döngüden çık */<br />
            if (error) break;<br />
            /* s okumak için hazırsa */<br />
            if (s is ready for reading) {<br />
            <span class="indent">
              if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {<br />
              <span class="indent">
                break;<br />
              </span>
              }<br />
              /* geri kalan herşey burada */<br />
            </span>
            }<br />
          </span>
          }<br />
          <br />
          close (s);<br />
        </span>
        }
      </code></p></div>

      <p>Bağlantı sonunda bu doğal olarak biraz daha masrafa yol açar, fakat
      güvenilir bir gerçeklenim için bu gereklidir. HTTP/1.1'in daha yaygın
      kullanılmaya başlanması ve tüm bağlantıların kalıcı hale gelmesiyle bu
      gerçeklenim daha fazla istek üzerinden kendi masrafını
      karşılayacaktır. Ateşle oynamak ve bu özelliği devre dışı bırakmak
      isterseniz <code>NO_LINGCLOSE</code>'u tanımlayabilirsiniz, fakat bu
      asla önerilmez. Özellikle, HTTP/1.1'den itibaren boruhatlı kalıcı
      bağlantıların <code>lingering_close</code> kullanmaya başlaması mutlak
      bir gerekliliktir (ve <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
      boruhatlı bağlantıların daha hızlı</a> olması nedeniyle bu
      bağlantıları desteklemek isteyebilirsiniz).</p>

    

    <h3>Çetele Dosyası</h3>

      

      <p>Apache'nin ana ve alt süreçleri birbirleriyle çetele denen birşey
      üzerinden haberleşirler. Bunun en mükemmel şekilde paylaşımlı bellekte
      gerçeklenmesi gerekir. Eriştiğimiz veya portlarını ayrıntılı olarak
      belirttiğimiz işletim sistemleri için bu, genellikle paylaşımlı bellek
      kullanılarak gerçeklenir. Geri kalanlar, öntanımlı olarak bunu bir
      disk dosyası kullanarak gerçekler. Bir disk dosyaı yavaş olmanın yanı
      sıra güvenilir de değildir (ve daha az özelliğe sahiptir). Mimarinizin
      <code>src/main/conf.h</code> dosyasını inceleyin ve
      <code>USE_MMAP_SCOREBOARD</code> veya
      <code>USE_SHMGET_SCOREBOARD</code>'a bakın. Bu ikisinden birinin (ve
      yanı sıra sırasıyla <code>HAVE_MMAP</code> veya
      <code>HAVE_SHMGET</code>'in) tanımlanmış olması, sağlanan paylaşımlı
      bellek kodunu etkinleştirir. Eğer sisteminiz diğer türdeki paylaşımlı
      belleğe sahipse, <code>src/main/http_main.c</code> dosyasını açıp,
      Apache'de bu belleği kullanması gereken kanca işlevleri ekleyin (Bize
      de bir yama yollayın, lütfen).</p>

      <div class="note">Tarihsel bilgi: Apache'nin Linux uyarlaması, Apache'nin 1.2
      sürümüne kadar paylaşımlı belleği kullanmaya başlamamıştı. Bu kusur,
      Apache'nin Linux üzerindeki erken dönem sürümlerinin davranışlarının
      zayıf ve güvenilmez olmasına yol açmıştı.</div>

    

    <h3>DYNAMIC_MODULE_LIMIT</h3>

      

      <p>Devingen olarak yüklenen modülleri kullanmamak niyetindeyseniz
      (burayı okuyan ve sunucunuzun başarımını son kırıntısına kadar
      arttırmakla ilgilenen biriyseniz bunu düşünmezsiniz), sunucunuzu
      derlerken seçenekler arasına <code>-DDYNAMIC_MODULE_LIMIT=0</code>
      seçeneğini de ekleyin. Bu suretle, sadece, devingen olarak yüklenen
      modüller için ayrılacak belleği kazanmış olacaksınız.</p>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="trace" id="trace">Ek: Bir çağrı izlemesinin ayrıntılı çözümlemesi</a></h2>

    

    <p>Burada, Solaris 8 üzerinde worker MPM'li Apache 2.0.38'in bir sistem
    çağrısı izlenmektedir. Bu izleme şu komutla elde edilmiştir:</p>

    <div class="example"><p><code>
      truss -l -p <var>httpd_çocuk_pidi</var>.
    </code></p></div>

    <p><code>-l</code> seçeneği, truss'a hafif bir sürecin yaptığı her
    sistem çağrısını (hafif süreç -- HS -- Solaris'in bir çekirdek seviyesi
    evreleme biçimi) günlüğe yazmasını söyler.</p>

    <p>Diğer sistemlerin sistem çağrılarını izleyen farklı araçları vardır
    (<code>strace</code>, <code>ktrace</code>, <code>par</code> gibi).
    Bunlar da benzer çıktılar üretirler.</p>

    <p>Bu izleme sırasında, bir istemci httpd'den 10 KB'lık duruk bir dosya
    talebinde bulunmuştur. Duruk olmayan veya içerik uzlaşımlı isteklerin
    izleme kayıtları vahşice (bazı durumlarda epey çirkince) farklı
    görünür.</p>

    <div class="example"><p><code>
      /67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (uykuda...)<br />
      /67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9
    </code></p></div>

    <p>Bu izlemede, dinleyen evre HS #67 içinde çalışmaktadır.</p>

    <div class="note"><code>accept(2)</code> dizgelemesinin olmayışına dikkat edin.
    Özellikle bu platformda worker MPM, çok sayıda portu dinlemedikçe,
    öntanımlı olarak dizgeleştirilmemiş bir accept çağrısı kullanır.</div>

    <div class="example"><p><code>
      /65:    lwp_park(0x00000000, 0)                         = 0<br />
      /67:    lwp_unpark(65, 1)                               = 0
    </code></p></div>

    <p>Bağlantının kabul edilmesiyle, dinleyici evre isteği yerine getirmek
    üzere bir worker evresini uyandırır. Bu izlemede, isteği yerine getiren
    worker evresi  HS #65'e aittir.</p>

    <div class="example"><p><code>
      /65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0
    </code></p></div>

    <p>Sanal konakların gerçeklenimi sırasında, Apache'nin, bağlantıları
    kabul etmek için kullanılan yerel soket adreslerini bilmesi gerekir.
    Çoğu durumda bu çağrıyı bertaraf etmek mümkündür (hiç sanal konağın
    olmadığı veya <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
    yönergelerinin mutlak adreslerle kullanıldığı durumlarda). Fakat bu en
    iyilemeleri yapmak için henüz bir çaba harcanmamıştır.</p>

    <div class="example"><p><code>
      /65:    brk(0x002170E8)                                 = 0<br />
      /65:    brk(0x002190E8)                                 = 0
    </code></p></div>

    <p><code>brk(2)</code> çağrıları devingen bellekten bellek ayırır. httpd
    çoğu isteği yerine getirirken özel bellek ayırıcılar
    (<code>apr_pool</code> ve <code>apr_bucket_alloc</code>) kullandığından
    bunlar bir sistem çağrısı izlemesinde nadiren görünür. Bu izlemede,
    httpd henüz yeni başlatıldığından, özel bellek ayırıcıları oluşturmak
    için ham bellek bloklarını ayırmak amacıyla <code>malloc(3)</code>
    çağrıları yapması gerekir.</p>

    <div class="example"><p><code>
/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2<br />
/65:    fstat64(9, 0xFAF7B818)                          = 0<br />
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0<br />
/65:    fstat64(9, 0xFAF7B818)                          = 0<br />
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0<br />
/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0<br />
/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0
    </code></p></div>

    <p>Ardından, worker evresi istemciye (dosya tanıtıcısı 9) engellenmeyen
    kipte bir bağlantı açar. <code>setsockopt(2)</code>
    ve <code>getsockopt(2)</code> çağrıları, Solaris libc'sinin soketler
    üzerindeki <code>fcntl(2)</code> çağrısı yanında birer yan etkiden
    ibarettirler.</p>

    <div class="example"><p><code>
      /65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97
    </code></p></div>

    <p>Worker evresi istemciden isteği okur.</p>

    <div class="example"><p><code>
/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0<br />
/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10
    </code></p></div>

    <p>Bu httpd  <code>Options FollowSymLinks</code> ve <code>AllowOverride
    None</code> ile yapılandırılmıştır. Bu bakımdan, ne istenen dosya ile
    sonuçlanan yol üzerindeki her dizinde <code>lstat(2)</code> çağrısına ne
    de <code>.htaccess</code> dosyalarına bakılmasına gerek vardır.
    <code>stat(2)</code> çağrısı basitçe dosya için şunları doğrulamak
    amacıyla yapılır: 1) dosya mevcuttur ve 2) bir dizin değil normal bir
    dosyadır.</p>

    <div class="example"><p><code>
      /65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269
    </code></p></div>

    <p>Bu örnekte, httpd, istenen dosyayı ve HTTP yanıt başlığını tek bir
    <code>sendfilev(2)</code> sistem çağrısı ile  göndermektedir. Dosya
    gönderim işleminin anlamı sistemden sisteme değişiklik gösterir. Bazı
    sistemlerde, <code>sendfile(2)</code> çağrısından önce başlıkları
    göndermek için  <code>write(2)</code> veya <code>writev(2)</code>
    çağrısı yapmak gerekir.</p>

    <div class="example"><p><code>
      /65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78
    </code></p></div>

    <p>Bu <code>write(2)</code> çağrısı isteği erişim günlüğüne kaydeder. Bu
    izlemede eksik olan tek şey, <code>time(2)</code> çağrısıdır. Apache
    1.3'ün aksine, Apache 2.x zamana bakmak için
    <code>gettimeofday(3)</code> çağırısını kullanır. Linux ve Solaris gibi
    bazı işletim sistemleri, <code>gettimeofday</code> işlevinin, sıradan
    bir sistem çağrısından daha fazla götürüsü olmayan en iyilenmiş bir
    gerçeklenimine sahiptir.</p>

    <div class="example"><p><code>
      /65:    shutdown(9, 1, 1)                               = 0<br />
      /65:    poll(0xFAF7B980, 1, 2000)                       = 1<br />
      /65:    read(9, 0xFAF7BC20, 512)                        = 0<br />
      /65:    close(9)                                        = 0
    </code></p></div>

    <p>Burada worker evresi bağlantıyı zamana yaymaktadır.</p>

    <div class="example"><p><code>
      /65:    close(10)                                       = 0<br />
      /65:    lwp_park(0x00000000, 0)         (uykuda...)
    </code></p></div>

    <p>Son olarak, worker evresi teslim edilen dosyayı kapattıktan sonra
    dinleyici evre tarafından başka bir bağlantı atanıncaya kadar beklemeye
    alınır.</p>

    <div class="example"><p><code>
      /67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (uykuda...)
    </code></p></div>

    <p>Bu arada, dinleyici evre bağlantıyı bir worker evresine atar atamaz
    başka bir bağlantıyı beklemeye başlar (Mevcut tüm evreler meşgulse
    dinleyici evreyi baskılayan worker MPM'nin akış denetim şemasına konu
    olur). Bu izlemede görünmüyor olsa da sonraki <code>accept(2)</code>
    çağrısı, yeni bağlantı kabul eden worker evresine paralel olarak
    yapılabilir (aşırı yük durumlarında normal olarak, bu yapılır).</p>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                       misc/relevant_standards.html                                                                        100644       0       0        21375 11256641267  13753  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Relevant Standards - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Miscellaneous Documentation</a></div><div id="page-content"><div id="preamble"><h1>Relevant Standards</h1>


    <p>This page documents all the relevant standards that the
    Apache HTTP Server follows, along with brief descriptions.</p>

    <p>In addition to the information listed below, the following resources
    should be consulted:</p>

    <ul>
      <li>
        <a href="http://purl.org/NET/http-errata">
        http://purl.org/NET/http-errata</a> - HTTP/1.1 Specification Errata
      </li>
      <li>
        <a href="http://www.rfc-editor.org/errata.html">
        http://www.rfc-editor.org/errata.html</a> - RFC Errata
      </li>
      <li>
        <a href="http://ftp.ics.uci.edu/pub/ietf/http/#RFC">
        http://ftp.ics.uci.edu/pub/ietf/http/#RFC</a> - A pre-compiled list
        of HTTP related RFCs
      </li>
    </ul>

    <div class="warning"><h3>Notice</h3>
    <p>This document is not yet complete.</p>
    </div>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#http_recommendations">HTTP Recommendations</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#html_recommendations">HTML Recommendations</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authentication">Authentication</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#language_country_codes">Language/Country Codes</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="http_recommendations" id="http_recommendations">HTTP Recommendations</a></h2>

    <p>Regardless of what modules are compiled and used, Apache as a
    basic web server complies with the following IETF recommendations:</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc1945.txt">RFC 1945</a>
      (Informational)</dt>

      <dd>The Hypertext Transfer Protocol (HTTP) is an application-level
      protocol with the lightness and speed necessary for distributed,
      collaborative, hypermedia information systems.  This documents
      HTTP/1.0.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC 2616</a>
      (Standards Track)</dt>

      <dd>The Hypertext Transfer Protocol (HTTP) is an
      application-level protocol for distributed, collaborative,
      hypermedia information systems.  This documents HTTP/1.1.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc2396.txt">RFC 2396</a>
      (Standards Track)</dt>

      <dd>A Uniform Resource Identifier (URI) is a compact string of
      characters for identifying an abstract or physical resource.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="html_recommendations" id="html_recommendations">HTML Recommendations</a></h2>

    <p>Regarding the Hypertext Markup Language, Apache complies with
    the following IETF and W3C recommendations:</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc2854.txt">RFC 2854</a>
      (Informational)</dt>

      <dd>This document summarizes the history of HTML development,
      and defines the "text/html" MIME type by pointing to the relevant
      W3C recommendations.</dd>

      <dt><a href="http://www.w3.org/TR/html401">HTML 4.01 Specification</a>
      (<a href="http://www.w3.org/MarkUp/html4-updates/errata">Errata</a>)
      </dt>

      <dd>This specification defines the HyperText Markup Language (HTML),
      the publishing language of the World Wide Web. This specification
      defines HTML 4.01, which is a subversion of HTML 4.</dd>

      <dt><a href="http://www.w3.org/TR/REC-html32">HTML 3.2 Reference
      Specification</a></dt>

      <dd>The HyperText Markup Language (HTML) is a simple markup language
      used to create hypertext documents that are portable from one
      platform to another. HTML documents are SGML documents.</dd>

      <dt><a href="http://www.w3.org/TR/xhtml11/">XHTML 1.1 -
      Module-based XHTML</a>
      (<a href="http://www.w3.org/2001/04/REC-xhtml-modularization-20010410-errata">Errata</a>)
      </dt>

      <dd>This Recommendation defines a new XHTML document type
      that is based upon the module framework and modules defined in
      Modularization of XHTML.</dd>

      <dt><a href="http://www.w3.org/TR/xhtml1">XHTML 1.0 The
      Extensible HyperText Markup Language (Second Edition)</a>
      (<a href="http://www.w3.org/2002/08/REC-xhtml1-20020801-errata">Errata</a>)
      </dt>

      <dd>This specification defines the Second Edition of XHTML 1.0,
      a reformulation of HTML 4 as an XML 1.0 application, and three
      DTDs corresponding to the ones defined by HTML 4.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="authentication" id="authentication">Authentication</a></h2>

    <p>Concerning the different methods of authentication, Apache
    follows the following IETF recommendations:</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc2617.txt">RFC 2617</a>
      (Draft standard)</dt>

      <dd>"HTTP/1.0", includes the specification for a Basic
      Access Authentication scheme.</dd>

    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="language_country_codes" id="language_country_codes">Language/Country Codes</a></h2>

    <p>The following links document ISO and other language and country
    code information:</p>

    <dl>
      <dt><a href="http://www.loc.gov/standards/iso639-2/">ISO 639-2</a></dt>

      <dd>ISO 639 provides two sets of language codes, one as a two-letter
      code set (639-1) and another as a three-letter code set (this part
      of ISO 639) for the representation of names of languages.</dd>

      <dt><a href="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html">
      ISO 3166-1</a></dt>

      <dd>These pages document the country names (official short names
      in English) in alphabetical order as given in ISO 3166-1 and the
      corresponding ISO 3166-1-alpha-2 code elements.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">BCP 47</a>
      (Best Current Practice),
      <a href="http://www.rfc-editor.org/rfc/rfc3066.txt">RFC 3066</a></dt>

      <dd>This document describes a language tag for use in cases where
      it is desired to indicate the language used in an information
      object, how to register values for use in this language tag,
      and a construct for matching such language tags.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc3282.txt">RFC 3282</a>
      (Standards Track)</dt>

      <dd>This document defines a "Content-language:" header, for use in
      cases where one desires to indicate the language of something that
      has RFC 822-like headers, like MIME body parts or Web documents,
      and an "Accept-Language:" header for use in cases where one wishes
      to indicate one's preferences with regard to language.</dd>
    </dl>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                   misc/rewriteguide.html                                                                              100644       0       0       212072 11256641267  12603  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>URL Rewriting Guide - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Miscellaneous Documentation</a></div><div id="page-content"><div id="preamble"><h1>URL Rewriting Guide</h1>



    <div class="warning">
     <p>This document is obsolete. It has been replaced with a
     new <a href="../rewrite/index.html">Rewrite Guide</a>.</p>
    </div>


    <div class="note">
      <p>Originally written by<br />
      <cite>Ralf S. Engelschall &lt;rse@apache.org&gt;</cite><br />
      December 1997</p>
    </div>

    <p>This document supplements the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    <a href="../mod/mod_rewrite.html">reference documentation</a>.
    It describes how one can use Apache's <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    to solve typical URL-based problems with which webmasters are
    commonly confronted. We give detailed descriptions on how to
    solve each problem by configuring URL rewriting rulesets.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#ToC1">Introduction to <code>mod_rewrite</code></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ToC2">Practical Solutions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#url">URL Layout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#content">Content Handling</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#access">Access Restriction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#other">Other</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ToC1" id="ToC1">Introduction to <code>mod_rewrite</code></a></h2>

    

    <p>The Apache module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> is a killer
    one, i.e. it is a really sophisticated module which provides
    a powerful way to do URL manipulations. With it you can do nearly 
    all types of URL manipulations you ever dreamed about.
    The price you have to pay is to accept complexity, because
    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>'s major drawback is that it is
    not easy to understand and use for the beginner. And even
    Apache experts sometimes discover new aspects where
    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> can help.</p>

    <p>In other words: With <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> you either
    shoot yourself in the foot the first time and never use it again
    or love it for the rest of your life because of its power.
    This paper tries to give you a few initial success events to
    avoid the first case by presenting already invented solutions
    to you.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ToC2" id="ToC2">Practical Solutions</a></h2>

    

    <p>Here come a lot of practical solutions I've either invented
    myself or collected from other people's solutions in the past.
    Feel free to learn the black magic of URL rewriting from
    these examples.</p>

    <div class="warning">ATTENTION: Depending on your server-configuration
    it can be necessary to slightly change the examples for your
    situation, e.g. adding the <code>[PT]</code> flag when
    additionally using <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> and
    <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>, etc. Or rewriting a ruleset
    to fit in <code>.htaccess</code> context instead
    of per-server context. Always try to understand what a
    particular ruleset really does before you use it. It
    avoid problems.</div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="url" id="url">URL Layout</a></h2>

    

    <h3>Canonical URLs</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>On some webservers there are more than one URL for a
          resource. Usually there are canonical URLs (which should be
          actually used and distributed) and those which are just
          shortcuts, internal ones, etc. Independent of which URL the
          user supplied with the request he should finally see the
          canonical one only.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We do an external HTTP redirect for all non-canonical
          URLs to fix them in the location view of the Browser and
          for all subsequent requests. In the example ruleset below
          we replace <code>/~user</code> by the canonical
          <code>/u/user</code> and fix a missing trailing slash for
          <code>/u/user</code>.</p>

<div class="example"><pre>
RewriteRule   ^/<strong>~</strong>([^/]+)/?(.*)    /<strong>u</strong>/$1/$2  [<strong>R</strong>]
RewriteRule   ^/u/(<strong>[^/]+</strong>)$  /$1/$2<strong>/</strong>   [<strong>R</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Canonical Hostnames</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>The goal of this rule is to force the use of a particular
        hostname, in preference to other hostnames which may be used to
        reach the same site. For example, if you wish to force the use
        of <strong>www.example.com</strong> instead of
        <strong>example.com</strong>, you might use a variant of the
        following recipe.</dd>


        <dt>Solution:</dt>

        <dd>
<div class="example"><pre>
# To force the use of 
RewriteEngine On
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://www.example.com/$1 [L,R]
</pre></div>
        </dd>
      </dl>

    

    <h3>Moved <code>DocumentRoot</code></h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Usually the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
          of the webserver directly relates to the URL "<code>/</code>".
          But often this data is not really of top-level priority, it is
          perhaps just one entity of a lot of data pools. For instance at
          our Intranet sites there are <code>/e/www/</code>
          (the homepage for WWW), <code>/e/sww/</code> (the homepage for
          the Intranet) etc. Now because the data of the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> stays at <code>/e/www/</code> we had
          to make sure that all inlined images and other stuff inside this
          data pool work for subsequent requests.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We redirect the URL <code>/</code> to
          <code>/e/www/</code>:
          </p>
         
<div class="example"><pre>
RewriteEngine on
RewriteRule   <strong>^/$</strong>  /e/www/  [<strong>R</strong>]
</pre></div>

    <p>Note that this can also be handled using the <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> directive:</p>

    <div class="example"><p><code>
    RedirectMatch ^/$ http://example.com/e/www/
    </code></p></div>
        </dd>
      </dl>

    

    <h3>Trailing Slash Problem</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Every webmaster can sing a song about the problem of
          the trailing slash on URLs referencing directories. If they
          are missing, the server dumps an error, because if you say
          <code>/~quux/foo</code> instead of <code>/~quux/foo/</code>
          then the server searches for a <em>file</em> named
          <code>foo</code>. And because this file is a directory it
          complains. Actually it tries to fix it itself in most of
          the cases, but sometimes this mechanism need to be emulated
          by you. For instance after you have done a lot of
          complicated URL rewritings to CGI scripts etc.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution to this subtle problem is to let the server
          add the trailing slash automatically. To do this
          correctly we have to use an external redirect, so the
          browser correctly requests subsequent images etc. If we
          only did a internal rewrite, this would only work for the
          directory page, but would go wrong when any images are
          included into this page with relative URLs, because the
          browser would request an in-lined object. For instance, a
          request for <code>image.gif</code> in
          <code>/~quux/foo/index.html</code> would become
          <code>/~quux/image.gif</code> without the external
          redirect!</p>

          <p>So, to do this trick we write:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo<strong>$</strong>  foo<strong>/</strong>  [<strong>R</strong>]
</pre></div>

          <p>The crazy and lazy can even do the following in the
          top-level <code>.htaccess</code> file of their homedir.
          But notice that this creates some processing
          overhead.</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  <strong>-d</strong>
RewriteRule    ^(.+<strong>[^/]</strong>)$           $1<strong>/</strong>  [R]
</pre></div>
        </dd>
      </dl>

    

    <h3>Webcluster through Homogeneous URL Layout</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>We want to create a homogeneous and consistent URL
          layout over all WWW servers on a Intranet webcluster, i.e.
          all URLs (per definition server local and thus server
          dependent!) become actually server <em>independent</em>!
          What we want is to give the WWW namespace a consistent
          server-independent layout: no URL should have to include
          any physically correct target server. The cluster itself
          should drive us automatically to the physical target
          host.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First, the knowledge of the target servers come from
          (distributed) external maps which contain information
          where our users, groups and entities stay. The have the
          form</p>

<div class="example"><pre>
user1  server_of_user1
user2  server_of_user2
:      :
</pre></div>

          <p>We put them into files <code>map.xxx-to-host</code>.
          Second we need to instruct all servers to redirect URLs
          of the forms</p>

<div class="example"><pre>
/u/user/anypath
/g/group/anypath
/e/entity/anypath
</pre></div>

          <p>to</p>

<div class="example"><pre>
http://physical-host/u/user/anypath
http://physical-host/g/group/anypath
http://physical-host/e/entity/anypath
</pre></div>

          <p>when the URL is not locally valid to a server. The
          following ruleset does this for us by the help of the map
          files (assuming that server0 is a default server which
          will be used if a user has no entry in the map):</p>

<div class="example"><pre>
RewriteEngine on

RewriteMap      user-to-host   txt:/path/to/map.user-to-host
RewriteMap     group-to-host   txt:/path/to/map.group-to-host
RewriteMap    entity-to-host   txt:/path/to/map.entity-to-host

RewriteRule   ^/u/<strong>([^/]+)</strong>/?(.*)   http://<strong>${user-to-host:$1|server0}</strong>/u/$1/$2
RewriteRule   ^/g/<strong>([^/]+)</strong>/?(.*)  http://<strong>${group-to-host:$1|server0}</strong>/g/$1/$2
RewriteRule   ^/e/<strong>([^/]+)</strong>/?(.*) http://<strong>${entity-to-host:$1|server0}</strong>/e/$1/$2

RewriteRule   ^/([uge])/([^/]+)/?$          /$1/$2/.www/
RewriteRule   ^/([uge])/([^/]+)/([^.]+.+)   /$1/$2/.www/$3\
</pre></div>
        </dd>
      </dl>

    

    <h3>Move Homedirs to Different Webserver</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Many webmasters have asked for a solution to the
          following situation: They wanted to redirect just all
          homedirs on a webserver to another webserver. They usually
          need such things when establishing a newer webserver which
          will replace the old one over time.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution is trivial with <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
          On the old webserver we just redirect all
          <code>/~user/anypath</code> URLs to
          <code>http://newserver/~user/anypath</code>.</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^/~(.+)  http://<strong>newserver</strong>/~$1  [R,L]
</pre></div>
        </dd>
      </dl>

    

    <h3>Structured Homedirs</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Some sites with thousands of users usually use a
          structured homedir layout, i.e. each homedir is in a
          subdirectory which begins for instance with the first
          character of the username. So, <code>/~foo/anypath</code>
          is <code>/home/<strong>f</strong>/foo/.www/anypath</code>
          while <code>/~bar/anypath</code> is
          <code>/home/<strong>b</strong>/bar/.www/anypath</code>.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use the following ruleset to expand the tilde URLs
          into exactly the above layout.</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*)  /home/<strong>$2</strong>/$1/.www$3
</pre></div>
        </dd>
      </dl>

    

    <h3>Filesystem Reorganization</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>This really is a hardcore example: a killer application
          which heavily uses per-directory
          <code>RewriteRules</code> to get a smooth look and feel
          on the Web while its data structure is never touched or
          adjusted. Background: <strong><em>net.sw</em></strong> is
          my archive of freely available Unix software packages,
          which I started to collect in 1992. It is both my hobby
          and job to to this, because while I'm studying computer
          science I have also worked for many years as a system and
          network administrator in my spare time. Every week I need
          some sort of software so I created a deep hierarchy of
          directories where I stored the packages:</p>

<div class="example"><pre>
drwxrwxr-x   2 netsw  users    512 Aug  3 18:39 Audio/
drwxrwxr-x   2 netsw  users    512 Jul  9 14:37 Benchmark/
drwxrwxr-x  12 netsw  users    512 Jul  9 00:34 Crypto/
drwxrwxr-x   5 netsw  users    512 Jul  9 00:41 Database/
drwxrwxr-x   4 netsw  users    512 Jul 30 19:25 Dicts/
drwxrwxr-x  10 netsw  users    512 Jul  9 01:54 Graphic/
drwxrwxr-x   5 netsw  users    512 Jul  9 01:58 Hackers/
drwxrwxr-x   8 netsw  users    512 Jul  9 03:19 InfoSys/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:21 Math/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:24 Misc/
drwxrwxr-x   9 netsw  users    512 Aug  1 16:33 Network/
drwxrwxr-x   2 netsw  users    512 Jul  9 05:53 Office/
drwxrwxr-x   7 netsw  users    512 Jul  9 09:24 SoftEng/
drwxrwxr-x   7 netsw  users    512 Jul  9 12:17 System/
drwxrwxr-x  12 netsw  users    512 Aug  3 20:15 Typesetting/
drwxrwxr-x  10 netsw  users    512 Jul  9 14:08 X11/
</pre></div>

          <p>In July 1996 I decided to make this archive public to
          the world via a nice Web interface. "Nice" means that I
          wanted to offer an interface where you can browse
          directly through the archive hierarchy. And "nice" means
          that I didn't wanted to change anything inside this
          hierarchy - not even by putting some CGI scripts at the
          top of it. Why? Because the above structure should be
          later accessible via FTP as well, and I didn't want any
          Web or CGI stuff to be there.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution has two parts: The first is a set of CGI
          scripts which create all the pages at all directory
          levels on-the-fly. I put them under
          <code>/e/netsw/.www/</code> as follows:</p>

<div class="example"><pre>
-rw-r--r--   1 netsw  users    1318 Aug  1 18:10 .wwwacl
drwxr-xr-x  18 netsw  users     512 Aug  5 15:51 DATA/
-rw-rw-rw-   1 netsw  users  372982 Aug  5 16:35 LOGFILE
-rw-r--r--   1 netsw  users     659 Aug  4 09:27 TODO
-rw-r--r--   1 netsw  users    5697 Aug  1 18:01 netsw-about.html
-rwxr-xr-x   1 netsw  users     579 Aug  2 10:33 netsw-access.pl
-rwxr-xr-x   1 netsw  users    1532 Aug  1 17:35 netsw-changes.cgi
-rwxr-xr-x   1 netsw  users    2866 Aug  5 14:49 netsw-home.cgi
drwxr-xr-x   2 netsw  users     512 Jul  8 23:47 netsw-img/
-rwxr-xr-x   1 netsw  users   24050 Aug  5 15:49 netsw-lsdir.cgi
-rwxr-xr-x   1 netsw  users    1589 Aug  3 18:43 netsw-search.cgi
-rwxr-xr-x   1 netsw  users    1885 Aug  1 17:41 netsw-tree.cgi
-rw-r--r--   1 netsw  users     234 Jul 30 16:35 netsw-unlimit.lst
</pre></div>

          <p>The <code>DATA/</code> subdirectory holds the above
          directory structure, i.e. the real
          <strong><em>net.sw</em></strong> stuff and gets
          automatically updated via <code>rdist</code> from time to
          time. The second part of the problem remains: how to link
          these two structures together into one smooth-looking URL
          tree? We want to hide the <code>DATA/</code> directory
          from the user while running the appropriate CGI scripts
          for the various URLs. Here is the solution: first I put
          the following into the per-directory configuration file
          in the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
          of the server to rewrite the announced URL
          <code>/net.sw/</code> to the internal path
          <code>/e/netsw</code>:</p>

<div class="example"><pre>
RewriteRule  ^net.sw$       net.sw/        [R]
RewriteRule  ^net.sw/(.*)$  e/netsw/$1
</pre></div>

          <p>The first rule is for requests which miss the trailing
          slash! The second rule does the real thing. And then
          comes the killer configuration which stays in the
          per-directory config file
          <code>/e/netsw/.www/.wwwacl</code>:</p>

<div class="example"><pre>
Options       ExecCGI FollowSymLinks Includes MultiViews

RewriteEngine on

#  we are reached via /net.sw/ prefix
RewriteBase   /net.sw/

#  first we rewrite the root dir to
#  the handling cgi script
RewriteRule   ^$                       netsw-home.cgi     [L]
RewriteRule   ^index\.html$            netsw-home.cgi     [L]

#  strip out the subdirs when
#  the browser requests us from perdir pages
RewriteRule   ^.+/(netsw-[^/]+/.+)$    $1                 [L]

#  and now break the rewriting for local files
RewriteRule   ^netsw-home\.cgi.*       -                  [L]
RewriteRule   ^netsw-changes\.cgi.*    -                  [L]
RewriteRule   ^netsw-search\.cgi.*     -                  [L]
RewriteRule   ^netsw-tree\.cgi$        -                  [L]
RewriteRule   ^netsw-about\.html$      -                  [L]
RewriteRule   ^netsw-img/.*$           -                  [L]

#  anything else is a subdir which gets handled
#  by another cgi script
RewriteRule   !^netsw-lsdir\.cgi.*     -                  [C]
RewriteRule   (.*)                     netsw-lsdir.cgi/$1
</pre></div>

          <p>Some hints for interpretation:</p>

          <ol>
            <li>Notice the <code>L</code> (last) flag and no
            substitution field ('<code>-</code>') in the forth part</li>

            <li>Notice the <code>!</code> (not) character and
            the <code>C</code> (chain) flag at the first rule
            in the last part</li>

            <li>Notice the catch-all pattern in the last rule</li>
          </ol>
        </dd>
      </dl>

    

    <h3>NCSA imagemap to Apache <code>mod_imagemap</code></h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>When switching from the NCSA webserver to the more
          modern Apache webserver a lot of people want a smooth
          transition. So they want pages which use their old NCSA
          <code>imagemap</code> program to work under Apache with the
          modern <code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code>. The problem is that there
          are a lot of hyperlinks around which reference the
          <code>imagemap</code> program via
          <code>/cgi-bin/imagemap/path/to/page.map</code>. Under
          Apache this has to read just
          <code>/path/to/page.map</code>.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a global rule to remove the prefix on-the-fly for
          all requests:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteRule    ^/cgi-bin/imagemap(.*)  $1  [PT]
</pre></div>
        </dd>
      </dl>

    

    <h3>Search pages in more than one directory</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Sometimes it is necessary to let the webserver search
          for pages in more than one directory. Here MultiViews or
          other techniques cannot help.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We program a explicit ruleset which searches for the
          files in the directories.</p>

<div class="example"><pre>
RewriteEngine on

#   first try to find it in custom/...
#   ...and if found stop and be happy:
RewriteCond         /your/docroot/<strong>dir1</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir1</strong>/$1  [L]

#   second try to find it in pub/...
#   ...and if found stop and be happy:
RewriteCond         /your/docroot/<strong>dir2</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir2</strong>/$1  [L]

#   else go on for other Alias or ScriptAlias directives,
#   etc.
RewriteRule   ^(.+)  -  [PT]
</pre></div>
        </dd>
      </dl>

    

    <h3>Set Environment Variables According To URL Parts</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Perhaps you want to keep status information between
          requests and use the URL to encode it. But you don't want
          to use a CGI wrapper for all pages just to strip out this
          information.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a rewrite rule to strip out the status information
          and remember it via an environment variable which can be
          later dereferenced from within XSSI or CGI. This way a
          URL <code>/foo/S=java/bar/</code> gets translated to
          <code>/foo/bar/</code> and the environment variable named
          <code>STATUS</code> is set to the value "java".</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^(.*)/<strong>S=([^/]+)</strong>/(.*)    $1/$3 [E=<strong>STATUS:$2</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Virtual User Hosts</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume that you want to provide
          <code>www.<strong>username</strong>.host.domain.com</code>
          for the homepage of username via just DNS A records to the
          same machine and without any virtualhosts on this
          machine.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>For HTTP/1.0 requests there is no solution, but for
          HTTP/1.1 requests which contain a Host: HTTP header we
          can use the following ruleset to rewrite
          <code>http://www.username.host.com/anypath</code>
          internally to <code>/home/username/anypath</code>:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{<strong>HTTP_HOST</strong>}                 ^www\.<strong>[^.]+</strong>\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.<strong>([^.]+)</strong>\.host\.com(.*) /home/<strong>$1</strong>$2
</pre></div>
        </dd>
      </dl>

    

    <h3>Redirect Homedirs For Foreigners</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>We want to redirect homedir URLs to another webserver
          <code>www.somewhere.com</code> when the requesting user
          does not stay in the local domain
          <code>ourdomain.com</code>. This is sometimes used in
          virtual host contexts.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Just a rewrite condition:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{REMOTE_HOST}  <strong>!^.+\.ourdomain\.com$</strong>
RewriteRule   ^(/~.+)         http://www.somewhere.com/$1 [R,L]
</pre></div>
        </dd>
      </dl>

    

    <h3>Redirect Failing URLs To Other Webserver</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>A typical FAQ about URL rewriting is how to redirect
          failing requests on webserver A to webserver B. Usually
          this is done via <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> CGI-scripts in Perl, but
          there is also a <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> solution.
          But notice that this performs more poorly than using an
          <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code>
          CGI-script!</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The first solution has the best performance but less
          flexibility, and is less error safe:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   /your/docroot/%{REQUEST_FILENAME} <strong>!-f</strong>
RewriteRule   ^(.+)                             http://<strong>webserverB</strong>.dom/$1
</pre></div>

          <p>The problem here is that this will only work for pages
          inside the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. While you can add more
          Conditions (for instance to also handle homedirs, etc.)
          there is better variant:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{REQUEST_URI} <strong>!-U</strong>
RewriteRule   ^(.+)          http://<strong>webserverB</strong>.dom/$1
</pre></div>

          <p>This uses the URL look-ahead feature of <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
          The result is that this will work for all types of URLs
          and is a safe way. But it does a performance impact on
          the webserver, because for every request there is one
          more internal subrequest. So, if your webserver runs on a
          powerful CPU, use this one. If it is a slow machine, use
          the first approach or better a <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> CGI-script.</p>
        </dd>
      </dl>

    

    <h3>Extended Redirection</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Sometimes we need more control (concerning the
          character escaping mechanism) of URLs on redirects.
          Usually the Apache kernels URL escape function also
          escapes anchors, i.e. URLs like "<code>url#anchor</code>".
          You cannot use this directly on redirects with
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> because the
          <code>uri_escape()</code> function of Apache
          would also escape the hash character.
          How can we redirect to such a URL?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We have to use a kludge by the use of a NPH-CGI script
          which does the redirect itself. Because here no escaping
          is done (NPH=non-parseable headers). First we introduce a
          new URL scheme <code>xredirect:</code> by the following
          per-server config-line (should be one of the last rewrite
          rules):</p>

<div class="example"><pre>
RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \
            [T=application/x-httpd-cgi,L]
</pre></div>

          <p>This forces all URLs prefixed with
          <code>xredirect:</code> to be piped through the
          <code>nph-xredirect.cgi</code> program. And this program
          just looks like:</p>

<div class="example"><pre>
#!/path/to/perl
##
##  nph-xredirect.cgi -- NPH/CGI script for extended redirects
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##

$| = 1;
$url = $ENV{'PATH_INFO'};

print "HTTP/1.0 302 Moved Temporarily\n";
print "Server: $ENV{'SERVER_SOFTWARE'}\n";
print "Location: $url\n";
print "Content-type: text/html\n";
print "\n";
print "&lt;html&gt;\n";
print "&lt;head&gt;\n";
print "&lt;title&gt;302 Moved Temporarily (EXTENDED)&lt;/title&gt;\n";
print "&lt;/head&gt;\n";
print "&lt;body&gt;\n";
print "&lt;h1&gt;Moved Temporarily (EXTENDED)&lt;/h1&gt;\n";
print "The document has moved &lt;a HREF=\"$url\"&gt;here&lt;/a&gt;.&lt;p&gt;\n";
print "&lt;/body&gt;\n";
print "&lt;/html&gt;\n";

##EOF##
</pre></div>

          <p>This provides you with the functionality to do
          redirects to all URL schemes, i.e. including the one
          which are not directly accepted by <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
          For instance you can now also redirect to
          <code>news:newsgroup</code> via</p>

<div class="example"><pre>
RewriteRule ^anyurl  xredirect:news:newsgroup
</pre></div>

          <div class="note">Notice: You have not to put <code>[R]</code> or
          <code>[R,L]</code> to the above rule because the
          <code>xredirect:</code> need to be expanded later
          by our special "pipe through" rule above.</div>
        </dd>
      </dl>

    

    <h3>Archive Access Multiplexer</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Do you know the great CPAN (Comprehensive Perl Archive
          Network) under <a href="http://www.perl.com/CPAN">http://www.perl.com/CPAN</a>?
          This does a redirect to one of several FTP servers around
          the world which carry a CPAN mirror and is approximately
          near the location of the requesting client. Actually this
          can be called an FTP access multiplexing service. While
          CPAN runs via CGI scripts, how can a similar approach
          implemented via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First we notice that from version 3.0.0
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> can
          also use the "<code>ftp:</code>" scheme on redirects.
          And second, the location approximation can be done by a
          <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
          over the top-level domain of the client.
          With a tricky chained ruleset we can use this top-level
          domain as a key to our multiplexing map.</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    multiplex                txt:/path/to/map.cxan
RewriteRule   ^/CxAN/(.*)              %{REMOTE_HOST}::$1                 [C]
RewriteRule   ^.+\.<strong>([a-zA-Z]+)</strong>::(.*)$  ${multiplex:<strong>$1</strong>|ftp.default.dom}$2  [R,L]
</pre></div>

<div class="example"><pre>
##
##  map.cxan -- Multiplexing Map for CxAN
##

de        ftp://ftp.cxan.de/CxAN/
uk        ftp://ftp.cxan.uk/CxAN/
com       ftp://ftp.cxan.com/CxAN/
 :
##EOF##
</pre></div>
        </dd>
      </dl>

    

    <h3>Time-Dependent Rewriting</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>When tricks like time-dependent content should happen a
          lot of webmasters still use CGI scripts which do for
          instance redirects to specialized pages. How can it be done
          via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>There are a lot of variables named <code>TIME_xxx</code>
          for rewrite conditions. In conjunction with the special
          lexicographic comparison patterns <code>&lt;STRING</code>,
          <code>&gt;STRING</code> and <code>=STRING</code> we can
          do time-dependent redirects:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &gt;0700
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &lt;1900
RewriteRule   ^foo\.html$             foo.day.html
RewriteRule   ^foo\.html$             foo.night.html
</pre></div>

          <p>This provides the content of <code>foo.day.html</code>
          under the URL <code>foo.html</code> from
          <code>07:00-19:00</code> and at the remaining time the
          contents of <code>foo.night.html</code>. Just a nice
          feature for a homepage...</p>
        </dd>
      </dl>

    

    <h3>Backward Compatibility for YYYY to XXXX migration</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we make URLs backward compatible (still
          existing virtually) after migrating <code>document.YYYY</code>
          to <code>document.XXXX</code>, e.g. after translating a
          bunch of <code>.html</code> files to <code>.phtml</code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We just rewrite the name to its basename and test for
          existence of the new extension. If it exists, we take
          that name, else we rewrite the URL to its original state.</p>


<div class="example"><pre>
#   backward compatibility ruleset for
#   rewriting document.html to document.phtml
#   when and only when document.phtml exists
#   but no longer document.html
RewriteEngine on
RewriteBase   /~quux/
#   parse out basename, but remember the fact
RewriteRule   ^(.*)\.html$              $1      [C,E=WasHTML:yes]
#   rewrite to document.phtml if exists
RewriteCond   %{REQUEST_FILENAME}.phtml -f
RewriteRule   ^(.*)$ $1.phtml                   [S=1]
#   else reverse the previous basename cutout
RewriteCond   %{ENV:WasHTML}            ^yes$
RewriteRule   ^(.*)$ $1.html
</pre></div>
        </dd>
      </dl>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="content" id="content">Content Handling</a></h2>

    

    <h3>From Old to New (intern)</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume we have recently renamed the page
          <code>foo.html</code> to <code>bar.html</code> and now want
          to provide the old URL for backward compatibility. Actually
          we want that users of the old URL even not recognize that
          the pages was renamed.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We rewrite the old URL to the new one internally via the
          following rule:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html
</pre></div>
        </dd>
      </dl>

    

    <h3>From Old to New (extern)</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume again that we have recently renamed the page
          <code>foo.html</code> to <code>bar.html</code> and now want
          to provide the old URL for backward compatibility. But this
          time we want that the users of the old URL get hinted to
          the new one, i.e. their browsers Location field should
          change, too.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We force a HTTP redirect to the new URL which leads to a
          change of the browsers and thus the users view:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html  [<strong>R</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Browser Dependent Content</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>At least for important top-level pages it is sometimes
          necessary to provide the optimum of browser dependent
          content, i.e. one has to provide a maximum version for the
          latest Netscape variants, a minimum version for the Lynx
          browsers and a average feature version for all others.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We cannot use content negotiation because the browsers do
          not provide their type in that form. Instead we have to
          act on the HTTP header "User-Agent". The following condig
          does the following: If the HTTP header "User-Agent"
          begins with "Mozilla/3", the page <code>foo.html</code>
          is rewritten to <code>foo.NS.html</code> and and the
          rewriting stops. If the browser is "Lynx" or "Mozilla" of
          version 1 or 2 the URL becomes <code>foo.20.html</code>.
          All other browsers receive page <code>foo.32.html</code>.
          This is done by the following ruleset:</p>

<div class="example"><pre>
RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/3</strong>.*
RewriteRule ^foo\.html$         foo.<strong>NS</strong>.html          [<strong>L</strong>]

RewriteCond %{HTTP_USER_AGENT}  ^<strong>Lynx/</strong>.*         [OR]
RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/[12]</strong>.*
RewriteRule ^foo\.html$         foo.<strong>20</strong>.html          [<strong>L</strong>]

RewriteRule ^foo\.html$         foo.<strong>32</strong>.html          [<strong>L</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Dynamic Mirror</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume there are nice webpages on remote hosts we want
          to bring into our namespace. For FTP servers we would use
          the <code>mirror</code> program which actually maintains an
          explicit up-to-date copy of the remote data on the local
          machine. For a webserver we could use the program
          <code>webcopy</code> which acts similar via HTTP. But both
          techniques have one major drawback: The local copy is
          always just as up-to-date as often we run the program. It
          would be much better if the mirror is not a static one we
          have to establish explicitly. Instead we want a dynamic
          mirror with data which gets updated automatically when
          there is need (updated data on the remote host).</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>To provide this feature we map the remote webpage or even
          the complete remote webarea to our namespace by the use
          of the <dfn>Proxy Throughput</dfn> feature
          (flag <code>[P]</code>):</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>hotsheet/</strong>(.*)$  <strong>http://www.tstimpreso.com/hotsheet/</strong>$1  [<strong>P</strong>]
</pre></div>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>usa-news\.html</strong>$   <strong>http://www.quux-corp.com/news/index.html</strong>  [<strong>P</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Reverse Dynamic Mirror</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>...</dd>

        <dt>Solution:</dt>

        <dd>
<div class="example"><pre>
RewriteEngine on
RewriteCond   /mirror/of/remotesite/$1           -U
RewriteRule   ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1
</pre></div>
        </dd>
      </dl>

    

    <h3>Retrieve Missing Data from Intranet</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>This is a tricky way of virtually running a corporate
          (external) Internet webserver
          (<code>www.quux-corp.dom</code>), while actually keeping
          and maintaining its data on a (internal) Intranet webserver
          (<code>www2.quux-corp.dom</code>) which is protected by a
          firewall. The trick is that on the external webserver we
          retrieve the requested data on-the-fly from the internal
          one.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First, we have to make sure that our firewall still
          protects the internal webserver and that only the
          external webserver is allowed to retrieve data from it.
          For a packet-filtering firewall we could for instance
          configure a firewall ruleset like the following:</p>

<div class="example"><pre>
<strong>ALLOW</strong> Host www.quux-corp.dom Port &gt;1024 --&gt; Host www2.quux-corp.dom Port <strong>80</strong>
<strong>DENY</strong>  Host *                 Port *     --&gt; Host www2.quux-corp.dom Port <strong>80</strong>
</pre></div>

          <p>Just adjust it to your actual configuration syntax.
          Now we can establish the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          rules which request the missing data in the background
          through the proxy throughput feature:</p>

<div class="example"><pre>
RewriteRule ^/~([^/]+)/?(.*)          /home/$1/.www/$2
RewriteCond %{REQUEST_FILENAME}       <strong>!-f</strong>
RewriteCond %{REQUEST_FILENAME}       <strong>!-d</strong>
RewriteRule ^/home/([^/]+)/.www/?(.*) http://<strong>www2</strong>.quux-corp.dom/~$1/pub/$2 [<strong>P</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Load Balancing</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Suppose we want to load balance the traffic to
          <code>www.foo.com</code> over <code>www[0-5].foo.com</code>
          (a total of 6 servers). How can this be done?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>There are a lot of possible solutions for this problem.
          We will discuss first a commonly known DNS-based variant
          and then the special one with <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>:</p>

          <ol>
            <li>
              <strong>DNS Round-Robin</strong>

              <p>The simplest method for load-balancing is to use
              the DNS round-robin feature of <code>BIND</code>.
              Here you just configure <code>www[0-9].foo.com</code>
              as usual in your DNS with A(address) records, e.g.</p>

<div class="example"><pre>
www0   IN  A       1.2.3.1
www1   IN  A       1.2.3.2
www2   IN  A       1.2.3.3
www3   IN  A       1.2.3.4
www4   IN  A       1.2.3.5
www5   IN  A       1.2.3.6
</pre></div>

              <p>Then you additionally add the following entry:</p>

<div class="example"><pre>
www   IN  A       1.2.3.1
www   IN  A       1.2.3.2
www   IN  A       1.2.3.3
www   IN  A       1.2.3.4
www   IN  A       1.2.3.5
</pre></div>

              <p>Now when <code>www.foo.com</code> gets
              resolved, <code>BIND</code> gives out <code>www0-www5</code>
              - but in a slightly permutated/rotated order every time.
              This way the clients are spread over the various
              servers. But notice that this not a perfect load
              balancing scheme, because DNS resolve information
              gets cached by the other nameservers on the net, so
              once a client has resolved <code>www.foo.com</code>
              to a particular <code>wwwN.foo.com</code>, all
              subsequent requests also go to this particular name
              <code>wwwN.foo.com</code>. But the final result is
              ok, because the total sum of the requests are really
              spread over the various webservers.</p>
            </li>

            <li>
              <strong>DNS Load-Balancing</strong>

              <p>A sophisticated DNS-based method for
              load-balancing is to use the program
              <code>lbnamed</code> which can be found at <a href="http://www.stanford.edu/~riepel/lbnamed/">
              http://www.stanford.edu/~riepel/lbnamed/</a>.
              It is a Perl 5 program in conjunction with auxiliary
              tools which provides a real load-balancing for
              DNS.</p>
            </li>

            <li>
              <strong>Proxy Throughput Round-Robin</strong>

              <p>In this variant we use <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
              and its proxy throughput feature. First we dedicate
              <code>www0.foo.com</code> to be actually
              <code>www.foo.com</code> by using a single</p>

<div class="example"><pre>
www    IN  CNAME   www0.foo.com.
</pre></div>

              <p>entry in the DNS. Then we convert
              <code>www0.foo.com</code> to a proxy-only server,
              i.e. we configure this machine so all arriving URLs
              are just pushed through the internal proxy to one of
              the 5 other servers (<code>www1-www5</code>). To
              accomplish this we first establish a ruleset which
              contacts a load balancing script <code>lb.pl</code>
              for all URLs.</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    lb      prg:/path/to/lb.pl
RewriteRule   ^/(.+)$ ${lb:$1}           [P,L]
</pre></div>

              <p>Then we write <code>lb.pl</code>:</p>

<div class="example"><pre>
#!/path/to/perl
##
##  lb.pl -- load balancing script
##

$| = 1;

$name   = "www";     # the hostname base
$first  = 1;         # the first server (not 0 here, because 0 is myself)
$last   = 5;         # the last server in the round-robin
$domain = "foo.dom"; # the domainname

$cnt = 0;
while (&lt;STDIN&gt;) {
    $cnt = (($cnt+1) % ($last+1-$first));
    $server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
    print "http://$server/$_";
}

##EOF##
</pre></div>

              <div class="note">A last notice: Why is this useful? Seems like
              <code>www0.foo.com</code> still is overloaded? The
              answer is yes, it is overloaded, but with plain proxy
              throughput requests, only! All SSI, CGI, ePerl, etc.
              processing is completely done on the other machines.
              This is the essential point.</div>
            </li>

            <li>
              <strong>Hardware/TCP Round-Robin</strong>

              <p>There is a hardware solution available, too. Cisco
              has a beast called LocalDirector which does a load
              balancing at the TCP/IP level. Actually this is some
              sort of a circuit level gateway in front of a
              webcluster. If you have enough money and really need
              a solution with high performance, use this one.</p>
            </li>
          </ol>
        </dd>
      </dl>

    

    <h3>New MIME-type, New Service</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>On the net there are a lot of nifty CGI programs. But
          their usage is usually boring, so a lot of webmaster
          don't use them. Even Apache's Action handler feature for
          MIME-types is only appropriate when the CGI programs
          don't need special URLs (actually <code>PATH_INFO</code>
          and <code>QUERY_STRINGS</code>) as their input. First,
          let us configure a new file type with extension
          <code>.scgi</code> (for secure CGI) which will be processed
          by the popular <code>cgiwrap</code> program. The problem
          here is that for instance we use a Homogeneous URL Layout
          (see above) a file inside the user homedirs has the URL
          <code>/u/user/foo/bar.scgi</code>. But
          <code>cgiwrap</code> needs the URL in the form
          <code>/~user/foo/bar.scgi/</code>. The following rule
          solves the problem:</p>

<div class="example"><pre>
RewriteRule ^/[uge]/<strong>([^/]+)</strong>/\.www/(.+)\.scgi(.*) ...
... /internal/cgi/user/cgiwrap/~<strong>$1</strong>/$2.scgi$3  [NS,<strong>T=application/x-http-cgi</strong>]
</pre></div>

          <p>Or assume we have some more nifty programs:
          <code>wwwlog</code> (which displays the
          <code>access.log</code> for a URL subtree and
          <code>wwwidx</code> (which runs Glimpse on a URL
          subtree). We have to provide the URL area to these
          programs so they know on which area they have to act on.
          But usually this ugly, because they are all the times
          still requested from that areas, i.e. typically we would
          run the <code>swwidx</code> program from within
          <code>/u/user/foo/</code> via hyperlink to</p>

<div class="example"><pre>
/internal/cgi/user/swwidx?i=/u/user/foo/
</pre></div>

          <p>which is ugly. Because we have to hard-code
          <strong>both</strong> the location of the area
          <strong>and</strong> the location of the CGI inside the
          hyperlink. When we have to reorganize the area, we spend a
          lot of time changing the various hyperlinks.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution here is to provide a special new URL format
          which automatically leads to the proper CGI invocation.
          We configure the following:</p>

<div class="example"><pre>
RewriteRule   ^/([uge])/([^/]+)(/?.*)/\*  /internal/cgi/user/wwwidx?i=/$1/$2$3/
RewriteRule   ^/([uge])/([^/]+)(/?.*):log /internal/cgi/user/wwwlog?f=/$1/$2$3
</pre></div>

          <p>Now the hyperlink to search at
          <code>/u/user/foo/</code> reads only</p>

<div class="example"><pre>
HREF="*"
</pre></div>

          <p>which internally gets automatically transformed to</p>

<div class="example"><pre>
/internal/cgi/user/wwwidx?i=/u/user/foo/
</pre></div>

          <p>The same approach leads to an invocation for the
          access log CGI program when the hyperlink
          <code>:log</code> gets used.</p>
        </dd>
      </dl>

    

    <h3>From Static to Dynamic</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we transform a static page
          <code>foo.html</code> into a dynamic variant
          <code>foo.cgi</code> in a seamless way, i.e. without notice
          by the browser/user.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We just rewrite the URL to the CGI-script and force the
          correct MIME-type so it gets really run as a CGI-script.
          This way a request to <code>/~quux/foo.html</code>
          internally leads to the invocation of
          <code>/~quux/foo.cgi</code>.</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo\.<strong>html</strong>$  foo.<strong>cgi</strong>  [T=<strong>application/x-httpd-cgi</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>On-the-fly Content-Regeneration</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Here comes a really esoteric feature: Dynamically
          generated but statically served pages, i.e. pages should be
          delivered as pure static pages (read from the filesystem
          and just passed through), but they have to be generated
          dynamically by the webserver if missing. This way you can
          have CGI-generated pages which are statically served unless
          one (or a cronjob) removes the static contents. Then the
          contents gets refreshed.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          This is done via the following ruleset:

<div class="example"><pre>
RewriteCond %{REQUEST_FILENAME}   <strong>!-s</strong>
RewriteRule ^page\.<strong>html</strong>$          page.<strong>cgi</strong>   [T=application/x-httpd-cgi,L]
</pre></div>

          <p>Here a request to <code>page.html</code> leads to a
          internal run of a corresponding <code>page.cgi</code> if
          <code>page.html</code> is still missing or has filesize
          null. The trick here is that <code>page.cgi</code> is a
          usual CGI script which (additionally to its <code>STDOUT</code>)
          writes its output to the file <code>page.html</code>.
          Once it was run, the server sends out the data of
          <code>page.html</code>. When the webmaster wants to force
          a refresh the contents, he just removes
          <code>page.html</code> (usually done by a cronjob).</p>
        </dd>
      </dl>

    

    <h3>Document With Autorefresh</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Wouldn't it be nice while creating a complex webpage if
          the webbrowser would automatically refresh the page every
          time we write a new version from within our editor?
          Impossible?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>No! We just combine the MIME multipart feature, the
          webserver NPH feature and the URL manipulation power of
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. First, we establish a new
          URL feature: Adding just <code>:refresh</code> to any
          URL causes this to be refreshed every time it gets
          updated on the filesystem.</p>

<div class="example"><pre>
RewriteRule   ^(/[uge]/[^/]+/?.*):refresh  /internal/cgi/apache/nph-refresh?f=$1
</pre></div>

          <p>Now when we reference the URL</p>

<div class="example"><pre>
/u/foo/bar/page.html:refresh
</pre></div>

          <p>this leads to the internal invocation of the URL</p>

<div class="example"><pre>
/internal/cgi/apache/nph-refresh?f=/u/foo/bar/page.html
</pre></div>

          <p>The only missing part is the NPH-CGI script. Although
          one would usually say "left as an exercise to the reader"
          ;-) I will provide this, too.</p>

<div class="example"><pre>
#!/sw/bin/perl
##
##  nph-refresh -- NPH/CGI script for auto refreshing pages
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##
$| = 1;

#   split the QUERY_STRING variable
@pairs = split(/&amp;/, $ENV{'QUERY_STRING'});
foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $name =~ tr/A-Z/a-z/;
    $name = 'QS_' . $name;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    eval "\$$name = \"$value\"";
}
$QS_s = 1 if ($QS_s eq '');
$QS_n = 3600 if ($QS_n eq '');
if ($QS_f eq '') {
    print "HTTP/1.0 200 OK\n";
    print "Content-type: text/html\n\n";
    print "&amp;lt;b&amp;gt;ERROR&amp;lt;/b&amp;gt;: No file given\n";
    exit(0);
}
if (! -f $QS_f) {
    print "HTTP/1.0 200 OK\n";
    print "Content-type: text/html\n\n";
    print "&amp;lt;b&amp;gt;ERROR&amp;lt;/b&amp;gt;: File $QS_f not found\n";
    exit(0);
}

sub print_http_headers_multipart_begin {
    print "HTTP/1.0 200 OK\n";
    $bound = "ThisRandomString12345";
    print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
    &amp;print_http_headers_multipart_next;
}

sub print_http_headers_multipart_next {
    print "\n--$bound\n";
}

sub print_http_headers_multipart_end {
    print "\n--$bound--\n";
}

sub displayhtml {
    local($buffer) = @_;
    $len = length($buffer);
    print "Content-type: text/html\n";
    print "Content-length: $len\n\n";
    print $buffer;
}

sub readfile {
    local($file) = @_;
    local(*FP, $size, $buffer, $bytes);
    ($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
    $size = sprintf("%d", $size);
    open(FP, "&amp;lt;$file");
    $bytes = sysread(FP, $buffer, $size);
    close(FP);
    return $buffer;
}

$buffer = &amp;readfile($QS_f);
&amp;print_http_headers_multipart_begin;
&amp;displayhtml($buffer);

sub mystat {
    local($file) = $_[0];
    local($time);

    ($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
    return $mtime;
}

$mtimeL = &amp;mystat($QS_f);
$mtime = $mtime;
for ($n = 0; $n &amp;lt; $QS_n; $n++) {
    while (1) {
        $mtime = &amp;mystat($QS_f);
        if ($mtime ne $mtimeL) {
            $mtimeL = $mtime;
            sleep(2);
            $buffer = &amp;readfile($QS_f);
            &amp;print_http_headers_multipart_next;
            &amp;displayhtml($buffer);
            sleep(5);
            $mtimeL = &amp;mystat($QS_f);
            last;
        }
        sleep($QS_s);
    }
}

&amp;print_http_headers_multipart_end;

exit(0);

##EOF##
</pre></div>
        </dd>
      </dl>

    

    <h3>Mass Virtual Hosting</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>The <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> feature of Apache is nice
          and works great when you just have a few dozens
          virtual hosts. But when you are an ISP and have hundreds of
          virtual hosts to provide this feature is not the best
          choice.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>To provide this feature we map the remote webpage or even
          the complete remote webarea to our namespace by the use
          of the <dfn>Proxy Throughput</dfn> feature (flag <code>[P]</code>):</p>

<div class="example"><pre>
##
##  vhost.map
##
www.vhost1.dom:80  /path/to/docroot/vhost1
www.vhost2.dom:80  /path/to/docroot/vhost2
     :
www.vhostN.dom:80  /path/to/docroot/vhostN
</pre></div>

<div class="example"><pre>
##
##  httpd.conf
##
    :
#   use the canonical hostname on redirects, etc.
UseCanonicalName on

    :
#   add the virtual host in front of the CLF-format
CustomLog  /path/to/access_log  "%{VHOST}e %h %l %u %t \"%r\" %&gt;s %b"
    :

#   enable the rewriting engine in the main server
RewriteEngine on

#   define two maps: one for fixing the URL and one which defines
#   the available virtual hosts with their corresponding
#   DocumentRoot.
RewriteMap    lowercase    int:tolower
RewriteMap    vhost        txt:/path/to/vhost.map

#   Now do the actual virtual host mapping
#   via a huge and complicated single rule:
#
#   1. make sure we don't map for common locations
RewriteCond   %{REQUEST_URI}  !^/commonurl1/.*
RewriteCond   %{REQUEST_URI}  !^/commonurl2/.*
    :
RewriteCond   %{REQUEST_URI}  !^/commonurlN/.*
#
#   2. make sure we have a Host header, because
#      currently our approach only supports
#      virtual hosting through this header
RewriteCond   %{HTTP_HOST}  !^$
#
#   3. lowercase the hostname
RewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$
#
#   4. lookup this hostname in vhost.map and
#      remember it only when it is a path
#      (and not "NONE" from above)
RewriteCond   ${vhost:%1}  ^(/.*)$
#
#   5. finally we can map the URL to its docroot location
#      and remember the virtual host for logging puposes
RewriteRule   ^/(.*)$   %1/$1  [E=VHOST:${lowercase:%{HTTP_HOST}}]
    :
</pre></div>
        </dd>
      </dl>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="access" id="access">Access Restriction</a></h2>

    

    <h3>Blocking of Robots</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we block a really annoying robot from
          retrieving pages of a specific webarea? A
          <code>/robots.txt</code> file containing entries of the
          "Robot Exclusion Protocol" is typically not enough to get
          rid of such a robot.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a ruleset which forbids the URLs of the webarea
          <code>/~quux/foo/arc/</code> (perhaps a very deep
          directory indexed area where the robot traversal would
          create big server load). We have to make sure that we
          forbid access only to the particular robot, i.e. just
          forbidding the host where the robot runs is not enough.
          This would block users from this host, too. We accomplish
          this by also matching the User-Agent HTTP header
          information.</p>

<div class="example"><pre>
RewriteCond %{HTTP_USER_AGENT}   ^<strong>NameOfBadRobot</strong>.*
RewriteCond %{REMOTE_ADDR}       ^<strong>123\.45\.67\.[8-9]</strong>$
RewriteRule ^<strong>/~quux/foo/arc/</strong>.+   -   [<strong>F</strong>]
</pre></div>
        </dd>
      </dl>

    

    <h3>Blocked Inline-Images</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume we have under <code>http://www.quux-corp.de/~quux/</code>
          some pages with inlined GIF graphics. These graphics are
          nice, so others directly incorporate them via hyperlinks to
          their pages. We don't like this practice because it adds
          useless traffic to our server.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>While we cannot 100% protect the images from inclusion,
          we can at least restrict the cases where the browser
          sends a HTTP Referer header.</p>

<div class="example"><pre>
RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule <strong>.*\.gif$</strong>        -                                    [F]
</pre></div>

<div class="example"><pre>
RewriteCond %{HTTP_REFERER}         !^$
RewriteCond %{HTTP_REFERER}         !.*/foo-with-gif\.html$
RewriteRule <strong>^inlined-in-foo\.gif$</strong>   -                        [F]
</pre></div>
        </dd>
      </dl>

    

    <h3>Host Deny</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we forbid a list of externally configured hosts
          from using our server?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>For Apache &gt;= 1.3b6:</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    hosts-deny  txt:/path/to/hosts.deny
RewriteCond   ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond   ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule   ^/.*  -  [F]
</pre></div>

          <p>For Apache &lt;= 1.3b6:</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    hosts-deny  txt:/path/to/hosts.deny
RewriteRule   ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1
RewriteRule   !^NOT-FOUND/.* - [F]
RewriteRule   ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1
RewriteRule   !^NOT-FOUND/.* - [F]
RewriteRule   ^NOT-FOUND/(.*)$ /$1
</pre></div>

<div class="example"><pre>
##
##  hosts.deny
##
##  ATTENTION! This is a map, not a list, even when we treat it as such.
##             mod_rewrite parses it for key/value pairs, so at least a
##             dummy value "-" must be present for each entry.
##

193.102.180.41 -
bsdti1.sdm.de  -
192.76.162.40  -
</pre></div>
        </dd>
      </dl>

    

    <h3>Proxy Deny</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we forbid a certain host or even a user of a
          special host from using the Apache proxy?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We first have to make sure <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          is below(!) <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> in the Configuration
          file when compiling the Apache webserver. This way it gets
          called <em>before</em> <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Then we
          configure the following for a host-dependent deny...</p>

<div class="example"><pre>
RewriteCond %{REMOTE_HOST} <strong>^badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>

          <p>...and this one for a user@host-dependent deny:</p>

<div class="example"><pre>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^badguy@badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>
        </dd>
      </dl>

    

    <h3>Special Authentication Variant</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Sometimes a very special authentication is needed, for
          instance a authentication which checks for a set of
          explicitly configured users. Only these should receive
          access and without explicit prompting (which would occur
          when using the Basic Auth via <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>).</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a list of rewrite conditions to exclude all except
          our friends:</p>

<div class="example"><pre>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend1@client1.quux-corp\.com$</strong>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend2</strong>@client2.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend3</strong>@client3.quux-corp\.com$
RewriteRule ^/~quux/only-for-friends/      -                                 [F]
</pre></div>
        </dd>
      </dl>

    

    <h3>Referer-based Deflector</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we program a flexible URL Deflector which acts
          on the "Referer" HTTP header and can be configured with as
          many referring pages as we like?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Use the following really tricky ruleset...</p>

<div class="example"><pre>
RewriteMap  deflector txt:/path/to/deflector.map

RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}} ^-$
RewriteRule ^.* %{HTTP_REFERER} [R,L]

RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^.* ${deflector:%{HTTP_REFERER}} [R,L]
</pre></div>

          <p>... in conjunction with a corresponding rewrite
          map:</p>

<div class="example"><pre>
##
##  deflector.map
##

http://www.badguys.com/bad/index.html    -
http://www.badguys.com/bad/index2.html   -
http://www.badguys.com/bad/index3.html   http://somewhere.com/
</pre></div>

          <p>This automatically redirects the request back to the
          referring page (when "<code>-</code>" is used as the value
          in the map) or to a specific URL (when an URL is specified
          in the map as the second argument).</p>
        </dd>
      </dl>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="other" id="other">Other</a></h2>

    

    <h3>External Rewriting Engine</h3>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>A FAQ: How can we solve the FOO/BAR/QUUX/etc.
          problem? There seems no solution by the use of
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>...</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Use an external <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>, i.e. a program which acts
          like a <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>. It is run once on startup of Apache
          receives the requested URLs on <code>STDIN</code> and has
          to put the resulting (usually rewritten) URL on
          <code>STDOUT</code> (same order!).</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    quux-map       <strong>prg:</strong>/path/to/map.quux.pl
RewriteRule   ^/~quux/(.*)$  /~quux/<strong>${quux-map:$1}</strong>
</pre></div>

<div class="example"><pre>
#!/path/to/perl

#   disable buffered I/O which would lead
#   to deadloops for the Apache server
$| = 1;

#   read URLs one per line from stdin and
#   generate substitution URL on stdout
while (&lt;&gt;) {
    s|^foo/|bar/|;
    print $_;
}
</pre></div>

          <p>This is a demonstration-only example and just rewrites
          all URLs <code>/~quux/foo/...</code> to
          <code>/~quux/bar/...</code>. Actually you can program
          whatever you like. But notice that while such maps can be
          <strong>used</strong> also by an average user, only the
          system administrator can <strong>define</strong> it.</p>
        </dd>
      </dl>

    

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      misc/security_tips.html                                                                             100644       0       0        45672 11256641267  13004  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Güvenlik İpuçları - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Çeşitli Belgeler</a></div><div id="page-content"><div id="preamble"><h1>Güvenlik İpuçları</h1>


    <p>Bir HTTP Sunucusunu ayarlarken dikkat edilmesi gerekenler ve bazı
    ipuçları.  Öneriler kısmen Apache’ye özel kısmen de genel olacaktır.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#uptodate">Güncel Tutma</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Sunucu Taraflı İçerik Yerleştirme</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgi">CGI Genelinde</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dynamic">Devingen içerikli kaynaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#systemsettings">Sistem Ayarlarının Korunması</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#watchyourlogs">Günlüklerin İzlenmesi</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="uptodate" id="uptodate">Güncel Tutma</a></h2>

    <p>Apache HTTP Sunucusu iyi bir güvenlik sicilinin yanında güvenlik
      konularıyla oldukça ilgili bir geliştirici topluluğuna sahiptir. Fakat,
      bir yazılımın dağıtılmasının ardından küçük ya da büyük bazı sorunların
      keşfedilmesi kaçınılmazdır. Bu sebeple, yazılım güncellemelerinden
      haberdar olmak oldukça önem kazanır. HTTP sunucunuzu doğrudan
      Apache’den temin ediyorsanız yeni sürümler ve güvenlik güncellemeleri
      ile ilgili bilgileri tam zamanında alabilmek için <a href="http://httpd.apache.org/lists.html#http-announce">Apache
      HTTP Sunucusu Duyuru Listesi</a>ne mutlaka üye olmanızı öneririz.
      Apache yazılımının üçüncü parti dağıtımlarını yapanların da buna benzer
      hizmetleri vardır.</p>

    <p>Şüphesiz, bir HTTP sunucusu, sunucu kodunda bir sorun olmasa da
      tehlike altındadır. Eklenti kodları, CGI betikleri hatta işletim
      sisteminden kaynaklanan sorunlar nedeniyle bu ortaya çıkabilir. Bu
      bakımdan, sisteminizdeki tüm yazılımların sorunları ve güncellemeleri
      hakkında bilgi sahibi olmalısınız.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="serverroot" id="serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></h2>
    

    <p>Normalde, Apache root kullanıcı tarafından başlatılır ve hizmetleri
      sunarken <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> yönergesi
      tarafından tanımlanan kullanıcının aidiyetinde çalışır. Root tarafından
      çalıştırılan komutlarda olduğu gibi, root olmayan kullanıcıların
      yapacakları değişikliklerden korunmak konusunda da dikkatli
      olmalısınız. Dosyaların sadece root tarafından yazılabilir olmasını
      sağlamak yeterli değildir, bu dizinler ve üst dizinler için de
      yapılmalıdır. Örneğin, sunucu kök dizininin
      <code>/usr/local/apache</code> olmasına karar verdiyseniz, bu dizini
      root olarak şöyle oluşturmanız önerilir:</p>

    <div class="example"><p><code>
      mkdir /usr/local/apache <br />
      cd /usr/local/apache <br />
      mkdir bin conf logs <br />
      chown 0 . bin conf logs <br />
      chgrp 0 . bin conf logs <br />
      chmod 755 . bin conf logs
    </code></p></div>

    <p><code>/</code>, <code>/usr</code>, <code>/usr/local</code>
      dizinlerinde sadece root tarafından değişiklik yapılabileceği kabul
      edilir. <code class="program"><a href="../programs/httpd.html">httpd</a></code> çalıştırılabilirini kurarken de benzer
      bir önlemin alındığından emin olmalısınız:</p>

    <div class="example"><p><code>
      cp httpd /usr/local/apache/bin <br />
      chown 0 /usr/local/apache/bin/httpd <br />
      chgrp 0 /usr/local/apache/bin/httpd <br />
      chmod 511 /usr/local/apache/bin/httpd
    </code></p></div>

    <p>Diğer kullanıcıların değişiklik yapabileceği bir dizin olarak bir
      <code>htdocs</code> dizini oluşturabilirsiniz. Bu dizine root
      tarafından çalıştırılabilecek dosyalar konulmamalı ve burada root
      tarafından hiçbir dosya oluşturulmamalıdır.</p>

    <p>Diğer kullanıcılara root tarafından yazılabilen ve çalıştırılabilen
      dosyalarda değişiklik yapma hakkını tanırsanız, onlara root
      kullanıcısını ele geçirilebilme hakkını da tanımış olursunuz. Örneğin,
      biri <code class="program"><a href="../programs/httpd.html">httpd</a></code> çalıştırılabilirini zararlı bir programla
      değiştirebilir ve o programı tekrar çalıştırdığınız sırada program
      yapacağını yapmış olur. Günlükleri kaydettiğiniz dizin herkes
      tarafından yazılabilen bir dizin olduğu takdirde, birileri bir günlük
      dosyasını bir sistem dosyasına sembolik bağ haline getirerek root
      kullanıcısının bu dosyaya ilgisiz şeyler yazmasına sebep olabilir.
      Günlüklerin dosyaları herkes tarafından yazılabilir olduğu takdirde ise
      birileri dosyaya yanıltıcı veriler girebilir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ssi" id="ssi">Sunucu Taraflı İçerik Yerleştirme</a></h2>
    

    <p>SSI sayfaları bir sunucu yöneticisi açısından çeşitli olası risklere
      kaynaklık edebilir.</p>

    <p>İlk risk, sunucu yükündeki artış olasılığıdır. Tüm SSI sayfaları,  SSI
      kodu içersin içermesin Apache tarafından çözümlenir. Bu küçük bir artış
      gibi görünürse de bir paylaşımlı sunucu ortamında önemli bir yük haline
      gelebilir.</p>

    <p>SSI sayfaları, CGI betikleriyle ilgili riskleri de taşır. <code>exec
      cmd</code> elemanı kullanılarak bir SSI sayfasından herhangi bir CGI
      betiğini veya bir sistem programını Apache’nin aidiyetinde olduğu
      kullanıcının yetkisiyle çalıştırmak mümkündür.</p>

    <p>SSI sayfalarının yararlı özelliklerinden yararlanırken güvenliğini de
      arttırmanın bazı yolları vardır.</p>

    <p>Sunucu yöneticisi, bir başıbozuk SSI sayfasının sebep olabileceği
      zararları bertaraf etmek için <a href="#cgi">CGI Genelinde</a>
      bölümünde açıklandığı gibi <a href="../suexec.html">suexec</a>’i etkin
      kılabilir.</p>

    <p>SSI sayfalarını <code>.html</code> veya <code>.htm</code>
      uzantılarıyla etkinleştirmek tehlikeli olabilir. Bu özellikle
      paylaşımlı ve yüksek trafikli bir sunucu ortamında önemlidir. SSI
      sayfalarını normal sayfalardan farklı olarak <code>.shtml</code> gibi
      bildik bir uzantıyla etkinleştirmek gerekir. Bu, sunucu yükünü asgari
      düzeyde tutmaya ve risk yönetimini kolaylaştırmaya yarar.</p>

    <p>Diğer bir çözüm de SSI sayfalarından betik ve program çalıştırmayı
      iptal etmektir. Bu, <code class="directive"><a href="../mod/core.html#options">Options</a></code>
      yönergesine değer olarak <code>Includes</code> yerine
      <code>IncludesNOEXEC</code> vererek sağlanır. Ancak, eğer betiklerin
      bulunduğu dizinde <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
      yönergesiyle CGI betiklerinin çalışması mümkün kılınmışsa,
      kullanıcıların <code>&lt;--#include virtual="..." --&gt;</code> ile bu
      betikleri  çalıştırabileceklerine dikkat ediniz.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi" id="cgi">CGI Genelinde</a></h2>
    

    <p>Herşeyden önce ya CGI betiğini/programını yazanlara ya da kendinizin
      CGI'deki güvenlik açıklarını (ister kasıtlı olsun ister tesadüfi)
      yakalama becerinize güvenmek zorundasınız. CGI betikleri esasen
      sisteminizdeki komutları site kullanıcılarının izinleriyle
      çalıştırırlar. Bu bakımdan dikkatle denenmedikleri takdirde oldukça
      tehlikeli olabilirler.</p>

    <p>CGI betiklerinin hepsi aynı kullanıcının aidiyetinde çalışırsa diğer
      betiklerle aralarında çelişkilerin ortaya çıkması ister istemez
      kaçınılmazdır. Örneğin A kullanıcısının B kullanıcısına garezi varsa
      bir betik yazıp B’nin CGI veritabanını silebilir. Bu gibi durumların
      ortaya çıkmaması için betiklerin farklı kullanıcıların aidiyetlerinde
      çalışmasını sağlayan ve 1.2 sürümünden beri Apache ile dağıtılan <a href="../suexec.html">suEXEC</a> diye bir program vardır. Başka bir yol
      da <a href="http://cgiwrap.sourceforge.net/">CGIWrap</a> kullanmaktır.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="nsaliasedcgi" id="nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></h2>
    

    <p>Kullanıcıların sitenin her yerinde CGI betiklerini çalıştırmalarına
      izin vermek ancak şu koşullarda mümkün olabilir:</p>

    <ul>
      <li>Kullanıcılarınızın kasıtlı ya da kasıtsız sistemi saldırıya açık
        hale getirecek betikler yazmayacaklarına tam güveniniz vardır.</li>
      <li>Sitenizin güvenliği zaten o kadar kötüdür ki, bir delik daha
        açılmasının mahzuru yoktur.</li>
      <li>Sitenizin sizden başka kullanıcısı yoktur ve sunucunuzu sizden
        başka hiç kimsenin ziyaret etmesi mümkün değildir.</li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="saliasedcgi" id="saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></h2>
    

    <p>CGI’yi belli dizinlerle sınırlamak yöneticiye bu dizinlerde daha iyi
      denetim imkanı sağlar. Bu kaçınılmaz olarak <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>’sız CGI’den çok daha
      güvenlidir, ancak bu dizinlere yazma hakkı olan kullanıcılarınız
      güvenilir kişiler olması ve site yöneticisinin de olası güvenlik
      açıklarına karşı CGI betiklerini ve programlarını denemeye istekli
      olması şartıyla.</p>

    <p>Çoğu site yöneticisi <code>ScriptAlias</code>’sız CGI yerine bu
      yaklaşımı seçer.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="dynamic" id="dynamic">Devingen içerikli kaynaklar</a></h2>
    

    <p>Sunucunun bir parçası gibi çalışan, <code>mod_php</code>,
      <code>mod_perl</code>, <code>mod_tcl</code> ve <code>mod_python</code>
      gibi gömülü betik çalıştırma seçenekleri sunucuyu çalıştıran
      kullanıcının aidiyetinde çalışırlar (<code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> yönergesine bakınız). Bu bakımdan bu betik
      yorumlayıcılar tarafından çalıştırılan betikler, sunucu kullanıcısının
      eriştiği herşeye erişebilirler. Bazı betik yorumlayıcıların getirdiği
      bazı sınırlamalar varsa da bunlara pek güvenmemek, gerekli sınamaları
      yine de yapmak gerekir.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="systemsettings" id="systemsettings">Sistem Ayarlarının Korunması</a></h2>
    

    <p>Güvenliği gerçekten sıkı tutmak istiyorsanız, kullanıcılarınızın
      yapılandırmanızdaki güvenlik ayarlarını geçersiz kılmak için
      <code>.htaccess</code> dosyalarını kullanabilmelerinin de önüne
      geçmelisiniz. Bunu yapmanın tek bir yolu vardır.</p>

    <p>Sunucu yapılandırma dosyanıza şunu yerleştirin:</p>

    <div class="example"><p><code>
      &lt;Directory /&gt;
      <span class="indent">
        AllowOverride None
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>Böylece, belli dizinlerde özellikle etkinleştirilmedikçe bütün
      dizinlerde <code>.htaccess</code> dosyalarının kullanımını engellemiş
      olursunuz.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="protectserverfiles" id="protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></h2>
    

    <p>Apache’nin ister istemez yanlış anlaşılan yönlerinden biri öntanımlı erişim özelliğidir. Yani siz aksine bir şeyler yapmadıkça, sunucu normal URL eşleme kurallarını kullanarak bir dosyayı bulabildiği sürece onu istemciye sunacaktır.</p>

    <p>Örneğin, aşağıdaki durumu ele alalım:</p>

    <div class="example"><p><code>
      # cd /; ln -s / public_html
    </code></p></div>

    <p>Ve, tarayıcınıza <code>http://localhost/~root/</code> yazın.</p>

    <p>Böylece, istemcilerin tüm dosya sisteminizi gezmelerine izin vermiş olursunuz. Bu işlemin sonuçlarının önünü almak için sunucu yapılandırma dosyanıza şunları yazın:</p>

    <div class="example"><p><code>
      &lt;Directory /&gt;
      <span class="indent">
        Order Deny,Allow <br />
        Deny from all
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>Bu suretle, dosya sisteminize öntanımlı erişimi yasaklamış olursunuz. Erişime izin vermek istediğiniz dizinler için uygun <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> bölümleri eklemeniz yeterli olacaktır. Örnek:</p>

    <div class="example"><p><code>
      &lt;Directory /usr/users/*/public_html&gt;
      <span class="indent">
        Order Deny,Allow <br />
        Allow from all
      </span>
      &lt;/Directory&gt; <br />
      &lt;Directory /usr/local/httpd&gt;
      <span class="indent">
        Order Deny,Allow <br />
        Allow from all
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p><code class="directive"><a href="../mod/core.html#location">Location</a></code> ve <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> yönergelerinin etkileşimine de özellikle önem vermelisiniz; örneğin <code>&lt;Directory /&gt;</code> erişimi yasaklarken bir <code>&lt;Location /&gt;</code> yönergesi bunu ortadan kaldırabilir.</p>

    <p><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi de size buna benzer bir oyun oynayabilir; yönergeye <code>./</code> atamasını yaparsanız, root kullanıcısı söz konusu olduğunda yukarıda ilk örnekteki durumla karşılaşırız. Apache 1.3 veya üstünü kullanıyorsanız, sunucu yapılandırma dosyanızda aşağıdaki satırın mutlaka bulunmasını öneririz:</p>

    <div class="example"><p><code>
      UserDir disabled root
    </code></p></div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="watchyourlogs" id="watchyourlogs">Günlüklerin İzlenmesi</a></h2>
    

    <p>Sunucunuzda olup biteni günü gününe bilmek istiyorsanız <a href="../logs.html">günlük dosyalarına</a> bakmalısınız. Günlük dosyaları sadece olup biteni raporlamakla kalmaz, sunucunuza ne tür saldırılar yapıldığını ve güvenlik seviyenizin yeterli olup olmadığını anlamanızı da sağlarlar.</p>

    <p>Bazı örnekler:</p>

    <div class="example"><p><code>
      grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log <br />
      grep "client denied" error_log | tail -n 10
    </code></p></div>

    <p>İlk örnek, <a href="http://online.securityfocus.com/bid/4876/info/">Apache Tomcat
    Source.JSP Bozuk İstek Bilgilerini İfşa Açığı</a>nı istismar etmeyi deneyen saldırıların sayısını verirken ikinci örnek, reddedilen son on istemciyi listeler; örnek:</p>

    <div class="example"><p><code>
      [Thu Jul 11 17:18:39 2002] [error] [client falan.filan.dom] client denied
      by server configuration: /usr/local/apache/htdocs/.htpasswd
    </code></p></div>

    <p>Gördüğünüz gibi günlük dosyaları sadece ne olup bittiğini raporlar, bu bakımdan eğer istemci <code>.htpasswd</code> dosyasına erişebiliyorsa <a href="../logs.html#accesslog">erişim günlüğünüzde</a> şuna benzer bir kayıt görürsünüz:</p>

    <div class="example"><p><code>
      falan.filan.dom - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
    </code></p></div>

    <p>Bu, sunucu yapılandırma dosyanızda aşağıdaki yapılandırmayı iptal ettiğiniz anlamına gelir:</p>

    <div class="example"><p><code>
      &lt;Files ~ "^\.ht"&gt;
      <span class="indent">
        Order allow,deny <br />
        Deny from all
      </span>
      &lt;/Files&gt;
    </code></p></div>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                      mod/beos.html                                                                                       100644       0       0        14205 11256641267  10636  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>beos - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM beos</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>This Multi-Processing Module is optimized for BeOS.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mpm_beos_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>beos.c</td></tr></table>
<h3>Summary</h3>

    <p>This Multi-Processing Module (MPM) is the default for BeOS. It uses
      a single control process which creates threads to handle requests.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxrequestsperthread">MaxRequestsPerThread</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startthreads">StartThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><a href="../bind.html">Setting which addresses and ports Apache
uses</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxRequestsPerThread" id="MaxRequestsPerThread">MaxRequestsPerThread</a> <a name="maxrequestsperthread" id="maxrequestsperthread">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limit on the number of requests that an individual thread
will handle during its life</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxRequestsPerThread <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxRequestsPerThread 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>beos</td></tr>
</table>
    <p>The <code class="directive">MaxRequestsPerThread</code> directive sets
    the limit on the number of requests that an individual server thread
    will handle. After <code class="directive">MaxRequestsPerThread</code>
    requests, the thread will die. If <code class="directive">MaxRequestsPerThread</code> is <code>0</code>, then the thread
    will never expire.</p>

    <p>Setting <code class="directive">MaxRequestsPerThread</code> to a
    non-zero limit has two beneficial effects:</p>

    <ul>
      <li>it limits the amount of memory that a thread can consume
      by (accidental) memory leakage;</li>

      <li>by giving threads a finite lifetime, it helps reduce
      the number of threads when the server load reduces.</li>
    </ul>

    <div class="note"><h3>Note:</h3>
      <p>For <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code> requests, only
      the first request is counted towards this limit. In effect, it
      changes the behavior to limit the number of <em>connections</em>
      per thread.</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                           mod/core.html                                                                                       100644       0       0       621113 11256641267  10660  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>core - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Temel Özellikleri</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Apache HTTP Sunucusunda daima mevcut olan çekirdek
 özellikler</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr></table>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#acceptfilter">AcceptFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#acceptpathinfo">AcceptPathInfo</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#accessfilename">AccessFileName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#adddefaultcharset">AddDefaultCharset</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addoutputfilterbytype">AddOutputFilterByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#allowencodedslashes">AllowEncodedSlashes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#allowoverride">AllowOverride</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authname">AuthName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authtype">AuthType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgimapextension">CGIMapExtension</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#contentdigest">ContentDigest</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#defaulttype">DefaultType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directory">&lt;Directory&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directorymatch">&lt;DirectoryMatch&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#documentroot">DocumentRoot</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enablemmap">EnableMMAP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enablesendfile">EnableSendfile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#errordocument">ErrorDocument</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#errorlog">ErrorLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#fileetag">FileETag</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#files">&lt;Files&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filesmatch">&lt;FilesMatch&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#forcetype">ForceType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#hostnamelookups">HostnameLookups</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ifdefine">&lt;IfDefine&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ifmodule">&lt;IfModule&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#include">Include</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#keepalive">KeepAlive</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#keepalivetimeout">KeepAliveTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limit">&lt;Limit&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitexcept">&lt;LimitExcept&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitinternalrecursion">LimitInternalRecursion</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitrequestbody">LimitRequestBody</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitrequestfields">LimitRequestFields</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitrequestfieldsize">LimitRequestFieldSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitrequestline">LimitRequestLine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitxmlrequestbody">LimitXMLRequestBody</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#location">&lt;Location&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#locationmatch">&lt;LocationMatch&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#loglevel">LogLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxkeepaliverequests">MaxKeepAliveRequests</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#namevirtualhost">NameVirtualHost</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#require">Require</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitcpu">RLimitCPU</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitmem">RLimitMEM</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitnproc">RLimitNPROC</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#satisfy">Satisfy</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptinterpretersource">ScriptInterpreterSource</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serveradmin">ServerAdmin</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serveralias">ServerAlias</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#servername">ServerName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serverpath">ServerPath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serverroot">ServerRoot</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serversignature">ServerSignature</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#servertokens">ServerTokens</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sethandler">SetHandler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setinputfilter">SetInputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setoutputfilter">SetOutputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#timeout">TimeOut</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#traceenable">TraceEnable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usecanonicalname">UseCanonicalName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualhost">&lt;VirtualHost&gt;</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptFilter" id="AcceptFilter">AcceptFilter</a> <a name="acceptfilter" id="acceptfilter">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir protokolün dinleyici soketleri için en iyilemeleri ayarlar
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AcceptFilter <var>protocol</var> <var>kabul_süzgeci</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.1.5 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu yönerge protokol türüne göre bir dinleme soketinin işletim
      sistemine özgü en iyilemelerini etkin kılar. İşletim sistemi çekirdeği
      için temel önerme veri alınıncaya kadar veya HTTP isteğinin tamamı
      tamponlanana kadar sunucu sürecine bir soket tahsis etmemektir.
      Şimdilik sadece <a href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&amp;sektion=9">FreeBSD’nin Kabul Süzgeçleri</a> ve Linux’un soket seçeneklerinden
      <code>TCP_DEFER_ACCEPT</code> desteklenmektedir.</p>

    <p>FreeBSD için öntanımlı değerler:</p>
    <div class="example"><p><code>
        AcceptFilter http httpready <br />
        AcceptFilter https dataready
    </code></p></div>

    <p><code>httpready</code> kabul süzgeci HTTP isteklerinin tamamını
      işletim sistemi çekirdeği seviyesinde tamponlar. Çekirdek isteğin
      tamamını alır almaz sunucuya gönderir. Ayrıntılar için <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&amp;sektion=9">accf_http(9)</a> kılavuz sayfasına bakınız. HTTPS istekleri şifrelenmiş
      olduğundan sadece <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&amp;sektion=9">accf_data(9)</a> süzgeci kullanılır.</p>

    <p>Linux’taki ön tanımlı değerler:</p>
    <div class="example"><p><code>
        AcceptFilter http data <br />
        AcceptFilter https data
    </code></p></div>

    <p>Linux’un <code>TCP_DEFER_ACCEPT</code> soket seçeneği HTTP isteklerinin
      tamponlanmasını desteklemez.  <code>none</code> dahil her değer
      dinleyici üzerinde <code>TCP_DEFER_ACCEPT</code> seçeneğini etkin kılar.
      Daha ayrıntılı bilgi edinmek için Linux
      <a href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/tcp.7.html">tcp(7)</a> kılavuz sayfasına bakınız.</p>

    <p>Argüman olarak <code>none</code> kullanımı o protokol için kabul
      süzgeçlerini iptal edecektir. Bu, <code>nntp</code> gibi, sunucunun
      baştan bir veri göndermesinin gerekli olduğu protokoller için
      kullanışlıdır:</p>
    <div class="example"><p><code>AcceptFilter nntp none</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptPathInfo" id="AcceptPathInfo">AcceptPathInfo</a> <a name="acceptpathinfo" id="acceptpathinfo">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosya isminden sonra belirtilen yol verisini kabul veya
  reddeder.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AcceptPathInfo On|Off|Default</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AcceptPathInfo Default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0.30 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu yönerge, istekte dosya isminden sonra (dizinde belirtilen dosya
      bulunmayabilir) belirtilen yol verisinin kabul edilip edilmeyeceğini
      denetler. Dosya isminden sonra belirtilen yol verisi
      <code>PATH_INFO</code> ortam değişkeninde betiklerin kullanımına
      sunulabilir.</p>

    <p>Örneğin, içinde sadece <code>here.html</code> dosyası bulunan bir
      <code>/test/</code> dizinimiz olsun. <code>/test/here.html/more</code>
      ve <code>/test/nothere.html/more</code> isteklerinin her ikisi de
      <code>PATH_INFO</code> değişkenine <code>/more</code> verisinin
      atanmasını sağlar.</p>

    <p><code class="directive">AcceptPathInfo</code> yönergesine atanabilecek argüman
      sayısı üçtür:</p>
    <dl>
    <dt><code>Off</code></dt><dd>Sadece dosya isminden sonra yol verisi
      bulunmayan istekler kabul edilir. Yukarıdaki örnekteki gibi
      <code>/test/here.html/more</code> şeklindeki istekler bir 404 (Nesne
      bulunamadı) hatasıyla sonuçlanır.</dd>

    <dt><code>On</code></dt><dd>Mevcut bir dosyaya ait bir dosya isminden
      sonra bir yol verisinin de belirtildiği istekler kabul edilir.
      Yukarıdaki örnekteki gibi <code>/test/here.html/more</code> şeklindeki
      istekler, <code>/test/here.html</code> geçerli bir dosya olduğu
      takdirde kabul edilir.</dd>

    <dt><code>Default</code></dt><dd>Dosya isminden sonra yol verisi
      belirtilen isteklerin nasıl ele alınacağı istekten sorumlu <a href="../handler.html">eylemci</a> tarafından saptanır. Normal dosyalar
      için çekirdek eylemci öntanımlı olarak <code>PATH_INFO</code>
      isteklerini reddeder. <a href="mod_cgi.html"><code>cgi-script</code></a> ve <a href="mod_isapi.html"><code>isapi-handler</code></a> gibi betiklere
      hizmet eden eylemciler ise genellikle <code>PATH_INFO</code>
      isteklerini öntanımlı olarak kabul ederler.</dd>
    </dl>

    <p><code>AcceptPathInfo</code> yönergesinin birincil amacı eylemcinin
      <code>PATH_INFO</code> istekleri hakkında verdiği kabul veya red
      kararını geçersiz kılabilmenizi sağlamaktır. Örneğin,
      <code>PATH_INFO</code>’ya dayalı olarak içerik üretmek için <a href="mod_include.html"><code>INCLUDES</code></a> gibi bir <a href="../filter.html">süzgeç</a> kullandığınız takdirde bu
      geçersizleştirme zorunlu olur. Normal dosyalar için çekirdek eylemci
      normal olarak isteği reddederdi, böyle bir durumda bir betiği etkin
      kılmak için aşağıdaki gibi bir yapılandırma kullanabilirsiniz:</p>

    <div class="example"><p><code>
      &lt;Files "mypaths.shtml"&gt;<br />
      <span class="indent">
        Options +Includes<br />
        SetOutputFilter INCLUDES<br />
        AcceptPathInfo On<br />
      </span>
      &lt;/Files&gt;
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AccessFileName" id="AccessFileName">AccessFileName</a> <a name="accessfilename" id="accessfilename">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dağıtık yapılandırma dosyasının ismi belirtilir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AccessFileName <var>filename</var> [<var>filename</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AccessFileName .htaccess</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Belge yolu üzerindeki dizinlerde dağıtık yapılandırma dosyalarının <a href="#allowoverride">bulunmasına izin verilmişse</a> sunucu bir isteği
      işlerken önce bu dizinlerde bu yönergede belirtilmiş yapılandırma
      dosyasını arar. Örnek:</p>

    <div class="example"><p><code>
      AccessFileName .acl
    </code></p></div>

    <p>Sunucu, <code>/usr/local/web/index.html</code> belgesini döndürmeden
      önce,</p>

    <div class="example"><p><code>
      &lt;Directory /&gt;<br />
      <span class="indent">
        AllowOverride None<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>şeklinde bir yapılandırma ile iptal edilmiş olmadıkça yönergeler için
      <code>/.acl</code>, <code>/usr/.acl</code>,
      <code>/usr/local/.acl</code> ve <code>/usr/local/web/.acl</code>
      dosyalarını okur.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#allowoverride">AllowOverride</a></code></li>
<li><a href="../configuring.html">Yapılandırma Dosyaları</a></li>
<li><a href="../howto/htaccess.html">.htaccess Dosyaları</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddDefaultCharset" id="AddDefaultCharset">AddDefaultCharset</a> <a name="adddefaultcharset" id="adddefaultcharset">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir yanıtın içerik türü <code>text/plain</code> veya
  <code>text/html</code> olduğunda eklenecek öntanımlı karakter kümesi
  parametresini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddDefaultCharset On|Off|<var>karküm</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AddDefaultCharset Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge, yanıtın içerik türü <code>text/plain</code> veya
      <code>text/html</code> olmak şartıyla yanıta eklenecek karakter
      kümesini (karakter kodlamasınının ismini) belirler. Bu, asıl davranış
      çoğunlukla kullanıcının istemci yapılandırmasına bağlı olmakla
      birlikte, yanıtın gövdesinde <code>META</code> elemanı vasıtasıyla
      belirtilmiş karakter kümesini geçersiz kılar. <code>AddDefaultCharset
      Off</code> şeklinde bir atama bu işlevselliği iptal eder.
      <code>AddDefaultCharset On</code> ile bu işlevsellik etkin kılınmaktan
      başka <code>iso-8859-1</code> karakter kümesini öntanımlı olarak yanıta
      eklenir. Yönergede <var>karküm</var> olarak belirtilecek değerler, MIME
      ortam türlerinde kullanmak üzere <a href="http://www.iana.org/assignments/character-sets">IANA’da kayıtlı
      karakter kümesi değerleri</a>nden biri olmalıdır. Örnek:</p>

    <div class="example"><p><code>
      AddDefaultCharset utf-8
    </code></p></div>

    <p><code class="directive">AddDefaultCharset</code> yönergesi sadece, metin
      kaynaklarının hepsinin aynı karakter kümesine sahip olduğu bilindiği
      takdirde ve her birinde ayrı ayrı karakter kümesi belirtmek çok
      külfetli olacaksa kullanılmalıdır. Buna bir örnek, CGI betikleri
      tarafından üretilmiş içeriğe sahip kaynaklara karakter kümesinin
      eklenmesidir; böyle kaynaklar çıktıda kullanıcı tarafından sağlanmış
      veri içermeleri nedeniyle karşı siteden kaynaklanan betikli
      saldırılardan zarar görebilir. Bununla birlikte, bir öntanımlı karakter
      kümesi belirtmek, tarayıcılarında “karakter kodlamasını kendiliğinden
      sapta” özelliğini etkin kılmış kullanıcıları korumayacağından daha iyi
      bir çözüm bu betikleri bu tür saldırılara karşı düzeltmek veya en iyisi
      silmektir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addcharset">AddCharset</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddOutputFilterByType" id="AddOutputFilterByType">AddOutputFilterByType</a> <a name="addoutputfilterbytype" id="addoutputfilterbytype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Belli bir MIME türüne bir çıktı süzgeci atar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddOutputFilterByType <var>süzgeç</var>[;<var>süzgeç</var>...]
<var>MIME-türü</var> [<var>MIME-türü</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>2.0.33 ve sonrasında mevcuttur; Apache 2.1 ve sonrasında
kullanımı önerilmemektedir.</td></tr>
</table>
    <p>Bu yönerge yanıtın <a class="glossarylink" href="../glossary.html#mime-type" title="sözlüğe bakınız">MIME türü</a>ne
      bağlı olarak bir istek için belli bir <a href="../filter.html">çıktı
      süzgecini</a> etkin kılar. Aşağıda açıklanan belli başlı sorunlardan
      dolayı bu yönergenin kullanımı önerilmemektedir. Aynı işlevsellik
      <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> kullanarak sağlanabilmektedir.</p>

    <p>Aşağıdaki örnekte <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> modülünce sağlanan
      <code>DEFLATE</code> süzgeci kullanılmıştır. Bu süzgeç,
      <code>text/html</code> veya <code>text/plain</code> olarak yaftalanmış
      tüm çıktıyı (ister durağan ister devingen olsun) istemciye göndermeden
      önce sıkıştırır.</p>

    <div class="example"><p><code>
      AddOutputFilterByType DEFLATE text/html text/plain
    </code></p></div>

    <p>İçeriğin birden fazla süzgeç tarafından işlenmesini isterseniz süzgeç
      isimlerini noktalı virgüllerle ayırarak belirtebilirsiniz. Ayrıca, bu
      süzgeçlerin her biri için ayrı bir
      <code class="directive">AddOutputFilterByType</code> yönergesi belirtmek de
      mümkündür.</p>

    <p>Aşağıdaki yapılandırma <code>text/html</code> olarak yaftalanmış tüm
      betik çıktılarının önce <code>INCLUDES</code> sonra da
      <code>DEFLATE</code> süzgecinden geçirilmesine sebep olur.</p>

    <div class="example"><p><code>
    &lt;Location /cgi-bin/&gt;<br />
    <span class="indent">
      Options Includes<br />
      AddOutputFilterByType INCLUDES;DEFLATE text/html<br />
    </span>
    &lt;/Location&gt;
    </code></p></div>

    <div class="warning"><h3>Ek Bilgi</h3>
      <p>Süzgeçlerin <code class="directive">AddOutputFilterByType</code> ile etkin
        kılınması bazı durumlarda kısmen bazılarında da tamamen başarısızlığa
        uğrayabilir. Örneğin, <a class="glossarylink" href="../glossary.html#mime-type" title="sözlüğe bakınız">MIME türü</a>
        saptanamadığı takdirde hiçbir süzgeç uygulanmaz ve <code class="directive"><a href="#defaulttype">DefaultType</a></code> aynı olsa bile son çare olarak
        <code class="directive"><a href="#defaulttype">DefaultType</a></code> ayarlarına geri
        dönülür.</p>

      <p>Bununla birlikte, süzgeçlerin uygulanacağına emin olmak isterseniz,
        bir kaynağa içerik türünü örneğin, <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> veya
        <code class="directive"><a href="#forcetype">ForceType</a></code> ile açıkça
        atayabilirsiniz. Ayrıca, içerik türünü (bir nph-olmayan) CGI betiği
        içinde ayarlamak da bu güvenceyi sağlar.</p>

    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code></li>
<li><code class="directive"><a href="#setoutputfilter">SetOutputFilter</a></code></li>
<li><a href="../filter.html">Süzgeçler</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AllowEncodedSlashes" id="AllowEncodedSlashes">AllowEncodedSlashes</a> <a name="allowencodedslashes" id="allowencodedslashes">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Kodlanmış dosya yolu ayracı içeren URL’lere izin verilip
  verilmeyeceğini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AllowEncodedSlashes On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AllowEncodedSlashes Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0.46 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">AllowEncodedSlashes</code> yönergesi kodlanmış dosya
      yolu ayracı içeren URL’lere izin verir (<code>/</code> yerine
      <code>%2F</code> ve ek olarak <code>\</code> için ilgili sistemlerde
      <code>%5C</code> kullanılmış URL’ler). Normalde böyle URL’ler bir 404
      (Nesne bulunamadı) hatasıyla reddedilirler.</p>

    <p><code class="directive">AllowEncodedSlashes</code> <code>On</code>, çoğunlukla
      <code>PATH_INFO</code> ile bir arada kullanıldığı zaman
      kullanışlıdır.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>Kodlanmış bölü çizgilerine izin vermek bu kodlamanın karakter olarak
        çözümleneceği anlamına gelmez. URL içindeki <code>%2F</code> veya
        <code>%5C</code>’ler (sadece ilgili sistemlerde), tıpkı normal
        URL’lere yapıldığı gibi, oldukları gibi bırakılırlar.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#acceptpathinfo">AcceptPathInfo</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AllowOverride" id="AllowOverride">AllowOverride</a> <a name="allowoverride" id="allowoverride">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>.htaccess</code> dosyalarında bulunmasına izin verilen
  yönerge türleri belirtilir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AllowOverride All|None|<var>yönerge-türü</var>
[<var>yönerge-türü</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AllowOverride All</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Sunucu <code class="directive"><a href="#accessfilename">AccessFileName</a></code> yönergesi
      ile belirtildiği şekilde bir <code>.htaccess</code> dosyasına rastlarsa
      önceki yapılandırma yönergelerinin hangilerinin geçersiz kılınmak üzere
      bildirildiğini bilmek ister.</p>

    <div class="note"><h3>Sadece &lt;Directory&gt; bölümlerinde geçerli</h3>
      <code class="directive">AllowOverride</code> yönergesi, <code class="directive"><a href="#location">&lt;Location&gt;</a></code>, <code class="directive"><a href="#directorymatch">&lt;DirectoryMatch&gt;</a></code> veya <code class="directive"><a href="#files">&lt;Files&gt;</a></code> bölümlerinde değil,
      sadece düzenli ifade içermeyen <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> bölümlerinde geçerlidir.
    </div>

    <p>Yönergeye değer olarak <code>None</code> belirtilirse <a href="#accessfilename">.htaccess</a> dosyaları tamamen yok sayılır. Bu
      durumda, sunucu dosya sisteminde rastladığı <code>.htaccess</code>
      dosyalarını okumaya dahi çalışmayacaktır.</p>

    <p>Bu yönergeye <code>All</code> değeri atanırsa, .htaccess <a href="directive-dict.html#Context">bağlamında</a> kullanılabilecek her
      yönergeye <code>.htaccess</code> dosyalarında izin verilir.</p>

    <p><code><var>yönerge-türü</var></code> olarak aşağıdaki yönerge grup
      isimlerinden biri belirtilebilir:</p>

    <dl>
      <dt>AuthConfig</dt>

      <dd><code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></code>,
        <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>,
        <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>,
        <code class="directive"><a href="#authname">AuthName</a></code>,
        <code class="directive"><a href="#authtype">AuthType</a></code>,
        <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>,
        <code class="directive"><a href="#require">Require</a></code>
        <em>ve benzeri</em> yetkilendirme yönergelerinin kullanımını izin
        verilir.</dd>

      <dt>FileInfo</dt>

      <dd>Belge türünü denetleyen <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>
        <code>Add*</code> ve <code>Remove*</code> yönergeleri,
        <code class="directive"><a href="#defaulttype">DefaultType</a></code>,
        <code class="directive"><a href="#errordocument">ErrorDocument</a></code>,
        <code class="directive"><a href="#forcetype">ForceType</a></code>,
        <code class="directive"><a href="../mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>,
        <code class="directive"><a href="#sethandler">SetHandler</a></code>,
        <code class="directive"><a href="#setinputfilter">SetInputFilter</a></code>,
        <code class="directive"><a href="#setoutputfilter">SetOutputFilter</a></code>
        yönergeleri ve benzerleri ile
        <code class="directive"><a href="../mod/mod_headers.html#header">Header</a></code>,
        <code class="directive"><a href="../mod/mod_headers.html#requestheader">RequestHeader</a></code>,
        <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>,
        <code class="directive"><a href="../mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code>,
        <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>,
        <code class="directive"><a href="../mod/mod_usertrack.html#cookieexpires">CookieExpires</a></code>,
        <code class="directive"><a href="../mod/mod_usertrack.html#cookiedomain">CookieDomain</a></code>,
        <code class="directive"><a href="../mod/mod_usertrack.html#cookiestyle">CookieStyle</a></code>,
        <code class="directive"><a href="../mod/mod_usertrack.html#cookietracking">CookieTracking</a></code>,
        <code class="directive"><a href="../mod/mod_usertrack.html#cookiename">CookieName</a></code>
        belge meta veri yönergelerinin,
        <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülündeki
        <code class="directive"><a href="../mod/mod_rewrite.html#rewriteengine">RewriteEngine</a></code>,
        <code class="directive"><a href="../mod/mod_rewrite.html#rewriteoptions">RewriteOptions</a></code>,
        <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code>,
        <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>,
        <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
        yönergelerinin ve <code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code> modülündeki
        <code class="directive"><a href="../mod/mod_actions.html#action">Action</a></code>
        yönergesinin kullanımına izin verilir.
      </dd>

      <dt>Indexes</dt>

      <dd>Dizin içeriğinin listelenmesini denetleyen
        <code class="directive"><a href="../mod/mod_autoindex.html#adddescription">AddDescription</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#addicon">AddIcon</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#addiconbyencoding">AddIconByEncoding</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#addiconbytype">AddIconByType</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#defaulticon">DefaultIcon</a></code>,
        <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#fancyindexing">FancyIndexing</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#headername">HeaderName</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#indexignore">IndexIgnore</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#indexoptions">IndexOptions</a></code>,
        <code class="directive"><a href="../mod/mod_autoindex.html#readmename">ReadmeName</a></code>
        yönergelerinin <em>ve benzerlerinin</em> kullanımına izin
        verilir.</dd>

      <dt>Limit</dt>

      <dd>Konak erişimini denetleyen
        <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>,
        <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> ve
        <code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code>
        yönergelerinin kullanımına izin verilir.</dd>

      <dt>Options[=<var>seçenek</var>,...]</dt>

      <dd>Dizinlere özgü özellikleri denetleyen
        <code class="directive"><a href="#options">Options</a></code> ve
        <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> yönergelerinin
        kullanımına izin verilir. <code class="directive"><a href="#options">Options</a></code> komutunda belirtilecek seçenekler
        bir eşit işaretinden sonra aralarına sadece virgül konarak
        (boşluksuz)  belirtilebilir.</dd>
    </dl>

    <p>Örnek:</p>

    <div class="example"><p><code>
      AllowOverride AuthConfig Indexes
    </code></p></div>

    <p>Bu örnekte <code>AuthConfig</code> ve <code>Indexes</code> grubundaki
     yönergeler bir dahili sunucu hatasına yol açmayacaktır.</p>

    <div class="note"><p>Güvenlik ve başarımı arttırmak için <code>&lt;Directory /&gt;</code>
      bloğu içinde <code>AllowOverride</code> yönergesine <code>None</code>
      dışında bir değer atamayın. Böyle yapmak yerine bir <code>.htaccess</code>
      dosyası yerleştirmeyi düşündüğünüz dizine ait bir
      <code>&lt;Directory&gt;</code> bloğu olması daha iyidir.</p></div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#accessfilename">AccessFileName</a></code></li>
<li><a href="../configuring.html">Yapılandırma Dosyaları</a></li>
<li><a href="../howto/htaccess.html">.htaccess Dosyaları</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthName" id="AuthName">AuthName</a> <a name="authname" id="authname">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>HTTP kimlik doğrulamasında kullanmak için yetki alanı ismi</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AuthName <var>yetki-alanı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge bir dizin için yetki alanı ismi belirler. Bu alan istemciye bildirilerek kullanıcının hangi kullanıcı ismini ve parolasını kullanacağını bilmesi sağlanır. <code class="directive">AuthName</code> tek bir argüman alır. Bu bakımdan eğer alan ismi boşluk karakterleri içeriyorsa ismin tırnak içine alınması gerekir. Çalışması için <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> ve
    <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> gibi yönergelerden başka <code class="directive"><a href="#authtype">AuthType</a></code> ve <code class="directive"><a href="#require">Require</a></code> yönergelerinin kendine eşlik etmesini gerektirir.</p>

   <p>Örnek:</p>

   <div class="example"><p><code>
     AuthName "Top Secret"
   </code></p></div>

    <p><code>AuthName</code> için belirtilen dizge çoğu tarayıcı tarafından parola diyaloğunda gösterilir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../howto/auth.html">Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthType" id="AuthType">AuthType</a> <a name="authtype" id="authtype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Kullanıcı kimlik doğrulaması türü</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AuthType Basic|Digest</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge bir dizin için kullanıcı kimlik doğrulaması türünü belirler. Olası kimlik doğrulama türleri <code>Basic</code> (<code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> modülüyle sağlanır) ve <code>Digest</code>’tir (<code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> modülüyle sağlanır).</p>

    <p>Kimlik doğrulamasının gerçekleşmesi için <code class="directive"><a href="#authname">AuthName</a></code> ve <code class="directive"><a href="#require">Require</a></code> yönergelerini de kullanmalısınız. Bunlara ek olarak sunucunun <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> gibi bir kimlik doğrulayıcı modülüne ve <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code> gibi bir yetkilendirme modülüne ihtiyacı vardır.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../howto/auth.html">Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CGIMapExtension" id="CGIMapExtension">CGIMapExtension</a> <a name="cgimapextension" id="cgimapextension">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>CGI betik yorumlayıcısını saptama tekniğini belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>CGIMapExtension <var>cgi-yolu</var> <var>.uzantı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Sadece NetWare’de geçerlidir.</td></tr>
</table>
    <p>Bu yönerge Apache’inin CGI bekitlerini çalıştırmak için kullanacağı
      yorumlayıcıyı nasıl bulacağını denetlemek için kullanılır. Örneğin,
      <code>CGIMapExtension sys:\foo.nlm .foo</code> satırı <code>.foo</code>
      uzantılı CGI betik dosyalarının FOO yorumlayıcıya aktarılmasını
      sağlar.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ContentDigest" id="ContentDigest">ContentDigest</a> <a name="contentdigest" id="contentdigest">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>Content-MD5</code> HTTP yanıt başlıklarının üretimini
  etkin kılar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ContentDigest On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ContentDigest Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge RFC2616 ve RFC1864’te tanımlandığı gibi
      <code>Content-MD5</code> üretimini etkin kılar.</p>

    <p>MD5, verideki herhangi bir değişikliğin ileti özetinin değişmesi
      olarak yansıması nedeniyle yüksek derecede itimat sağlayan keyfi
      uzunlukta bir "ileti özeti" (bazen "parmakizi" dendiği de olur)
      hesaplama algoritmasıdır.</p>

    <p><code>Content-MD5</code> başlığı öğe gövdesinin iki uç arasında ileti
      bütünlük sınamasının yapılabilmesini sağlar. Bir istemci veya vekil
      aktarılan öğe gövdesinde rastlantısal bir değişiklik olup olmadığını
      saptamak için bu başlığın doğruluğunu sınayabilir. Başlık örneği:</p>

    <div class="example"><p><code>
      Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
    </code></p></div>

    <p>Her istekte ileti özeti hesaplanacağından (değerler saklanmaz), bu
      yönergenin sunucunuzda başarım sorunlarına yol açacağına dikkat
      ediniz.</p>

    <p><code>Content-MD5</code>, herhangi bir modül değil, sadece
      <code class="module"><a href="../mod/core.html">core</a></code> modülü tarafından sunulan belgeler için
      gönderilir. Örneğin, SSI belgeleri CGI betikleri tarafından
      çıktılanırlar ve bayt seviyesinden çıktılar bu başlığa sahip
      olmazlar.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DefaultType" id="DefaultType">DefaultType</a> <a name="defaulttype" id="defaulttype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun MIME türünü saptayamadığı durumda göndereceği MIME
  içerik türünü belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>DefaultType <var>MIME-türü</var>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>DefaultType text/plain</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td><code>none</code> değeri Apache 2.2.7 ve sonrasında mevcuttur.
</td></tr>
</table>
    <p>Sunucudan zaman zaman kendi <a class="glossarylink" href="../glossary.html#mime-type" title="sözlüğe bakınız">MIME
      türü</a> ile uyuşmayan bir belge sunması istenir.</p>

    <p>Sunucu, belgenin içerik türünü istemciye bildirmek zorundadır. Eğer
      sunucu bunu normal yollardan saptayamazsa içerik türü olarak
      <code>DefaultType</code> ile belirtilen değeri gönderir. Örneğin, GIF
      dosyaları bulunan bir dizinde <code>.gif</code> uzantısına sahip
      olmayan dosyaların da bulunması durumunda, bu dizin için,</p>

    <div class="example"><p><code>
      DefaultType image/gif
    </code></p></div>

    <p>belirtilmesi uygun olurdu.</p>

    <p>İçerik türünün ne sunucu ne de yönetici (örneğin, vekil) tarafından
      saptanabildiği durumlarda MIME türünün yanlış belirtilmesindense tür
      belirtmemek tercih edilebilir. Bu, şöyle yapılabilir:</p>
    <div class="example"><p><code>
      DefaultType None
    </code></p></div>
    <p><code>DefaultType None</code> sadece httpd-2.2.7 ve sonrasında
      mevcuttur.</p>

    <p>Bu yönergenin sadece öntanımlı MIME-türünü sağlaması nedeniyle
      <code class="directive"><a href="#forcetype">ForceType</a></code> yönergesinden farklı
      olduğuna dikkat ediniz. Dosya ismi uzantıları dahil, tüm diğer
      MIME-türü tanımları ortam türünü tanımladığı noktada bu öntanımlı türü
      sunulan veri için geçersiz kılacaktır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Directory" id="Directory">&lt;Directory&gt;</a> <a name="directory" id="directory">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sadece ismi belirtilen dosya sistemi dizininde ve bunun
  altdizinlerinde uygulanacak bir yönerge grubunu sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;Directory <var>dizin-yolu</var>&gt;
... &lt;/Directory&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;Directory&gt;</code> ve
      <code>&lt;/Directory&gt;</code> sadece ismi belirtilen dosya sistemi
      dizininde ve bunun altdizinlerinde uygulanacak bir yönerge grubunu
      sarmalamakta kullanılır. Bir dizin bağlamında kullanılabilecek her
      yönergeye izin verilir. <var>dizin-yolu</var> bir dizinin tam yolu
      olabileceği gibi Unix kabuk tarzı bir dosya ismi eşleştirme kalıbı da
      olabilir. Kalıp dizgesinde, <code>?</code> herhangi bir tek karakterle,
      <code>*</code> herhangi bir karakter dizisiyle eşleşir. Ayrıca
      <code>[]</code> karakter aralıkları da kullanılabilir. ‘/’ karakteri
      ile hiçbir kalıp karakteri eşleşmez, bu bakımdan <code>&lt;Directory
      /*/public_html&gt;</code> ile <code>/home/user/public_html</code>
      değil, ama <code>&lt;Directory /home/*/public_html&gt;</code>
      eşleşecektir. Örnek:</p>

    <div class="example"><p><code>
      &lt;Directory /usr/local/httpd/htdocs&gt;<br />
      <span class="indent">
        Options Indexes FollowSymLinks<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <div class="note">
      <p><var>dizin-yolu</var> argümanlarını belirtirken dikkatli
        olmalısınız: Apache’nin dosyalara erişmekte kullandığı dosya sistemi
        yolu ile bire bir eşleşmelidir. Belli bir
        <code>&lt;Directory&gt;</code> dizinine uygulanan yönergeler, aynı
        dizine farklı bir yoldan, örneğin başka bir sembolik bağ üzerinden
        erişilen dosyalara uygulanmayacaktır.</p>
    </div>

    <p><code>~</code> karakterine ek olarak <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli
      ifadeler</a> de kullanılabilir. Örnek:</p>

    <div class="example"><p><code>
      &lt;Directory ~ "^/www/.*/[0-9]{3}"&gt;
    </code></p></div>

    <p>yönergesi <code>/www/</code> içindeki üç rakamdan oluşan dizinlerle
      eşleşecektir.</p>

    <p>Eğer çok sayıda (düzenli ifade olmayan) <code class="directive">&lt;Directory&gt;</code> bölümü, bir dosyayı içeren bir
      dizinle veya üst dizinlerinden biri ile eşleşiyorsa, uygulama en kısa
      eşleşmedeki yönergelerden başlayarak <a href="#accessfilename">.htaccess</a> dosyalarındaki yönergelere kadar
      genişletilir. Örneğin,</p>

    <div class="example"><p><code>
      &lt;Directory /&gt;<br />
      <span class="indent">
        AllowOverride None<br />
      </span>
      &lt;/Directory&gt;<br />
      <br />
      &lt;Directory /home/&gt;<br />
      <span class="indent">
        AllowOverride FileInfo<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>bölümleri ile <code>/home/web/dir/doc.html</code> belgesine erişirken
      şu aşamalardan geçilir:</p>

    <ul>
      <li><code>AllowOverride None</code> yönergesi uygulanır
        (<code>.htaccess</code> dosyaları iptal edilir).</li>

      <li><code>AllowOverride FileInfo</code> yönergesi uygulanır
        (<code>/home</code> dizini için).</li>

      <li>Sırayla <code>/home/.htaccess</code>,
        <code>/home/web/.htaccess</code> ve
        <code>/home/web/dir/.htaccess</code> dosyaları içindeki
        <code>FileInfo</code> yönergeleri uygulanır.</li>
    </ul>

    <p>Normal bölümlerin tamamı uygulanıncaya kadar düzenli ifadeler
      değerlendirilmez. Düzenli ifadelerin tamamı yapılandırma dosyasında
      görüldükleri sıraya göre sınanırlar. Örneğin,</p>

    <div class="example"><p><code>
      &lt;Directory ~ abc$&gt;<br />
      <span class="indent">
        # ... yönergeler burada ...<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>düzenli ifadeli bölümü, tüm normal <code class="directive">&lt;Directory&gt;</code> bölümleri ve
      <code>.htaccess</code> dosyaları uygulanıncaya kadar
      değerlendirilmeyecektir. Düzenli ifadeleri değerlendirmeye sıra gelince
      düzenli ifade <code>/home/abc/public_html/abc</code> ile eşleştirilecek
      ve buna ilişkin <code class="directive">&lt;Directory&gt;</code>
      uygulanacaktır.</p>

   <p><strong><code>&lt;Directory /&gt;</code> için öntanımlı Apache
    erişiminin  <code>Allow from All</code> oluşuna dikkat ediniz. Bunu şöyle
    bir blokla değiştirmeniz,</strong></p>

    <div class="example"><p><code>
      &lt;Directory /&gt;<br />
      <span class="indent">
        Order Deny,Allow<br />
        Deny from All<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p><strong>ve erişilebilir olmasını istediğiniz dizinleri ayrıca
      belirtmeniz önerilir. Daha ayrıntılı bilgi edinmek için <a href="../misc/security_tips.html">Güvenlik İpuçları</a> belgesine
      bakınız.</strong></p>

    <p>Dizin bölümleri <code>httpd.conf</code> dosyasında yer alır.
      <code class="directive">&lt;Directory&gt;</code> yönergeleri iç içe
      olamazlar ve bir <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> veya <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> bölümü içinde bulunamazlar.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir
  arada ele alındığının anlatıldığı <a href="../sections.html">&lt;Directory&gt;, &lt;Location&gt; ve
  &lt;Files&gt; bölümleri nasıl çalışır?</a> belgesine de bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DirectoryMatch" id="DirectoryMatch">&lt;DirectoryMatch&gt;</a> <a name="directorymatch" id="directorymatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir düzenli ifade ile eşleşen dosya sistemi dizininde ve bunun
  altdizinlerinde uygulanacak bir yönerge grubunu sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;DirectoryMatch <var>düzifd</var>&gt;
... &lt;/DirectoryMatch&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;DirectoryMatch&gt;</code> and
    <code>&lt;/DirectoryMatch&gt;</code> yönergeleri <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> gibi sadece ismi
      belirtilen dosya sistemi dizininde ve bunun altdizinlerinde uygulanacak
      bir yönerge grubunu sarmalamakta kullanılır. Tek farkla argüman olarak
      bir <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> alır. Örnek:</p>

    <div class="example"><p><code>
      &lt;DirectoryMatch "^/www/(.+/)?[0-9]{3}"&gt;
    </code></p></div>

    <p>yönergesi <code>/www/</code> içindeki üç rakamdan oluşan dizinlerle
      eşleşecektir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li>Normal <code class="directive">&lt;Directory&gt;</code>
  bölümlerindeki yönergelerle düzenli ifadelerin nasıl karıştırıldığının bir
  açıklaması için <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> yönergesine bakınız.</li>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir arada
  ele alındığının açıklaması için <a href="../sections.html">&lt;Directory&gt;, &lt;Location&gt; ve
  &lt;Files&gt; bölümleri nasıl çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DocumentRoot" id="DocumentRoot">DocumentRoot</a> <a name="documentroot" id="documentroot">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciye görünür olan ana belge ağacının kök dizinini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>DocumentRoot <var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>DocumentRoot /usr/local/apache/htdocs</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge <code class="program"><a href="../programs/httpd.html">httpd</a></code> tarafından dosyalarının sunulacağı
      dizini belirler. <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>
      benzeri bir yönerge ile eşleşmedikçe, sunucu istenen URL’deki yolu,
      belge yolu haline getirmek için belge kök dizinine ekler. Örnek:</p>

    <div class="example"><p><code>
      DocumentRoot /usr/web
    </code></p></div>

    <p>yapılandırması ile <code>http://www.my.host.com/index.html</code>
      isteği <code>/usr/web/index.html</code> ile eşleştirilir.
      <var>dizin-yolu</var> ile göreli dosya yolu belirtildiği takdirde belge
      kök dizininin <code class="directive"><a href="#serverroot">ServerRoot</a></code> ile
      belirtilen sunucu kök dizinine göre belirtildiği varsayılır.</p>

    <p><code class="directive">DocumentRoot</code> ile belirtilen dizin bir bölü
      çizgisi ile bitirilmemelidir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../urlmapping.html#documentroot">URL’lerin Dosya Sistemi
  ile Eşlenmesi</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="EnableMMAP" id="EnableMMAP">EnableMMAP</a> <a name="enablemmap" id="enablemmap">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Teslimat sırasında okunacak dosyalar için bellek eşlemeyi etkin
  kılar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>EnableMMAP On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>EnableMMAP On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge, sunucunun teslimat sırasında gerektiği takdirde bir dosya
      içeriğinin okunması için bellek eşleme kullanıp kullanmayacağını
      belirler. Öntanımlı olarak, bir isteğin yerine getirilmesi,
      <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> kullanarak sunucu tarafından çözümlenen
      bir dosyanın teslimatı sırasında olduğu gibi, bir dosya içindeki veriye
      erişilmesini gerektirdiğinde Apache, işletim sistemi tarafından
      desteklendiği takdirde dosyayı belleğe eşler.</p>

    <p>Böyle bellek eşleme kimi zaman başarım artışını beraberinde getirirse
      de bazen sorunlardan kaçınmak için bellek eşlemeyi kapatmak daha iyi
      sonuç verir:</p>

    <ul>
    <li>Bazı çok işlemcili sistemlerde bellek eşleme
      <code class="program"><a href="../programs/httpd.html">httpd</a></code>’nin başarımını düşürebilmektedir.</li>
    <li><code class="program"><a href="../programs/httpd.html">httpd</a></code> bellek eşlemli çalışırken bir dosyanın silinmesi veya
      boyutunun küçültülmesi <code class="program"><a href="../programs/httpd.html">httpd</a></code>'nin parçalama arızası vererek
      çökmesine yol açabilir.</li>
    </ul>

    <p>Bu tür sorunlardan dolayı zarar görülebilecek sunucu
      yapılandırmalarında dosya teslimatında bellek eşlemlerinin kullanımını
      şu şekilde iptal etmeniz gerekir:</p>

    <div class="example"><p><code>
      EnableMMAP Off
    </code></p></div>

    <p>Bu özellik, sadece NFS dosya sistemi üzerinde sunulan dosyaları
      kapsamak üzere şu şekilde kolayca kapatılabilir:</p>

    <div class="example"><p><code>
      &lt;Directory "/nfs-dosya-yolu"&gt;
      <span class="indent">
        EnableMMAP Off
      </span>
      &lt;/Directory&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="EnableSendfile" id="EnableSendfile">EnableSendfile</a> <a name="enablesendfile" id="enablesendfile">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosyaların istemciye tesliminde çekirdeğin dosya gönderme
  desteğinin kullanımını etkin kılar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>EnableSendfile On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>EnableSendfile On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>2.0.44 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu yönerge, dosya içeriğinin istemciye teslimi için
      <code class="program"><a href="../programs/httpd.html">httpd</a></code>’nin çekirdeğin dosya gönderme desteğini
      kullanıp kullanmayacağını belirler. Öntanımlı olarak, bir isteğin
      yerine getirilmesi, bir durağan dosyanın teslimatı sırasında olduğu
      gibi, bir dosya içindeki veriye erişilmesini gerektirmediği takdirde
      Apache, işletim sistemi tarafından destekleniyorsa dosyayı istemciye
      teslim etmek için çekirdeğin dosya gönderme özelliğini kullanır.</p>

    <p>Çekirdeğin dosya gönderme mekanizması, okuma, gönderme ve tampon
      ayırma işlemlerini ayrı ayrı yapmaktan kaçınır. Fakat bazı
      platformlarda veya bazı dosya sistemlerinde aşağıda belirtilen işlemsel
      sorunlardan kaçınmak için bu özelliği iptal etmek daha iyidir:</p>

    <ul>
    <li>Bazı platformlar,  derleme sistemince saptanamayan bozuk bir dosya
      gönderme desteğine sahiptir; özellikle eğer derleme işlemi dosya
      gönderme desteğinde sorun olmayan bir makinede yapılıp çalıştırılabilir
      dosyaların sorunlu makineye kurulduğu durumda bu saptama
      yapılamayacaktır.</li>
    <li>Linux’ta IPv6 kullanırken dosya gönderme desteği bazı ağ
      kartlarındaki TCP toplama sağlaması aktarım hatasını tetikler.</li>
    <li>Itanium üzerinde çalışan Linux’ta dosya gönderme desteği 2GB’tan
      büyük dosyalarla çalışamamaktadır.</li>
    <li><code class="directive"><a href="#documentroot">DocumentRoot</a></code> ağ dosya sistemi
      (NFS veya SMB gibi) üzerinde olduğu durumda çekirdek ağ dosyalarını
      kendi arabelleği üzerinden sunamayabilir.</li>
    </ul>

    <p>Bu sorunlardan muzdarip sunucu yapılandırmaları için bu özelliği şöyle
      iptal edebilirsiniz:</p>

    <div class="example"><p><code>
      EnableSendfile Off
    </code></p></div>

    <p>Bu özellik, sadece bir NFS veya SMB dosya sistemi üzerinde sunulan
      dosyaları kapsamak üzere şu şekilde kolayca kapatılabilir:</p>

    <div class="example"><p><code>
      &lt;Directory "/path-to-nfs-files"&gt;
      <span class="indent">
        EnableSendfile Off
      </span>
      &lt;/Directory&gt;
    </code></p></div>
    <p><code class="directive">EnableSendfile</code> yönergesinin .htaccess ve diziniçi
      yapılandırmalarının <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> tarafından
      desteklenmediğini lütfen aklınızdan çıkarmayın.
      <code class="directive">EnableSendfile</code> yönergesinin sadece küresel
      tanımları hesaba katılır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ErrorDocument" id="ErrorDocument">ErrorDocument</a> <a name="errordocument" id="errordocument">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir hata durumunda sunucunun istemciye ne döndüreceğini
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ErrorDocument <var>hata-kodu</var> <var>belge</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Metin iletilerini tırnak içine alma sözdizimi Apache 2.0’da
  farklıdır.</td></tr>
</table>
    <p>Bir sorun çıktığında veya hata oluştuğunda Apache şu dört işlemden
      birini yapacak şekilde yapılandırılabilir:</p>

    <ol>
      <li>Yerleşik bir hata iletisi çıktılanır.</li>

      <li>Özel bir ileti çıktılanır.</li>

      <li>Sorunu/hatayı işleyecek yerel bir <var>URL-yoluna</var> yönlendirme
        yapılır.</li>

      <li>Sorunu/hatayı işleyecek harici bir <var>URL-yoluna</var>
        yönlendirme yapılır.</li>
    </ol>

    <p>İlk seçenek öntanımlıdır. Diğer üç seçenek
      <code class="directive">ErrorDocument</code> yönergesinin argümanları (hata
      kodundan sonra bir URL veya hata iletisi) ile belirtilir. Apache bazı
      durumlarda sorun/hata ile ilgili ek bilgi verecektir.</p>

    <p>URL’ler yerel yollarda (<code class="directive"><a href="#documentroot">DocumentRoot</a></code>’a göre) bir bölü çizgisi (/) ile
      başlatılabileceği gibi istemci tarafından çözümlenecek tam bir URL
      şeklinde de belirtilebilir. Bunlar yerine, tarayıcıda gösterilmek üzere
      bir ileti de belirtilebilir. Örnekler:</p>

    <div class="example"><p><code>
      ErrorDocument 500 http://hata.meselae.dom/cgi-bin/dnmci<br />
      ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
      ErrorDocument 401 /subscription_info.html<br />
      ErrorDocument 403 "Kusura bakmayın, bugün hizmet veremiyoruz."
    </code></p></div>

    <p>Bunlardan başka, Apache’nin kendi hata iletilerinin kullanılacağı özel
      <code>default</code> değeri ile belirtilebilir. Normal şartlar altında
      gerekmese de, bir şey belirtilmediği takdirde mevcut bir
      <code class="directive">ErrorDocument</code> yönergesini miras alan
      yapılandırmalarda Apache’nin kendi hata iletilerinin kullanımı
      <code>default</code> değeri açıkça belirtilerek örnekteki gibi
      zorlanabilir:</p>

    <div class="example"><p><code>
      ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br />
      &lt;Directory /web/docs&gt;<br />
      <span class="indent">
        ErrorDocument 404 default<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p><code class="directive">ErrorDocument</code> yönergesinde bir uzak URL (önünde
      <code>http</code> bulunan bir yol) belirtildiğinde, belge aynı sunucuda
      olsa bile, Apache’nin istemciye belgeyi bulacağı yer için bir
      yönlendirme göndereceğine dikkat ediniz. Bunun bazı istenmeyen etkileri
      vardır; en önemlilerinden biri istemcinin hata kodu yerine bir
      yönlendirme durum kodu alacak olmasıdır. Bu, bir URL’nin geçerliliğini
      durum koduna göre saptayan istemciler veya robotlar için yanıltıcı
      olacaktır. Buna ek olarak, <code>ErrorDocument 401</code> için bir uzak
      URL belirttiğiniz durumda istemci 401 durum kodunu almayacağı için
      kullanıcıdan parola isteğinde bulunamayacaktır. Bu bakımdan,
      <strong>ihtiyaç duyduğunuz takdirde, <code>ErrorDocument 401</code>
      yönergesine yerel bir belge belirtmelisiniz.</strong></p>

    <p>Sunucunun ürettiği hata iletileri "çok kısa" olduğu takdirde,
      Microsoft Internet Explorer (MSIE) öntanımlı olarak bu hata iletilerini
      yoksayar ve bunun yerine kendi "kullanıcı dostu" hata iletilerini
      kullanır. "Çok kısa" eşiği duruma göre değişmekle birlikte, genellikle,
      hata iletileriniz 512 bayttan büyük olduğu takdirde MSIE kendi hata
      iletileri yerine sunucunun ürettiği hata iletilerini gösterecektir. Bu
      konuda daha fazla bilgiyi <a href="http://support.microsoft.com/default.aspx?scid=kb;tr-tr;Q294807">Q294807</a> kodlu Microsoft Knowledge Base makalesinde
      bulabilirsiniz.</p>

    <p>Çoğu yerleşik hata iletisi özel iletilerle değiştirilebilse de bazı
      durumlarda <code class="directive"><a href="#errordocument">ErrorDocument</a></code> ile ne
      belirtildiğine bakılmaksızın yerleşik hata iletileri kullanılır.
      Özellikle, bozuk bir istek saptandığında normal istek işleme hemen
      devre dışı bırakılır ve yerleşik hata iletisi döndürülür. Bu, hatalı
      istekler yaparak güvenlik sorunlarına yol açılmak istenmesi
      durumlarında gereklidir.</p>

    <p>2.0 öncesi sürümlerde iletiler bir çift çift-tırnak içine alınmayıp,
      tek bir çift-tırnak ile başlatılması yeterli olurdu.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../custom-error.html">Özel Hata Yanıtları</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ErrorLog" id="ErrorLog">ErrorLog</a> <a name="errorlog" id="errorlog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun hata günlüğünü tutacağı yeri belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code> ErrorLog <var>dosya-yolu</var>|syslog[:<var>oluşum</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows ve
  OS/2)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ErrorLog</code> yönergesi sunucunun saptadığı hataları
      kaydedeceği dosyanın ismini belirtmek için kullanılır.
      <var>dosya-yolu</var> ile göreli dosya yolu belirtildiği takdirde
      dizininin <code class="directive"><a href="#serverroot">ServerRoot</a></code> ile
      belirtilen sunucu kök dizinine göre belirtildiği varsayılır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
    ErrorLog /var/log/httpd/error_log
    </code></p></div>

    <p><var>dosya-yolu</var> bir boru imi (|) ile başlatıldığı takdirde hata
      iletilerinin hata günlüğünü işleme sokacak komuta borulanacağı
      varsayılır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
    ErrorLog "|/usr/local/bin/httpd_errors"
    </code></p></div>

    <p>Dosya adı yerine <code>syslog</code> kullanılırsa, sistem desteklediği
      takdirde günlük kaydı syslogd(8) üzerinden yürütülür. Öntanımlı olarak
      <code>local7</code> syslog oluşumu kullanılır. Bunu
      <code>syslog:<var>oluşum</var></code> sözdizimini kullanarak
      değiştirebilirsiniz. Buradaki <code><var>oluşum</var></code>
      syslog.conf(5) kılavuz sayfasında belirtilen oluşum isimlerinden biri
      olabilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
    ErrorLog syslog:user
    </code></p></div>

    <p>GÜVENLİK: Günlük dosyalarının saklandığı dizin, sunucuyu başlatan
      kullanıcı dışındakiler tarafından yazılabilir olduğu takdirde
      güvenliğinizin nasıl tehlikeye gireceği <a href="../misc/security_tips.html#serverroot">güvenlik ipuçları</a>
      belgesinde ayrıntılı olarak açıklanmıştır.</p>
    <div class="warning"><h3>Ek Bilgi</h3>
      <p>Unix-dışı platformlarda dosya yolunu girerken, platform ters bölü
        çizgilerini desteklese bile normal bölü çizgileri kullanmaya özen
        göstermelisiniz. Genel olarak, dosya yollarını belirtirken
        yapılandırma dosyası boyunca normal bölü çizgisi kullanmak her zaman
        daha iyidir.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#loglevel">LogLevel</a></code></li>
<li><a href="../logs.html">Apache Günlük Dosyaları</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FileETag" id="FileETag">FileETag</a> <a name="fileetag" id="fileetag">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>ETag</code> HTTP yanıt başlığını oluşturmakta kullanılacak
  dosya özniteliklerini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>FileETag <var>bileşen</var> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>FileETag INode MTime Size</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">FileETag</code> yönergesi, belge bir dosyaya dayandığı
      takdirde <code>ETag</code> (Entity Tag - öğe etiketi kısaltması) yanıt
      başlığı alanını oluşturmakta kullanılacak dosya özniteliklerini
      yapılandırır. (<code>ETag</code> değeri, ağ band genişliğinden kazanmak
      için arabellek yönetiminde kullanılır.) Apache 1.3.22 ve öncesinde
      <code>ETag</code> değeri <em>daima</em>  dosyanın düğümü, boyutu ve son
      değişiklik zamanından (mtime) oluşurdu. <code class="directive">FileETag</code>
      yönergesi ne kullanılması gerektiğini belirleyebilmenizi sağlar. Değer
      olarak belirtilebilecek anahtar sözcükler şunlardır:</p>

    <dl>
     <dt><strong>INode</strong></dt>
     <dd>Dosyanın düğüm numarası hesaba katılır.</dd>
     <dt><strong>MTime</strong></dt>
     <dd>Dosyanın son değişiklik tarih ve saati dahil edilir.</dd>
     <dt><strong>Size</strong></dt>
     <dd>Dosyanın bayt cinsinden uzunluğu dahil edilir.</dd>
     <dt><strong>All</strong></dt>
     <dd>Olası tüm alanlar kullanılır. Bu şuna eşdeğerdir:
         <div class="example"><p><code>FileETag INode MTime Size</code></p></div></dd>
     <dt><strong>None</strong></dt>
     <dd>Bir belge dosyasıyla sunulsa bile yanıta hiçbir <code>ETag</code>
      alanı dahil edilmez.</dd>
    </dl>

    <p>Öntanımlı ayarları miras alıp bunların kapsamını genişletmek/daraltmak
      için <code>INode</code>, <code>MTime</code> ve <code>Size</code>
      anahtar sözcüklerinin önüne <code>+</code> veya <code>-</code> imi
      konabilir. Bu imlerin bulunmadığı bir anahtar sözcüğün varlığı halinde
      hiçbir değer miras alınmaz.</p>

    <p>Eğer bir dizinin yapılandırması
      <code>FileETag&nbsp;INode&nbsp;MTime&nbsp;Size</code> ve alt dizini
      <code>FileETag&nbsp;-INode</code> içeriyorsa bu alt dizinin (ve bir
      geçersizleştirme olmadığı takdirde onun alt dizinlerinin) ayarları
      <code>FileETag&nbsp;MTime&nbsp;Size</code> yapılandırmasına eşdeğer
      olacaktır.</p>
    <div class="warning"><h3>Uyarı</h3>
      WebDAV’ın etkin olduğu yerlerde veya dizinlerde saklama alanı sağlayıcı
      olarak <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> kullanılıyorsa öntanımlı ayarları
      değiştirmeyiniz. <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code>, koşullu isteklerde
      <code>ETag</code> karşılaştırmaları yapabilmek için
      <code>INode&nbsp;MTime&nbsp;Size</code> yapılandırmasını kullanır. Eğer
      <code>ETag</code> ayarı <code class="directive">FileETag</code> yönergesi
      kullanılarak değiştirilirse koşullu istekler gerektiği gibi yerine
      getirilemez.
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Files" id="Files">&lt;Files&gt;</a> <a name="files" id="files">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosya isimleriyle eşleşme halinde uygulanacak yönergeleri
  içerir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;Files <var>dosya-adı</var>&gt; ... &lt;/Files&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;Files&gt;</code> yönergesi, içerdiği
      yönergelerin etki alanını dosya isimlerine göre sınırlandırır.
      <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> ve
      <code class="directive"><a href="#location">&lt;Location&gt;</a></code> bölümleri
      ile karşılaştırılabilir. Bir <code>&lt;/Files&gt;</code> yönergesi ile
      sonlandırılması gerekir. Bu bölüm içinde belirtilen yönergeler,
      <code class="directive">&lt;Files&gt;</code> yönergesinde belirtilen
      <var>dosya-adı</var>’nın son bileşeniyle (dizinler atıldıktan sonda
      kalan dosya ismi) eşleşen nesnelere uygulanır. <code class="directive">&lt;Files&gt;</code> bölümleri yapılandırma dosyasında,
      <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> bölümleri
      ve <code>.htaccess</code> dosyaları okunduktan sonra fakat <code class="directive"><a href="#location">&lt;Location&gt;</a></code> yönergelerinden önce
      göründükleri sıraya göre işleme sokulurlar. <code class="directive">&lt;Files&gt;</code> bölümlerinin <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> bölümlerinin içinde uygulama
      alanını sınırlamak amacıyla kullanılabileceğine dikkat ediniz.</p>

    <p><var>dosya-adı</var> argümanının bir dosya ismi veya bir dosya ismi
      kalıbı içermesi gerekir. Bir dosya ismi kalıbındaki her <code>?</code>
      imi bir karakterle eşleştirilirken <code>*</code> imi karakter dizileri
      ile eşleştirilir. <code>~</code> imine ek olarak <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifadeler</a> de kullanılabilir. Örneğin</p>

    <div class="example"><p><code>
      &lt;Files ~ "\.(gif|jpe?g|png)$"&gt;
    </code></p></div>

    <p>satırı en bilinen resim dosyası biçimleriyle eşleşecektir. Bunun
      yerine <code class="directive"><a href="#filesmatch">&lt;FilesMatch&gt;</a></code>
      yönergesi de tercih edilebilirdi.</p>

    <p><code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> ve
      <code class="directive"><a href="#location">&lt;Location&gt;</a></code>
      bölümlerinin aksine, <code class="directive">&lt;Files&gt;</code>
      bölümleri <code>.htaccess</code> dosyaları içinde kullanılabilir. Bu
      sayede kullanıcıların kendi dosyalarına erişimi dosya seviyesinde
      denetlemelerine imkan sağlanmış olur.</p>


<h3>Ayrıca bakınız:</h3>
<ul>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir
  arada ele alındığının açıklaması için <a href="../sections.html">
  &lt;Directory&gt;, &lt;Location&gt; ve &lt;Files&gt; bölümleri nasıl
  çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilesMatch" id="FilesMatch">&lt;FilesMatch&gt;</a> <a name="filesmatch" id="filesmatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Düzenli ifadelerin dosya isimleriyle eşleşmesi halinde
  uygulanacak yönergeleri içerir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;FilesMatch <var>düzifd</var>&gt; ... &lt;/FilesMatch&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;FilesMatch&gt;</code> yönergesi, içerdiği
      yönergelerin etki alanını <code class="directive"><a href="#files">&lt;Files&gt;</a></code> yönergesinin yaptığı gibi dosya
      isimlerine göre sınırlandırır. Ancak, argüman olarak bir <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> kabul eder. Örneğin</p>

    <div class="example"><p><code>
      &lt;FilesMatch "\.(gif|jpe?g|png)$"&gt;
    </code></p></div>

    <p>satırı en bilinen resim dosyası biçimleriyle eşleşecektir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir
  arada ele alındığının açıklaması için <a href="../sections.html">
  &lt;Directory&gt;, &lt;Location&gt; ve &lt;Files&gt; bölümleri nasıl
  çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ForceType" id="ForceType">ForceType</a> <a name="forcetype" id="forcetype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bütün dosyaların belirtilen MIME içerik türüyle sunulmasına
  sebep olur.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ForceType <var>MIME-türü</var>|None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0’da core modülüne taşındı.</td></tr>
</table>
    <p>Bu yönerge, bir <code>.htaccess</code> dosyası veya bir
      <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code>,
      <code class="directive"><a href="#location">&lt;Location&gt;</a></code> veya
      <code class="directive"><a href="#files">&lt;Files&gt;</a></code> bölümüne
      yerleştirildiği zaman, eşleşen tüm dosyaların <var>MIME-türü</var> ile
      belirtilen içerik türüyle sunulmasına sebep olur. Örneğin, altında
      sadece GIF dosyaları bulunan bir dizininiz varsa ve bunlara tek tek
      <code>.gif</code> uzantısı belirtmek istemiyorsanız şu yapılandırmayı
      kullanabilirsiniz:</p>

    <div class="example"><p><code>
      ForceType image/gif
    </code></p></div>

    <p><code class="directive"><a href="#defaulttype">DefaultType</a></code> yönergesinin tersine
      bu yönerge ortam türünü betimleyen tüm MIME-türü tanımlarını geçersiz
      kılar.</p>

    <p>Mevcut <code class="directive">ForceType</code> ayarlarını <code>None</code>
      değeriyle geçersiz kılabilirsiniz:</p>

    <div class="example"><p><code>
      # tüm dosyaların image/gif olarak sunulması için:<br />
      &lt;Location /images&gt;<br />
        <span class="indent">
          ForceType image/gif<br />
        </span>
      &lt;/Location&gt;<br />
      <br />
      # normal MIME-türüne geri dönmek için:<br />
      &lt;Location /images/mixed&gt;<br />
      <span class="indent">
        ForceType None<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="HostnameLookups" id="HostnameLookups">HostnameLookups</a> <a name="hostnamelookups" id="hostnamelookups">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemci IP adresleri üzerinde DNS sorgularını etkin kılar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>HostnameLookups On|Off|Double</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>HostnameLookups Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge oturum açabilecek konak isimlerini tespit edebilmek için
      DNS sorgularını etkin kılar (ve sonuç <code>REMOTE_HOST</code>’ta
      belirtilerek CGI/SSI’lere aktarılır). <code>Double</code> değeri
      sorgunun çift yönlü yapılacağını belirtir. Yani, bir tersine sorgunun
      ardından bir normal sorgu yapılır. Normal sorguda elde edilen IP
      adreslerinden birinin istek yapan IP adresi ile eşleşmesi gerekir.
      ("tcpwrappers" terminolojisinde buna <code>PARANOID</code> adı
      verilir.)</p>

    <p>Konak ismine göre erişimi denetlemek için
      <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> kullanıldığında, nasıl bir ayar
      yapıldığına bakılmaksızın, çift yönlü sorgulama yapılır. Bu güvenlik
      için gereklidir. Bunun dışında açıkça <code>HostnameLookups
      Double</code> belirtilmedikçe genellikle çift yönlü sorgulama yapılmaz.
      Örneğin, sadece  <code>HostnameLookups On</code> belirtilmiş ve konak
      ismi kısıtlamalarıyla korunmuş bir nesne için bir istek yapılmışsa çift
      yönlü sorgunun başarısına bakılmaksızın CGI’lere
      <code>REMOTE_HOST</code> olarak tek yönlü sorgu sonucu aktarılır.</p>

    <p>Gerçekte ters yönlü sorguya gerek duyulmayan sitelerde ağ trafiğini
      yormamak için <code>Off</code>, öntanımlı değerdir. Ayrıca, son
      kullanıcıların DNS sorguları nedeniyle gereksiz yere bir beklemeye
      maruz kalmaması için de bu daha iyidir. Yükü zaten ağır olan sitelerde,
      DNS sorgularının görece uzun zaman alması nedeniyle bu yönergenin
      değeri <code>Off</code> olarak bırakılmalıdır. Öntanımlı olarak kurulum
      dizininizin <code>bin</code> alt dizinine kurulan
      <code class="program"><a href="../programs/logresolve.html">logresolve</a></code> uygulaması kullanılarak oturum açan IP
      adresleri için isim sorguları çevrim dışıyken yapılabilir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IfDefine" id="IfDefine">&lt;IfDefine&gt;</a> <a name="ifdefine" id="ifdefine">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Başlatma sırasında bir doğruluk sınamasından sonra işleme
sokulacak yönergeleri sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;IfDefine [!]<var>parametre-adı</var>&gt; ...
    &lt;/IfDefine&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code>&lt;IfDefine <var>sınama</var>&gt;...&lt;/IfDefine&gt;
      </code> bölümü koşullu olarak işleme sokulacak yönergeleri içerir.
      Bir <code class="directive">&lt;IfDefine&gt;</code> bölümü içindeki
      yönergeler sadece <var>sınama</var> doğru sonuç verirse işleme sokulur.
      Aksi takdirde, bölüm içinde kalan her şey yok sayılır.</p>

    <p><code class="directive">&lt;IfDefine&gt;</code> bölüm yönergesinde
      <var>sınama</var> için belirtilebilecek iki biçim vardır:</p>

    <ul>
      <li><var>parametre-adı</var></li>

      <li><code>!</code><var>parametre-adı</var></li>
    </ul>

    <p>Birinci durumda bölüm içinde kalan yönergeler sadece
      <var>parametre-adı</var> ile belirtilen parametre tanımlı ise işleme
      sokulur. İkinci durumda ise tersi yapılır, yani sadece
      <var>parametre-adı</var> ile belirtilen parametre tanımlı
      <strong>değil</strong> ise yönergeler işleme sokulur.</p>

    <p><var>parametre-adı</var> argümanı sunucu başlatılırken
      <code class="program"><a href="../programs/httpd.html">httpd</a></code> komut satırında
      <code>-D<var>parametre</var></code> ile
      belirtilerek tanımlı hale getirilebilir.</p>

    <p><code class="directive">&lt;IfDefine&gt;</code> bölümleri iç içe
      olabilir, dolayısıyla çok parametreli basit sınamalar gerçeklenebilir.
      Örnek:</p>

    <div class="example"><p><code>
      httpd -DReverseProxy -DUseCache -DMemCache ...<br />
      <br />
      # httpd.conf<br />
      &lt;IfDefine ReverseProxy&gt;<br />
      <span class="indent">
        LoadModule proxy_module   modules/mod_proxy.so<br />
        LoadModule proxy_http_module   modules/mod_proxy_http.so<br />
        &lt;IfDefine UseCache&gt;<br />
        <span class="indent">
          LoadModule cache_module   modules/mod_cache.so<br />
          &lt;IfDefine MemCache&gt;<br />
          <span class="indent">
            LoadModule mem_cache_module   modules/mod_mem_cache.so<br />
          </span>
          &lt;/IfDefine&gt;<br />
          &lt;IfDefine !MemCache&gt;<br />
          <span class="indent">
            LoadModule disk_cache_module   modules/mod_disk_cache.so<br />
          </span>
          &lt;/IfDefine&gt;
        </span>
        &lt;/IfDefine&gt;
      </span>
      &lt;/IfDefine&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IfModule" id="IfModule">&lt;IfModule&gt;</a> <a name="ifmodule" id="ifmodule">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Belli bir modülün varlığına veya yokluğuna göre işleme sokulacak
yönergeleri sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;IfModule [!]<var>modül-dosyası</var>|<var>modül-betimleyici</var>&gt; ...
    &lt;/IfModule&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Modül betimleyiciler 2.1 sürümünde ve sonrası için geçerlidir.</td></tr>
</table>
    <p><code>&lt;IfModule <var>sınama</var>&gt;...&lt;/IfModule&gt;</code>
      bölümü belli bir modülün varlığına veya yokluğuna göre işleme sokulacak
      yönergeleri içerir. Bir <code class="directive">&lt;IfModule&gt;</code>
      bölümü içindeki yönergeler sadece <var>sınama</var> doğru sonuç verirse
      işleme sokulur. Aksi takdirde, bölüm içinde kalan her şey yok sayılır.</p>

    <p><code class="directive">&lt;IfModule&gt;</code> bölüm yönergesinde
      <var>sınama</var> için belirtilebilecek iki biçim vardır:</p>

    <ul>
      <li><var>modül</var></li>

      <li>!<var>modül</var></li>
    </ul>

    <p>Birinci durumda bölüm içinde kalan yönergeler sadece
      <var>modül</var> ile belirtilen modül Apache içine dahil edilmişse veya
      <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi ile devingen
      olarak yüklenmişse işleme sokulur. İkinci durumda ise tersi yapılır, yani
      sadece <var>modül</var> içerilmiş <strong>değil</strong> ise yönergeler
      işleme sokulur.</p>

    <p><var>modül</var> argümanında bir modül betimleyici veya modülün derleme
      sırasındaki dosya adı belirtilebilir. Örneğin, <code>rewrite_module</code>
      bir betimleyici, <code>mod_rewrite.c</code> ise bir dosya ismidir. Eğer
      modül çok sayıda kaynak dosyasından oluşuyorsa
      <code>STANDARD20_MODULE_STUFF</code> dizgesini içeren dosyanın ismi
      kullanılır.</p>

    <p><code class="directive">&lt;IfModule&gt;</code> bölümleri iç içe
      olabilir, dolayısıyla çok parametreli basit sınamalar gerçeklenebilir.</p>

    <div class="note">Bu bölümü sadece yapılandırma dosyanızın belli modüllerin varlığına
      veya yokluğuna bağlı olarak çalışması gerektiği durumlarda
      kullanmalısınız. Normal işlemlerde yönergelerin <code class="directive">&lt;IfModule&gt;</code> bölümlerine yerleştirilmeleri
      gerekmez.</div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Include" id="Include">Include</a> <a name="include" id="include">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucu yapılandırma dosyalarının başka dosyaları içermesini sağlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Include <var>dosya-yolu</var>|<var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Dosya kalıbıyla eşleşme 2.0.41 ve sonrasında mevcuttur.
</td></tr>
</table>
    <p>Bu yönerge sunucu yapılandırma dosyalarının başka dosyaları içermesini
      mümkün kılar.</p>

    <p>Çok sayıda dosyayı bir kerede alfabetik sırada içermek için kabuk tarzı
      (<code>fnmatch()</code>) dosya ismi kalıp karakterleri kullanılabilir.
      Ayrıca, eğer <code class="directive">Include</code> yönergesi bir dosya değil de
      bir dizin gösteriyorsa Apache bu dizindeki ve alt dizinlerindeki bütün
      dosyaları okuyacaktır. Fakat dizinin bir bütün olarak okutulması
      önerilmez, çünkü dizinde <code class="program"><a href="../programs/httpd.html">httpd</a></code> programının çökmesine
      sebep olabilecek geçici dosyalar unutulabilir.</p>

    <p>Dosya yolu mutlak bir dosya yolu olarak belirtilebileceği gibi
      <code class="directive"><a href="#serverroot">ServerRoot</a></code> dizinine göreli olarak da
      belirtilebilir.</p>

    <p>Örnekler:</p>

    <div class="example"><p><code>
      Include /usr/local/apache2/conf/ssl.conf<br />
      Include /usr/local/apache2/conf/vhosts/*.conf
    </code></p></div>

    <p>Veya dizinler <code class="directive"><a href="#serverroot">ServerRoot</a></code> dizinine
      göre belirtilebilir:</p>

    <div class="example"><p><code>
      Include conf/ssl.conf<br />
      Include conf/vhosts/*.conf
    </code></p></div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="KeepAlive" id="KeepAlive">KeepAlive</a> <a name="keepalive" id="keepalive">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>HTTP kalıcı bağlantılarını etkin kılar</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>KeepAlive On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>KeepAlive On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code>Keep-Alive</code> yönergesi HTTP/1.0 protokolüne bir eklenti olup
      HTTP/1.1 protokolünün kalıcı bağlantı özelliği aynı TCP bağlantısı
      üzerinden çok sayıda isteğin gönderilmesini mümkün kılan uzun süreli HTTP
      oturumları açılmasını sağlar. Bunun, çok sayıda resim içeren HTML
      belgelerin yanıt zamanlarında bazı durumlarda %50’lik bir hızlanmayla
      sonuçlandığı gösterilmiştir. Kalıcı bağlantıları etkin kılmak için
      yönerge <code>KeepAlive On</code> şeklinde kullanılır.</p>

    <p>HTTP/1.0 istemcileri için kalıcı bağlantılar sadece bir istemci
      tarafından özellikle istendiği takdirde kullanılabilir. Ek olarak,
      HTTP/1.0 istemci kalıcı bağlantıları sadece içerik uzunluğu baştan
      bilindiği zaman kullanılabilir. Bu, CGI çıktısı, SSI sayfaları ve
      sunucunun ürettiği dizin listeleri gibi genellikle HTTP/1.0 istemcilere
      kalıcı bağlantılar kullanmayan devingen içeriklere uygulanır. HTTP/1.1
      istemciler için kalıcı bağlantılar aksi belirtilmedikçe öntanımlıdır.
      İstemci istediği takdirde, uzunluğu bilinmeyen içerik kalıcı bağlantılar
      üzerinden gönderilirken parçalı kodlama kullanılacaktır.</p>

    <p>Bir istemci kalıcı bağlantı kullandığı takdirde, bağlantı üzerinden kaç
      istek gönderilirse gönderilsin,
      <code class="directive">MaxRequestsPerChild</code> yönergesi bakımından tek bir
      istek olarak değerlendirilir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#maxkeepaliverequests">MaxKeepAliveRequests</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="KeepAliveTimeout" id="KeepAliveTimeout">KeepAliveTimeout</a> <a name="keepalivetimeout" id="keepalivetimeout">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir kalıcı bağlantıda sunucunun bir sonraki isteği bekleme süresi
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>KeepAliveTimeout <var>saniye</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>KeepAliveTimeout 5</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Sunucunun kalıcı bir bağlantıyı kapatmadan önce bir sonraki isteği kaç
      saniye bekleyeceğini belirler. İstek alındıktan sonra <code class="directive"><a href="#timeout">Timeout</a></code> yönergesiyle belirtilen zaman aşımı
      değeri uygulanır.</p>

    <p><code class="directive">KeepAliveTimeout</code> için yüksek bir değer belirtmek
      ağır yüklü sunucularda başarım sorunlarına yol açar. Daha yüksek bir
      zaman aşımı, boştaki istemcilerin bulunduğu bağlantıları bekleyen daha
      fazla sunucu sürecini meşgul edecektir.</p>

    <p>İsme dayalı sanal konak bağlamında, <code class="directive"><a href="#namevirtualhost">NameVirtualHost</a></code> bölümleri içinde tanımlanmış ilk sanal konağın (öntanımlı konak) değeri kullanılır. Diğer değerler görmezden gelinir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Limit" id="Limit">&lt;Limit&gt;</a> <a name="limit" id="limit">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Erişimi sınırlanacak HTTP yöntemleri için erişim sınırlayıcıları
sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;Limit <var>yöntem</var> [<var>yöntem</var>] ... &gt; ...
    &lt;/Limit&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Erişim denetleyicileri normalde <strong>tüm</strong> erişim yöntemleri
      için etkindir ve olağan olanı da budur. <strong>Genel durum olarak,
      erişim denetim yönergeleri bir <code class="directive">&lt;Limit&gt;</code> bölümüne
      yerleştirilmemelidir.</strong></p>

    <p><code class="directive">&lt;Limit&gt;</code> bölümünün amacı, erişim
      denetleyicilerinin etkilerini belli HTTP yöntemleri için sınırlamaktır.
      <code class="directive">&lt;Limit&gt;</code> bölümü içinde listelenen
      erişim sınırlamaları, kalan tüm diğer yöntemler için <strong>etkisiz
      olacaktır</strong>. Aşağıdaki örnekte, erişim sınırlaması
      <code>POST</code>, <code>PUT</code> ve <code>DELETE</code> yöntemleri
      için uygulanmakta, diğer tüm yöntemler korumasız bırakılmaktadır:</p>

    <div class="example"><p><code>
      &lt;Limit POST PUT DELETE&gt;<br />
      <span class="indent">
        Require valid-user<br />
      </span>
      &lt;/Limit&gt;
    </code></p></div>

    <p>Birden fazla bölümde kullanılabilecek yöntem isimleri: <code>GET</code>,
      <code>POST</code>, <code>PUT</code>, <code>DELETE</code>,
      <code>CONNECT</code>, <code>OPTIONS</code>,
      <code>PATCH</code>, <code>PROPFIND</code>, <code>PROPPATCH</code>,
      <code>MKCOL</code>, <code>COPY</code>, <code>MOVE</code>,
      <code>LOCK</code> ve <code>UNLOCK</code>. <strong>Yöntem isimleri harf
      büyüklüğüne duyarlıdır.</strong> <code>GET</code> yöntemi sınırlanırsa
      <code>HEAD</code> istekleri de sınırlanmış olur. <code>TRACE</code>
      yöntemi sınırlanamaz.</p>

    <div class="warning">Erişimi sınarlarken bir <code class="directive">&lt;Limit&gt;</code> bölümü yerine daima bir <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> bölümünü tercih
      etmelisiniz, çünkü <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> bölümü belirtilen yöntemler dışında kalanlara
      erişim koruması sağlar.</div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitExcept" id="LimitExcept">&lt;LimitExcept&gt;</a> <a name="limitexcept" id="limitexcept">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsimleri belirtilenler dışında kalan HTTP yöntemleri için
kullanılacak erişim sınırlayıcıları sarmalar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;LimitExcept <var>yöntem</var> [<var>yöntem</var>] ... &gt; ...
    &lt;/LimitExcept&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;LimitExcept&gt;</code> ve
      <code>&lt;/LimitExcept&gt;</code> argüman olarak belirtilenler
      <strong>dışında</strong> kalan HTTP yöntemleri için kullanılacak erişim
      sınırlayıcıları gruplamakta kullanılır. Yani, <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> bölümünün tersine, standart olsun olmasın
      bütün yöntemler için erişimi kısıtlamakta kullanılabilir. Daha ayrıntılı
      bilgi edinmek için <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> yönergesinin açıklamasına bakınız.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      &lt;LimitExcept POST GET&gt;<br />
      <span class="indent">
        Require valid-user<br />
      </span>
      &lt;/LimitExcept&gt;
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitInternalRecursion" id="LimitInternalRecursion">LimitInternalRecursion</a> <a name="limitinternalrecursion" id="limitinternalrecursion">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dahili yönlendirmelerin ve istek içi isteklerin azami sayısını
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitInternalRecursion <var>sayı</var> [<var>sayı</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitInternalRecursion 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0.47 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Örneğin, özgün istekleri dahili olarak bir CGI betiğine yönlendiren
      <code class="directive"><a href="../mod/mod_actions.html#action">Action</a></code> yönergesi
      kullanıldığında bir dahili yönlendirme oluşur. İstek içi istekler ise
      bazı URI’ler için istek yapıldığında ne olacağını bulmak için Apache’nin
      kullandığı bir mekanizmadır. Örneğin, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>,
      <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> yönergesinde
      listelenen dosyalara bakmak için istek içi istekler kullanır.</p>

    <p><code class="directive">LimitInternalRecursion</code> yönergesi sunucunun dahili
      yönlendirmeler ve istek içi isteklerin oluşturduğu döngülerden dolayı
      çökmemesini sağlar. Böyle döngüler genellikle yanlış yapılandırma sonucu
      ortaya çıkarlar.</p>

    <p>Yönerge her istek için değerlendirmeye alınacak iki farklı sınırlama
      için kullanılabilir. İlk <var>sayı</var> ardarda gelebilen dahili
      yönlendirmelerin azami sayısını, ikinci <var>sayı</var> ise istek içi
      isteklerin ne kadar iç içe olabileceğini belirler. Tek bir
      <var>sayı</var> belirtilirse iki sınırlama için de aynı değer
      kullanılır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      LimitInternalRecursion 5
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitRequestBody" id="LimitRequestBody">LimitRequestBody</a> <a name="limitrequestbody" id="limitrequestbody">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemci tarafından gönderilen HTTP istek gövdesinin toplam
uzunluğunu sınırlar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitRequestBody <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitRequestBody 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge, bir istek gövdesinde izin verilen bayt sayısını 0 (sınırsız
      anlamında) ile 2147483647 (2GB) arasında sınırlamak için kullanılır.</p>

    <p><code class="directive">LimitRequestBody</code> yönergesi kullanıcıya yönergenin
      kullanıldığı bağlam (sunucu, belli bir dizin, belli bir dosya, belli bir
      yer) dahilinde bir HTTP istek iletisi gövdesinin izin verilen uzunluğu
      için bir sınır belirleme imkanı verir. Eğer istemcinin isteği bu sınırı
      aşarsa sunucu isteği sunmak yerine bir hata iletisi döndürecektir. Normal
      bir istek ileti gövdesinin uzunluğu büyük oranda özkaynağın doğasına ve
      bu özkaynak üzerinde izin verilen yöntemlere bağlıdır. CGI betikleri
      genellikle ileti gövdesini form bilgisini almak için kullanır.
      <code>PUT</code> yöntemi gerçeklenimleri, en azından, sunucunun o
      özkaynak için kabul etmek isteyeceği herhangi bir gösterim kadar büyük
      bir değer gerektirecektir.</p>

    <p>Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu
      yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim
      imkanı sağlar.</p>

    <p>Eğer, örneğin, belli bir yere dosya yükleme izni verir ve buraya
      yüklenebilecek dosya boyutunu 100 kB ile sınırlamak isterseniz yönergeyi
      şöyle kullanabilirsiniz:</p>

    <div class="example"><p><code>
      LimitRequestBody 102400
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitRequestFields" id="LimitRequestFields">LimitRequestFields</a> <a name="limitrequestfields" id="limitrequestfields">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciden kabul edilecek HTTP isteği başlık alanlarının sayısını
sınırlar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitRequestFields <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitRequestFields 100</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><var>sayı</var>, en küçük 0 (sınırsız anlamında), en büyük 32767
      olabilir. Öntanımlı değer bir derleme zamanı sabiti olan
      <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> ile belirlenir (dağıtımla gelen
      değeri 100’dür).</p>

    <p><code class="directive">LimitRequestFields</code> yönergesi sunucu
      yöneticilerine bir HTTP isteğinde izin verilen istek başlık alanlarının
      sayısı üzerindeki sınırı değiştirebilme imkanı verir. Sunucu bu değerin,
      normal bir istemci isteğinin içerebileceği alan sayısından daha büyük
      olmasına ihtiyaç duyar. Bir istemci tarafından kullanılan istek başlık
      alanlarının sayısı nadiren 20’yi geçer, fakat bu farklı istemci
      gerçeklenimleri için değişiklik gösterir ve çoğunlukla kullanıcının
      tarayıcısını ayrıntılı içerik müzakeresini desteklemek için nasıl
      yapılandırdığıyla ilgilidir. İsteğe bağlı HTTP eklentileri çoğunlukla
      istek başlık alanları kullanılarak ifade edilir.</p>

    <p>Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu
      yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim
      imkanı sağlar. Eğer normal istemciler sunucudan istekte bulunurken çok
      fazla başlık alanı gönderildiğine dair bir hata iletisi alırlarsa bu
      değerin arttırılması gerekir.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      LimitRequestFields 50
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitRequestFieldSize" id="LimitRequestFieldSize">LimitRequestFieldSize</a> <a name="limitrequestfieldsize" id="limitrequestfieldsize">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciden kabul edilecek HTTP isteği başlık uzunluğunu sınırlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitRequestFieldSize <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitRequestFieldSize 8190</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge, HTTP istek başlığında izin verilecek bayt sayısını
      belirler.</p>

    <p><code class="directive">LimitRequestFieldSize</code> yönergesi, sunucu
      yöneticilerine  HTTP istek başlık alanının azami uzunluğunu arttırıp
      azaltma imkanı verir. Sunucu bu değerin, normal bir istemci isteğinin
      içerebileceği herhangi bir başlık alanını tutabilecek kadar büyük
      olmasını gerektirir. Normal bir istek başlık alanı uzunluğu kullanıcının
      tarayıcısını ayrıntılı içerik müzakeresini desteklemek için nasıl
      yapılandırdığıyla ilgilidir. SPNEGO kimlik doğrulama başlıkları 12392
      baytlık olabilir.</p>

    <p>Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu
      yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim
      imkanı sağlar.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      LimitRequestFieldSize 4094
    </code></p></div>

    <div class="note">Normal şartlar altında öntanımlı değer değiştirilmemelidir.</div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitRequestLine" id="LimitRequestLine">LimitRequestLine</a> <a name="limitrequestline" id="limitrequestline">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciden kabul edilecek HTTP istek satırının uzunluğunu sınırlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitRequestLine <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitRequestLine 8190</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge, HTTP istek satırında izin verilecek bayt sayısını
      belirler.</p>

    <p><code class="directive">LimitRequestLine</code> yönergesi, sunucu yöneticilerine
      bir istemcinin HTTP istek satırının azami uzunluğunu arttırıp azaltma
      imkanı verir. İstek satırının içeriği HTTP yöntemi, URI ve protokol
      sürümünden oluştuğundan <code class="directive">LimitRequestLine</code>
      yönergesi, sunucudan bir istek için kullanılan istek adresinin uzunluğunu
      sınırlamış olur. Sunucu bu değerin, bir <code>GET</code> isteğinin sorgu
      kısmında aktarılabilen her bilgi dahil, özkaynak isimlerinden her birini
      tutabilecek kadar büyük olmasını gerektirir.</p>

    <p>Bu yönerge, bazı hizmet reddi (DoS) saldırılarından kaçınmak için sunucu
      yöneticilerine, anormal istemci istekleri üzerinde daha iyi denetim
      imkanı sağlar.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      LimitRequestLine 4094
    </code></p></div>

    <div class="note">Normal şartlar altında öntanımlı değer değiştirilmemelidir.</div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LimitXMLRequestBody" id="LimitXMLRequestBody">LimitXMLRequestBody</a> <a name="limitxmlrequestbody" id="limitxmlrequestbody">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir XML temelli istek gövdesinin uzunluğunu sınırlar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LimitXMLRequestBody <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LimitXMLRequestBody 1000000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bir  XML temelli istek gövdesinin azami bayt sayısını belirler. Değer
      olarak <code>0</code> belirtildiğinde herhangi bir boyut sınaması
      yapılmaz.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      LimitXMLRequestBody 0
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Location" id="Location">&lt;Location&gt;</a> <a name="location" id="location">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İçerdiği yönergeler sadece eşleşen URL’lere uygulanır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;Location <var>URL-yolu</var>|<var>URL</var>&gt; ...
&lt;/Location&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;Location&gt;</code> bölüm yönergesi kapsadığı
      yönergelerin etki alanını belirtilen URL’lerle sınırlar. Bu yönerge,
      <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> yönergesine
      benzer ve <code>&lt;/Location&gt;</code> yönergesi ile biten bir alt
      bölüm başlatır. <code class="directive">&lt;Location&gt;</code> bölümleri
      yapılandırma dosyasında göründükleri sıraya göre, <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> bölümleri ve
      <code>.htaccess</code> dosyaları okunup <code class="directive"><a href="#files">&lt;Files&gt;</a></code> bölümleri de işlendikten sonra işleme
      sokulurlar.</p>

    <p><code class="directive">&lt;Location&gt;</code> bölümleri dosya
      sisteminin tamamen dışında işlem görürler. Bunun çeşitli sonuçları olur.
      En önemlisi, <code class="directive">&lt;Location&gt;</code>
      yönergelerinin dosya sistemi konumlarına erişimi denetim altına almak
      için kullanılmaması gerekliliğidir. Aynı dosya sistemi konumuna farklı
      URL’lerle erişmek mümkün olduğundan bu tür erişim denetimleri hile ile
      atlatılabilir olacaktır.</p>

    <div class="note"><h3><code class="directive">&lt;Location&gt;</code> ne zaman
      kullanılmalı</h3>

    <p><code class="directive">&lt;Location&gt;</code> yönergesini dosya sistemi
      dışındaki içeriğe çeşitli yönergeler uygulamak için kullanın. Dosya
      sisteminde bulunan içerik için <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> ve <code class="directive"><a href="#files">&lt;Files&gt;</a></code> bölümlerini kullanın. Bunun istisnası,
      sunucunun tamamına bir yapılandırma uygulamak için kolay bir yol olan
      <code>&lt;Location /&gt;</code>  kullanımıdır.</p>
    </div>

    <p>Kaynağa yapılan (vekil olmayan) tüm istekler için eşleşecek URL,
      <code>/yol/</code> şeklinde bir URL yolu olmalı; <em>ne şema, ne konak ismi
      ne port ne de sorgu dizgesi içermelidir</em>. Vekil istekleri için eşleşecek
      URL ise <code>şema://sunucuadı/dosya-yolu</code> şeklinde olmalı ve önek
      içermelidir.</p>

    <p>URL içinde dosya kalıp karakterleri kullanılabilir. Dosya kalıp
      karakterleri bulunan bir dizgede bulunan <code>?</code> karakteri
      herhangi bir tek karakterle eşleşirken <code>*</code> karakteri herhangi
      bir karakter dizisi ile eşleşecektir. URL yolu içindeki / karakterleri
      ile hiçbir dosya kalıp karakteri eşleşmez.</p>

    <p>Ayrıca, <code>~</code> karakteri eşliğinde <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli
      ifadeler</a> de kullanılabilir. Örneğin,</p>

    <div class="example"><p><code>
      &lt;Location ~ "/(ek|hususi)/veri"&gt;
    </code></p></div>

    <p>yönergesi <code>/ek/veri</code> ve <code>/hususi/veri</code> alt
      dizgeleriyle eşleşecektir. <code class="directive"><a href="#locationmatch">&lt;LocationMatch&gt;</a></code> yönergesi <code class="directive">&lt;Location&gt;</code> yönergesinin düzenli ifade sürümüne
      eşdeğer davranır.</p>

    <p><code class="directive">&lt;Location&gt;</code> işlevselliği özellikle
      <code class="directive"><a href="#sethandler">SetHandler</a></code> yönergesi ile birlikte
      kullanışlı olur. Örneğin, durum isteklerini etkin kılmak ama sadece
      <code>mesela.dom</code>’dan gelen isteklere izin vermek için şöyle bir
      uygulama yapabilirsiniz:</p>

    <div class="example"><p><code>
      &lt;Location /status&gt;<br />
      <span class="indent">
        SetHandler server-status<br />
        Order Deny,Allow<br />
        Deny from all<br />
        Allow from .mesela.dom<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <div class="note"><h3>/ (bölü çizgisi) hakkında</h3>
      <p>Bölü çizgisinin URL içinde bulunduğu yere bağlı olarak özel anlamları
        vardır. Dosya sistemindeki çok sayıda yanyana kullanımının tek bir bölü
        çizgisi olarak ele alındığı duruma alışkın olanlar olabilir (yani,
        <code>/home///foo</code> ile <code>/home/foo</code> aynıdır). URL
        uzayında bunun böyle olması gerekli değildir. Eğer çok sayıda bölü
        çizgisini yanyana belirtmeniz gerekiyorsa <code class="directive"><a href="#locationmatch">&lt;LocationMatch&gt;</a></code> yönergesinde ve  <code class="directive">&lt;Location&gt;</code> yönergesinin düzenli ifadeli
        kullanımında bunu açıkça belirtmeniz gerekir.</p>

      <p>Örneğin, <code>&lt;LocationMatch ^/abc&gt;</code> yönergesi
        <code>/abc</code> ile eşleşecek ama <code>//abc</code> ile
        eşleşmeyecektir. <code class="directive">&lt;Location&gt;</code>
        yönergesinin düzenli ifade içermeyen kullanımındaki davranış vekil
        isteklerinde kullanılana benzer ve doğrudan kaynağa yapılan (vekil
        olmayan) isteklerde çok sayıda bölü çizgisi dolaylı olarak tek bir bölü
        çizgisiyle eşleşecektir. Örneğin, <code>&lt;Location
        /abc/def&gt;</code> belirtirseniz ve istek <code>/abc//def</code>
        şeklinde olursa bu ikisi eşleşir.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir arada
  ele alındığının açıklaması için <a href="../sections.html">
  &lt;Directory&gt;, &lt;Location&gt; ve &lt;Files&gt; bölümleri nasıl
  çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LocationMatch" id="LocationMatch">&lt;LocationMatch&gt;</a> <a name="locationmatch" id="locationmatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İçerdiği yönergeler sadece düzenli ifadelerle eşleşen URL’lere
uygulanır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;LocationMatch
    <var>düzifade</var>&gt; ... &lt;/LocationMatch&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;LocationMatch&gt;</code> yönergesi içerdiği
      yönergelerin etki alanını <code class="directive"><a href="#location">&lt;Location&gt;</a></code> yönergesinin yaptığı gibi belirtilen URL’lerle
      sınırlar. Ancak argüman olarak basit bir dizge değil bir <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> alır. Örneğin,</p>

    <div class="example"><p><code>
      &lt;LocationMatch "/(ek|hususi)/veri"&gt;
    </code></p></div>

    <p>yönergesi <code>/ek/veri</code> ve <code>/hususi/veri</code> alt
      dizgeleriyle eşleşecektir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir arada
  ele alındığının açıklaması için <a href="../sections.html">
  &lt;Directory&gt;, &lt;Location&gt; ve &lt;Files&gt; bölümleri nasıl
  çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LogLevel" id="LogLevel">LogLevel</a> <a name="loglevel" id="loglevel">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Hata günlüklerinin ayrıntı seviyesini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LogLevel <var>seviye</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LogLevel warn</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">LogLevel</code> yönergesi hata günlüklerine kaydedilen
      hata iletilerinde hangi ayrıntılara yer verileceğini belirler (<code class="directive"><a href="#errorlog">ErrorLog</a></code> yönergesine bakınız). En yüksek önem
      derecesinden başlayarak olası <var>seviye</var> değerleri aşağıda
      sıralanmıştır:</p>

    <table class="bordered">
    
      <tr>
        <th><strong>Seviye</strong> </th>
        <th><strong>Açıklama</strong> </th>
        <th><strong>Örnek</strong> </th>
      </tr>

      <tr>
        <td><code>emerg</code> </td>
        <td>Acil durumlar - sistem kullanışsız.</td>
        <td>"Child cannot open lock file. Exiting"<br />(Alt süreç kilit
          dosyasını açamıyor. Çıkılıyor)</td>
      </tr>

      <tr>
        <td><code>alert</code> </td>
        <td>Ne yapılacaksa beklemeden yapılmalı.</td>
        <td>"getpwuid: couldn't determine user name from uid"<br />(getpwuid:
          Kullanıcı ismi numarasından saptanamadı)</td>
      </tr>

      <tr>
        <td><code>crit</code> </td>
        <td>Kriz durumları.</td>
        <td>"socket: Failed to get a socket, exiting child"<br />(socket: bir
          soket alınamadı, alt süreç çıkıyor)</td>
      </tr>

      <tr>
        <td><code>error</code> </td>
        <td>Hata durumları.</td>
        <td>"Premature end of script headers"<br />(Betik başlıkları
          beklenmedik şekilde bitti)</td>
      </tr>

      <tr>
        <td><code>warn</code> </td>
        <td>Uyarı durumları.</td>
        <td>"child process 1234 did not exit, sending another
          SIGHUP"<br />(1234 alt süreci çıkmadı, başka bir SIGHUP
          gönderiliyor)</td>
      </tr>

      <tr>
        <td><code>notice</code> </td>
        <td>Normal fakat önemli durum.</td>
        <td>"httpd: caught SIGBUS, attempting to dump core in
          ..."<br />(httpd: SIGBUS alındı, core dökümlenmeye çalışılıyor:
          ...)</td>
      </tr>

      <tr>
        <td><code>info</code> </td>
        <td>Bilgilendirme.</td>
        <td>"Server seems busy, (you may need to increase
          StartServers, or Min/MaxSpareServers)..."<br />(Sunucu meşgul
          görünüyor, (StartServers veya Min/MaxSpareServers değerlerini
          arttırmanız gerekebilir)...)</td>
      </tr>

      <tr>
        <td><code>debug</code> </td>
        <td>Hata ayıklama seviyesi iletileri</td>
        <td>"Opening config file ..."<br />(... yapılandırma dosyası
          açılıyor)</td>
      </tr>
    </table>

    <p>Belli bir seviye belirtildiğinde daha yüksek seviyeden iletiler de
      raporlanır. Örneğin, <code>LogLevel info</code> belirtildiğinde
      <code>notice</code> ve <code>warn</code> günlük seviyelerinin iletileri
      ayrıca raporlanacaktır.</p>

    <p>En az <code>crit</code> seviyesinin kullanılması önerilir.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      LogLevel notice
    </code></p></div>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>Günlük iletileri normal bir dosyaya yazılırken <code>notice</code>
        seviyesinden iletiler engellenemez ve dolayısıyla daima raporlanırlar.
        Ancak, günlük kaydı <code>syslog</code> kullanılarak yapılıyorsa bu
        uygulanmaz.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxKeepAliveRequests" id="MaxKeepAliveRequests">MaxKeepAliveRequests</a> <a name="maxkeepaliverequests" id="maxkeepaliverequests">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir kalıcı bağlantıda izin verilen istek sayısı</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxKeepAliveRequests <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>MaxKeepAliveRequests 100</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">MaxKeepAliveRequests</code> yönergesi <code class="directive"><a href="#keepalive">KeepAlive</a></code> etkinken bağlantı başına izin
      verilecek istek sayısını sınırlar. Değer olarak <code>0</code>
      belirtilirse istek sayısı sınırsız olur. Sunucu başarımını yüksek tutmak
      için yüksekçe bir değer belirtmenizi öneririz.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>
      MaxKeepAliveRequests 500
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="NameVirtualHost" id="NameVirtualHost">NameVirtualHost</a> <a name="namevirtualhost" id="namevirtualhost">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsme dayalı sanal konaklar için IP adresi belirtir</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>NameVirtualHost <var>adres</var>[:<var>port</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">NameVirtualHost</code> yönergesi <a href="../vhosts/index.html">isme dayalı sanal konakları</a> yapılandırmak isterseniz gerekli olur.
    </p>

    <p><var>adres</var> olarak bir konak ismi de belirtebilirsiniz ama daima
      bir IP adresi kullanmanızı öneririz. Örnek:</p>

    <div class="example"><p><code>
      NameVirtualHost 111.22.33.44
    </code></p></div>

    <p><code class="directive">NameVirtualHost</code> yönergesi ile sunucunun isme
      dayalı sanal konaklar için istekleri hangi IP adresinden alacağı
      belirtilir. Bu adres genellikle isme dayalı sanal konak isimleri
      çözümlendiğinde elde edilen IP adresidir. İstekleri bir güvenlik
      duvarının veya bir vekilin alıp sunucuya yönlendirdiği durumlarda ise bu
      adres sunucunun istekleri aldığı fiziksel arabirimin IP adresi olmalıdır.
      Çok sayıda adres üzerinde çok sayıda isme dayalı sanal konak varsa her
      adresin kendi yönergeleri olmalıdır.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>“Ana sunucu” ve <code>_default_</code> sunucuların bir
        <code class="directive">NameVirtualHost</code> IP adresine yapılan bir isteği
        <strong>asla</strong> sunmayacağına dikkat ediniz (bir sebeple
        <code class="directive">NameVirtualHost</code> belirtip bu adres için herhangi
        bir <code class="directive">VirtualHost</code> tanımlamadığınız durumlar
        hariç).</p>
    </div>

    <p>Seçimlik olarak, isme dayalı sanal konakların kullanması gereken port
      numarasını örnekteki gibi belirtebilirsiniz:</p>

    <div class="example"><p><code>
      NameVirtualHost 111.22.33.44:8080
    </code></p></div>

    <p>IPv6 adresleri belirtilirken örnekteki gibi köşeli ayraçlar arasına
      alınmalıdır:</p>

    <div class="example"><p><code>
      NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080
    </code></p></div>

    <p>İsteklerin bütün arabirimlerden alınacağını belirtmek için değer olarak
      <code>*</code> belirtebilirsiniz:</p>

    <div class="example"><p><code>
      NameVirtualHost *
    </code></p></div>

    <div class="note"><h3><code class="directive">&lt;VirtualHost&gt;</code> yönergesinin
      argümanı</h3>
      <p><code class="directive">&lt;VirtualHost&gt;</code> yönergesinin
      argümanının <code class="directive">NameVirtualHost</code> yönergesininkiyle tam
      olarak eşleşmesi gerektiğine dikkat ediniz.</p>

      <div class="example"><p><code>
        NameVirtualHost 1.2.3.4<br />
        &lt;VirtualHost 1.2.3.4&gt;<br />
        # ...<br />
        &lt;/VirtualHost&gt;<br />
      </code></p></div>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../vhosts/index.html">Apache Sanal Konak Belgeleri</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Options" id="Options">Options</a> <a name="options" id="options">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Belli bir dizinde geçerli olacak özellikleri yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Options
    [+|-]<var>seçenek</var> [[+|-]<var>seçenek</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Options All</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">Options</code> yönergesi belli bir dizinde hangi sunucu
      özelliklerinin etkin olacağını (veya olmayacağını) belirler.</p>

    <p><var>seçenek</var> olarak hiçbir ek özellik etkin olmayacaksa
      <code>None</code>, aksi takdirde aşağıdakilerden biri veya bir kaçı
      belirtilir:</p>

    <dl>
      <dt><code>All</code></dt>
      <dd><code>MultiViews</code> hariç tüm seçenekler. Bu öntanımlıdır.</dd>

      <dt><code>ExecCGI</code></dt>
      <dd><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> kullanan CGI betiklerinin çalışmasına izin
        verilir.</dd>

      <dt><code>FollowSymLinks</code></dt>
      <dd>Sunucu bu dizindeki sembolik bağları izler.
      <div class="note">
      <p>Sembolik bağlar izlense bile <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> bölümleriyle eşleşen dosya yolları
        değiştirilmez.</p>
      <p>Ayrıca, bu seçenek bir <code class="directive"><a href="#location">&lt;Location&gt;</a></code> bölümü içinde belirtildiği takdirde <strong>yok
        sayılır</strong>.</p>
      <p>Sembolik bağ sınamaları, atlatılabilir yarış koşullarına konu
        olduğundan bu seçeneğin yokluğu bir güvenlik sınırlaması olarak
        değerlendirilmemelidir.</p>
      </div></dd>

      <dt><code>Includes</code></dt>
      <dd><code class="module"><a href="../mod/mod_include.html">mod_include</a></code> tarafından sağlanan sunucu taraflı
        içeriklere izin verilir.</dd>

      <dt><code>IncludesNOEXEC</code></dt>
      <dd>Sunucu taraflı içeriklere izin verilir fakat <code>#exec cmd</code>
        ve <code>#exec cgi</code> iptal edilir. Ancak, <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>’lı dizinlerdeki CGI
        betikleri için <code>#include virtual</code> hala mümkün olacaktır.</dd>

      <dt><code>Indexes</code></dt>
      <dd>İstenen URL bir dizin ile eşleşiyorsa ve bu dizin için bir <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> (<code>index.html</code>
        gibi) belirtilmemişse <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> bu dizinin
        biçimlenmiş bir listesini döndürecektir.</dd>

      <dt><code>MultiViews</code></dt>
      <dd><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code> kullanılarak <a href="../content-negotiation.html">içerik uzlaştırmalı</a> çok
        görünümlü içeriğe izin verilir.</dd>

      <dt><code>SymLinksIfOwnerMatch</code></dt>
      <dd>Sunucu sembolik bağları sadece sembolik bağın hedefi ile bulunduğu
        dizinin sahibinin aynı kullanıcı olması halinde izleyecektir.

      <div class="note"><h3>Ek Bilgi</h3> <p>Bu seçenek bir <code class="directive"><a href="#location">&lt;Location&gt;</a></code> bölümü içinde belirtildiğinde yok
        sayılır.</p>
      <p>Sembolik bağ sınamaları, atlatılabilir yarış koşullarına konu
        olduğundan bu seçenek bir güvenlik sınırlaması olarak
        değerlendirilmemelidir.</p></div>
      </dd>
    </dl>

    <p>Normalde, bir dizine çok sayıda <code class="directive">Options</code>
      uygulanabilirse de, dizine en uygun olanı uygulanıp diğerleri yok
      sayılır; seçenekler katıştırılmaz (bkz, <a href="../sections.html#mergin">Bölümler Nasıl Katıştırılır?</a>). Bununla birlikte, önüne bir
      <code>+</code> veya <code>-</code> simgesi konmuş seçenekler varsa, o
      seçenekler katıştırılır. Önüne <code>+</code> konmuş seçenekler
      mevcutlara eklenirken <code>-</code> konmuş seçenekler silinir.</p>

    <div class="warning"><h3>Uyarı</h3>
    <p><code>+</code> veya <code>-</code> imli seçenekler içeren
      <code class="directive">Options</code> ile imsiz seçenekler içerenlerin karışık
      olarak kullanılması beklenmedik sonuçlara yol açması sebebiyle aslında
      geçersiz bir sözdizimidir.</p>
    </div>

    <p>Örneğin, <code>+</code> ve <code>-</code> imleri olmaksızın,</p>

    <div class="example"><p><code>
      &lt;Directory /web/docs&gt;<br />
      <span class="indent">
        Options Indexes FollowSymLinks<br />
      </span>
      &lt;/Directory&gt;<br />
      <br />
      &lt;Directory /web/docs/spec&gt;<br />
      <span class="indent">
        Options Includes<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>yapılandırmasıyla <code>/web/docs/spec</code> dizininde sadece
      <code>Includes</code> seçeneği etkin olacaktır. Bununla birlikte, ikinci
      <code class="directive">Options</code> yönergesinde <code>+</code> ve
      <code>-</code> imleri kullanılırsa,</p>

    <div class="example"><p><code>
      &lt;Directory /web/docs&gt;<br />
      <span class="indent">
        Options Indexes FollowSymLinks<br />
      </span>
      &lt;/Directory&gt;<br />
      <br />
      &lt;Directory /web/docs/spec&gt;<br />
      <span class="indent">
        Options +Includes -Indexes<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>yapılandırmasıyla <code>/web/docs/spec</code> dizininde
      <code>FollowSymLinks</code> ve <code>Includes</code> seçenekleri etkin
      olacaktır.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p><code>-IncludesNOEXEC</code> veya <code>-Includes</code> kullanımı,
        önceki ayarların ne olduğuna bakılmaksızın sunucu taraflı içeriğin
        tamamen iptaline sebep olur.</p>
    </div>

    <p>Herhangi bir başka değer belirtilmedikçe <code>All</code>
      öntanımlıdır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Require" id="Require">Require</a> <a name="require" id="require">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir özkaynağa erişebilecek kimliği doğrulanmış kullanıcıları belirler</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Require <var>öğe-adı</var> [<var>öğe-adı</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge br özkaynağa erişebilecek kimliği doğrulanmış kullanıcıları belirlemek için kullanılır. Kısıtlamalar yetkilendirme modülleri tarafından işleme sokulur. <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code> ve
    <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> tarafından izin verilen bazı sözdizimleri:</p>

    <dl>
      <dt><code>Require user <var>kull-kiml</var> [<var>kull-kiml</var>]
      ...</code></dt>
      <dd>Sadece belirtilen kullanıcılar özkaynağa erişebilir.</dd>

      <dt><code>Require group <var>grup-adı</var> [<var>grup-adı</var>]
      ...</code></dt>
      <dd>Sadece belirtilen gruplara üye kullanıcılar özkaynağa erişebilir.</dd>

      <dt><code>Require valid-user</code></dt>
      <dd>Geçerli kullanıcıların hepsi özkaynağa erişebilir.</dd>
    </dl>

    <p>Gerekli diğer seçenekleri sağlayan yetkilendirme modülleri olarak <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>, <code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code> ve
    <code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code> sayılabilir.</p>

    <p><code class="directive">Require</code> yönergesinin düzgün çalışması için kendisine <code class="directive"><a href="#authname">AuthName</a></code> ve <code class="directive"><a href="#authtype">AuthType</a></code> yönergelerinin yanı sıra kullanıcıları ve grupları tanımlamak için <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> ve <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> gibi yönergelerinin de eşlik etmesi gerekir. Örnek:</p>

    <div class="example"><p><code>
       AuthType Basic<br />
       AuthName "Restricted Resource"<br />
       AuthUserFile /web/users<br />
       AuthGroupFile /web/groups<br />
       Require group admin
    </code></p></div>

    <p>Bu yolla uygulanan erişim denetimleri <strong>tüm</strong> yöntemler için etkilidir. <strong>Normalde istenen zaten budur.</strong> Erişim denetimlerini diğerlerini korumasız bırakmak pahasına sadece belli yöntemlerle sınırlamak isterseniz <code class="directive">Require</code>  yönergesini bir <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> bölümüne yerleştirin.</p>

    <p>Eğer <code class="directive">Require</code> yönergesini <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> veya
    <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> yönergeleri ile birlikte kullanırsanız bu sınırlamalarla olan etkileşim <code class="directive"><a href="#satisfy">Satisfy</a></code> yönergesi tarafından denetlenir.</p>

    <div class="note"><h3>Denetimlerin alt dizinlerden kaldırılması</h3>
    <p>Aşağıdaki örnekte korunmuş bir dizinin bir alt dizinindeki erişim denetimlerinin kaldırılması için <code class="directive"><a href="#satisfy">Satisfy</a></code> yönergesinin nasıl kullanılacağı gösterilmiştir. Bu teknik, <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> tarafından dayatılan erişim denetimlerini de ortadan kaldırdığından dikkatli kullanılmalıdır.</p>
    <div class="example"><p><code>
      &lt;Directory /korunmuş/dizine/giden/yol/&gt;<br />
        <span class="indent">
        Require user david<br />
        </span>
      &lt;/Directory&gt;<br />
      &lt;Directory /korunmuş/dizine/giden/yol/korunmamış-dizin/&gt;<br />
        <span class="indent">
        # Bu dizinde tüm erişim denetimleri ve kimlik doğrulaması<br />
        # iptal ediliyor<br />
        Satisfy Any<br />
        Allow from all<br />
        </span>
      &lt;/Directory&gt;<br />
    </code></p></div>
    </div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../howto/auth.html"> Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi</a></li>
<li><code class="directive"><a href="#satisfy">Satisfy</a></code></li>
<li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RLimitCPU" id="RLimitCPU">RLimitCPU</a> <a name="rlimitcpu" id="rlimitcpu">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Apache alt süreçleri tarafından çalıştırılan süreçlerin işlemci
tüketimine sınırlama getirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RLimitCPU <var>saniye</var>|max [<var>saniye</var>|max]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Bir değer belirtilmemiştir; işletim sistemi öntanımlıları kullanılır
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
      sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
      birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
      izin verilen üst sınıra ayarlanacağını belirtmek üzere <code>max</code>
      olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
      <code>root</code> olarak veya sistem açılışı sırasında çalıştırılması
      gerekir.</p>

    <p>Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt
      verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır.
      Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu
      günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler
      olmazlar.</p>

    <p>İşlemci özkaynak sınırları saniye cinsinden ifade edilir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#rlimitmem">RLimitMEM</a></code></li>
<li><code class="directive"><a href="#rlimitnproc">RLimitNPROC</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RLimitMEM" id="RLimitMEM">RLimitMEM</a> <a name="rlimitmem" id="rlimitmem">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Apache alt süreçleri tarafından çalıştırılan süreçlerin bellek
tüketimine sınırlama getirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RLimitMEM <var>bayt-sayısı</var>|max [<var>bayt-sayısı</var>|max]
</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Bir değer belirtilmemiştir; işletim sistemi öntanımlıları kullanılır
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
      sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
      birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
      izin verilen üst sınıra ayarlanacağını belirtmek üzere <code>max</code>
      olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
      <code>root</code> olarak veya sistem açılışı sırasında çalıştırılması
      gerekir.</p>

    <p>Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt
      verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır.
      Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu
      günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler
      olmazlar.</p>

    <p>Bellek özkaynak sınırları süreç başına bayt sayısı olarak ifade edilir.
    </p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#rlimitcpu">RLimitCPU</a></code></li>
<li><code class="directive"><a href="#rlimitnproc">RLimitNPROC</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RLimitNPROC" id="RLimitNPROC">RLimitNPROC</a> <a name="rlimitnproc" id="rlimitnproc">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Apache alt süreçleri tarafından çalıştırılabilecek süreç sayısına
sınırlama getirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RLimitNPROC <var>sayı</var>|max [<var>sayı</var>|max]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Bir değer belirtilmemiştir; işletim sistemi öntanımlıları kullanılır
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>1 veya 2 değer alır. İlk değer bütün süreçler için sanal özkaynak
      sınırını, ikinci değer ise kesin özkaynak sınırını belirler. İki değer de
      birer sayı olabileceği gibi bu sınırın işletim sistemi yapılandırmasında
      izin verilen üst sınıra ayarlanacağını belirtmek üzere <code>max</code>
      olabilir. Kesin özkaynak sınırını yükseltmek için sunucunun
      <code>root</code> olarak veya sistem açılışı sırasında çalıştırılması
      gerekir.</p>

    <p>Bu sınırlar Apache’nin kendi alt süreçlerine değil, isteklere yanıt
      verirken Apache alt süreçlerinin çatalladıkları süreçlere uygulanır.
      Bunlar CGI betikleri ve SSI çalıştırma komutları olabilir fakat borulu
      günlük kaydı gibi ana Apache süreci tarafından çatallanmış süreçler
      olmazlar.</p>

    <p>Süreç sayısı sınırı kullanıcı başına süreç sayısına sınırlama getirir.
    </p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>CGI süreçleri sunucu kullanıcı kimliğinden farklı bir kullanıcı
        kimliği altında çalışmıyorsa bu yönerge sunucunun kendi oluşturduğu
        süreç sayısını sınırlayacaktır. Bunun kanıtı <code>error_log</code>’da
        iletilerin çatallanamamasıdır.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#rlimitmem">RLimitMEM</a></code></li>
<li><code class="directive"><a href="#rlimitcpu">RLimitCPU</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Satisfy" id="Satisfy">Satisfy</a> <a name="satisfy" id="satisfy">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Konak seviyesinde erişim denetimi ile kullanıcı kimlik doğrulaması arasındaki etkileşim</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Satisfy Any|All</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Satisfy All</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>2.0.51 sürümü ve sonrasında <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> ve <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> tarafından etkin kılınır.</td></tr>
</table>
    <p><code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> ve <code class="directive"><a href="#require">Require</a></code> yönergelerinin ikisi birden kullanıldığında uygulanacak erişim kuralını belirler. Değer olarak sadece <code>All</code> veya <code>Any</code> belirtilebilir. Bu yönergenin yararlı olabilmesi için belli bir alana hem istemci konak adresi hem de kullanıcı ismi ve parolası belirtmek suretiyle erişilebiliyor olunması gerekir. Bu durumda öntanımlı davranış (<code>All</code>), istemcinin belli bir adrese erişebilmek için belli kısıtlamaları aşması ve geçerli bir kullanıcı adı ve parola girmesi gerekir. <code>Any</code> seçeneğinin belirtildiği durumda ise istemcinin ya konak kısıtlamalarıdan geçmesi ya da geçerli bir kullanıcı adı ve parolası girmesi gerekir. Bu seçenek, belli bir alana erişimi parolayla kısıtlayıp, belli adreslerden gelen kullanıcılara parolasız erişim vermek için kullanılabilir.</p>

    <p>Örneğin, sitenizin belli bir bölümü için iç ağınızdan gelen isteklere sınırsız erişim vermek ama dışardan gelen istekleri parolayla kısıtlamak isterseniz şöyle bir yapılandırma kullanabilirsiniz:</p>

    <div class="example"><p><code>
      Require valid-user<br />
      Order allow,deny<br />
      Allow from 192.168.1<br />
      Satisfy Any
    </code></p></div>

    <p>2.0.51 sürümünden itibaren <code class="directive">Satisfy</code> yönergeleri <code class="directive"><a href="#limit">&lt;Limit&gt;</a></code> ve <code class="directive"><a href="#limitexcept">&lt;LimitExcept&gt;</a></code> bölümleri tarafından belli yöntemlerle kısıtlanmış olabilir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code></li>
<li><code class="directive"><a href="#require">Require</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptInterpreterSource" id="ScriptInterpreterSource">ScriptInterpreterSource</a> <a name="scriptinterpretersource" id="scriptinterpretersource">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>CGI betikleri için yorumlayıcı belirleme tekniği</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ScriptInterpreterSource Registry|Registry-Strict|Script</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ScriptInterpreterSource Script</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Sadece Win32 için; <code>Registry-Strict</code> seçeneği Apache
2.0 ve sonrası için geçerlidir.</td></tr>
</table>
    <p>Bu yönerge Apache’nin CGI betiklerini çalıştıracak yorumlayıcıyı nasıl
      tespit edeceğini belirler. <code>Script</code> öntanımlı olup Apache’nin
      yorumlayıcı olarak betiğin diyezli ünlem satırında (<code>#!</code> ile
      başlayan ilk satır) belirtilen yorumlayıcıyı kullanacağını belirtir.
      Win32 sistemlerinde bu satır genellikle şöyledir:</p>

    <div class="example"><p><code>
      #!C:/Perl/bin/perl.exe
    </code></p></div>

    <p><code>perl</code> yorumlayıcının yeri <code>PATH</code> değişkeninde
      kayıtlı ise şöyle de olabilir:</p>

    <div class="example"><p><code>
      #!perl
    </code></p></div>

    <p><code>ScriptInterpreterSource Registry</code> değeri ise betik dosyası
      uzantısının (<code>.pl</code> gibi) Windows Sicili içindeki
      <code>HKEY_CLASSES_ROOT</code> ağacında arama yapmak için bir arama
      anahtarı olarak kullanılmasını sağlar. Betik dosyasını çalıştırmak için
      tanımlanmış komutu bulmak için <code>Shell\ExecCGI\Command</code> yoluna,
      orada yoksa <code>Shell\Open\Command</code> yoluna bakılır. İkisi de
      yoksa son çare olarak <code>Script</code> seçeneğinin davranışına
      dönülür.</p>

    <p>Örneğin, .pl uzantılı bir betiğin perl ile işlenmesi için sicil ayarı
      şöyle olabilir:</p>

    <div class="example"><p><code><code>HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command\(Default) =&gt;
      C:\Perl\bin\perl.exe -wT</code></code></p></div>

    <div class="warning"><h3>Güvenlik</h3>
    <p><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>’lı dizinlerde
      Apache bulduğu <strong>her</strong> dosyayı çalıştırmayı deneyeceğinden
      <code>ScriptInterpreterSource Registry</code> yapılandırmasını
      kullanırken dikkatli olun. <code>Registry</code> seçeneği genellikle
      çalıştırılmayacak dosyalar için istenmeyen program çağrılarına sebep
      olabilir. Örneğin, çoğu Windows sisteminde <code>.htm</code> dosyaları
      için ön tanımlı "open" komutu Microsoft Internet Explorer’ın
      çalıştırılmasına sebep olur; bu bakımdan, betik dizininde bulunan bir
      <code>.htm</code> dosyası için yapılan bir HTTP isteği tarayıcının sunucu
      artalanında çalıştırılmasına sebep olacaktır. Bu, sistemi bir kaç dakika
      içinde çökertmek için iyi bir yoldur.</p>
    </div>

    <p><code>Registry-Strict</code> seçeneği Apache 2.0’da yeni olup
      <code>Registry</code> seçeneğinin yaptığını
      <code>Shell\ExecCGI\Command</code> yolu için yapar. <code>ExecCGI</code>
      sistem tarafından bilinen bir anahtar olmadığından Windows Siciline elle
      kaydedilmesi gerekir ve dolayısıyla sisteminiz üzerinde istenmeyen
      program çağrılarına sebep olmaz.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerAdmin" id="ServerAdmin">ServerAdmin</a> <a name="serveradmin" id="serveradmin">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun hata iletilerinde istemciye göstereceği eposta adresi
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerAdmin <var>eposta-adresi</var>|<var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ServerAdmin</code> yönergesi, sunucunun bir hata
      durumunda istemciye döndüreceği hata iletilerinde içereceği iletişim
      adresini belirtmek için kullanılır. Eğer <code>httpd</code> sağlanan
      değerin bir URL olmadığını saptarsa değerin bir eposta adresi olduğuna
      hükmeder ve önüne <code>mailto:</code> getirerek onu bir hiper bağ hedefi
      olarak kullanır. Çoğu CGI betiği bir eposta adresi belirtildiği kabulünü
      yaptığından değer olarak bir URL değil bir eposta adresi belirtmeniz
      önerilir. Eğer bir URL belirtecekseniz hedef sizin denetiminizde olan
      başka bir sunucuda bulunmalıdır, yoksa kullanıcılar hata durumunda bu
      adrese erişemeyebilirler.</p>

    <p>Kullanıcıların sunucu hakkında konuşurken isminizden bahsetmemeleri için
      burada belirtilecek adresin sırf bu işe adanmış bir adres olması daha
      iyidir. Örnek:</p>

    <div class="example"><p><code>
      ServerAdmin www-admin@falan.filan.dom
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerAlias" id="ServerAlias">ServerAlias</a> <a name="serveralias" id="serveralias">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstekleri isme dayalı sanal konaklarla eşleştirilirken
kullanılacak konak adları için başka isimler belirtebilmeyi sağlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerAlias <var>konakadı</var> [<var>konakadı</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ServerAlias</code> yönergesi, istekleri <a href="../vhosts/name-based.html">isme dayalı sanal konaklarla</a>
      eşleştirilirken kullanılacak konak adları için başka isimler
      belirtebilmeyi sağlar. <code class="directive">ServerAlias</code> dosya adı kalıp
      karakterleri içerebilir.</p>

    <div class="example"><p><code>
      &lt;VirtualHost *:80&gt;<br />
      ServerName sunucu.mesela.dom<br />
      ServerAlias sunucu sunucu2.mesela.dom sunucu2<br />
      ServerAlias *.mesela.dom<br />
      # ...<br />
      &lt;/VirtualHost&gt;
    </code></p></div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../vhosts/index.html">Apache Sanal Konak Belgeleri</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerName" id="ServerName">ServerName</a> <a name="servername" id="servername">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun özdeşleşeceği konak ismi ve port.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerName [<var>şema</var>://]<var>tam-nitelenmiş-alan-adı</var>[:<var>port</var>]
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Bu yönerge 2.0 sürümünden itibaren 1.3 sürümündeki
<code class="directive">Port</code> yönergesinin işlevselliğini de
üstlenmiştir.</td></tr>
</table>
    <p><code class="directive">ServerName</code> yönergesi, sunucunun kendini
      betimlemekte kullanacağı şema, konak adı ve port değerlerini belirler.
      Bu, yönlendirme URL’leri oluşturulurken kullanılır. Örneğin, HTTP
      sunucusunun barındırıldığı makinenin ismi <code>falan.filan.dom</code>
      olduğu halde makinenin bir de <code>www.filan.dom</code> diye bir de DNS
      rumuzu varsa ve HTTP sunucunuzun bu rumuzla kendini özdeşleştirmesini
      isterseniz bunu şöyle belirtebilirsiniz:</p>

    <div class="example"><p><code>
      ServerName www.filan.dom:80
    </code></p></div>

    <p>Bir <code class="directive">ServerName</code> ataması yapılmamışsa sunucu IP
      adresine atanmış sunucu ismi için bir ters DNS sorgusu yapacaktır.
      <code class="directive">ServerName</code> yönergesinde bir port belirtilmediği
      takdirde sunucu, isteğin geldiği portu kullanacaktır. Öngörülebilirlik ve
      güvenilirlik açısından en iyisi <code class="directive">ServerName</code>
      yönergesini kullanarak açıkça bir konak ismi ve port belirtmektir.</p>

    <p><a href="../vhosts/name-based.html">İsme dayalı sanal konaklar</a>
      kullanıyorsanız, <code class="directive"><a href="#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü içindeki
      <code class="directive">ServerName</code> yönergesi, isteğin <code>Host:</code>
      başlığında bu sanal konakla eşleşecek konak ismini belirler.</p>


    <p>Bazen sunucu, bir ters vekil, yük dengeleyici veya SSL yük aktarım
      uygulaması gibi bir aygıtın arkasında çalışır. Böyle durumlarda sunucunun
      kendine yönelik URL’leri doğru üretebildiğinden emin olmak için
      <code class="directive">ServerName</code> yönergesinde istemcinin bağlanacağı
      <code>https://</code> şeması ve port numarası belirtilir.</p>

    <p>Sunucunun kendine yönelik URL’lerin belirtilen portu içerip içermediğini
      veya istemcinin yaptığı istekte belirtilen port numarasının verilip
      verilmediğinin saptamasını sağlayan (örneğin, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>
      modülü tarafından) ayarlar için <code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code> ve
      <code class="directive"><a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code>
      yönergelerinin açıklamalarına bakınız.</p>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../dns-caveats.html">DNS ile ilgili konular ve Apache</a>
</li>
<li><a href="../vhosts/index.html">Apache Sanal Konak Belgeleri</a></li>
<li><code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code></li>
<li><code class="directive"><a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code></li>
<li><code class="directive"><a href="#namevirtualhost">NameVirtualHost</a></code></li>
<li><code class="directive"><a href="#serveralias">ServerAlias</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerPath" id="ServerPath">ServerPath</a> <a name="serverpath" id="serverpath">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Uyumsuz bir tarayıcı tarafından erişilmesi için bir isme dayalı sanal konak için meşru URL yolu</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerPath <var>URL-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ServerPath</code> yönergesi <a href="../vhosts/index.html">isme
      dayalı sanal konaklar</a>da kullanmak için konağa meşru bir URL yolu
      belirler.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../vhosts/index.html">Apache Sanal Konak Belgeleri</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerRoot" id="ServerRoot">ServerRoot</a> <a name="serverroot" id="serverroot">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucu yapılandırması için kök dizin</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerRoot <var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ServerRoot /usr/local/apache</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ServerRoot</code> yönergesi sunucu yapılandırmasını
      içeren dizinin yerini belirtir. Genellikle <code>conf/</code> ve
      <code>logs/</code> gibi alt dizinler içerir. <code class="directive"><a href="#include">Include</a></code>, <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> gibi diğer yapılandırma
      yönergelerindeki göreli yollar bu dizine göre ele alınır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      ServerRoot /home/httpd
    </code></p></div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../invoking.html"><code>httpd</code> için <code>-d</code> seçeneği</a></li>
<li><code class="directive">ServerRoot</code> dizininin erişim izinlerinin nasıl
  ayarlanması gerektiğini öğrenmek için <a href="../misc/security_tips.html#serverroot">güvenlik ipuçları</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerSignature" id="ServerSignature">ServerSignature</a> <a name="serversignature" id="serversignature">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucu tarafından üretilen belgelerin dipnotunu ayarlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerSignature On|Off|EMail</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ServerSignature Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">ServerSignature</code> yönergesi, sunucu tarafından
      üretilen belgelerin (hata iletileri, <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> ftp dizin
      listeleri, <code class="module"><a href="../mod/mod_info.html">mod_info</a></code> çıktısı, vs.) altındaki dipnot
      satırını yapılandırabilmenizi sağlar. Böyle bir dipnot satırın
      istenmesinin sebebi vekil zincirlerinde istemciye dönen hata iletisinin
      aslında hangi sunucu tarafından üretildiğini kullanıcıya bildirmektir.</p>

    <p><code>Off</code> değeri öntanımlı değer olup dipnot satırının
      gösterilmemesini sağlar (Apache-1.2 ve öncesi ile uyumluluk).
      <code>On</code> değeri, sunucu sürüm numarası ve hizmeti sunan sanal
      konağın isminden (<code class="directive"><a href="#servername">ServerName</a></code>) oluşan
      bir dipnot satırı oluşturulmasını sağlar; <code>EMail</code> değeri bu
      ikisine ek olarak satıra <code class="directive"><a href="#serveradmin">ServerAdmin</a></code>
      ile belirtilen adres için bir "mailto:" bağı ekler.</p>

    <p>2.0.44 sürümünden beri sunucu sürüm numarasının ayrıntıları <code class="directive"><a href="#servertokens">ServerTokens</a></code> yönergesi ile belirlenmektedir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#servertokens">ServerTokens</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerTokens" id="ServerTokens">ServerTokens</a> <a name="servertokens" id="servertokens">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>Server</code> HTTP yanıt başlığını yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ServerTokens Full</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Bu yönerge <code>Server</code> HTTP yanıt başlığı alanında istemcilere
      sunucunun işletim sistemi, sunucuyla derlenmiş modüller, vs. hakkında
      bilgi verilip verilmeyeceğini belirler.</p>

    <dl>
      <dt><code>ServerTokens Prod[uctOnly]</code></dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server:
      Apache</code></dd>

      <dt><code>ServerTokens Major</code></dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server:
      Apache/2</code></dd>

      <dt><code>ServerTokens Minor</code></dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server:
      Apache/2.0</code></dd>

      <dt><code>ServerTokens Min[imal]</code></dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server:
      Apache/2.0.41</code></dd>

      <dt><code>ServerTokens OS</code></dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server: Apache/2.0.41
      (Unix)</code></dd>

      <dt><code>ServerTokens Full</code> (ya da belirtilmezse)</dt>

      <dd>Sunucu şunu gönderir (<em>örnek</em>): <code>Server: Apache/2.0.41
      (Unix) PHP/4.2.2 MyMod/1.2</code></dd>
    </dl>

    <p>Bu ayarlama sunucunun tamamını etkiler ve her sanal konak için
      farklılaştırılamaz.</p>

    <p>2.0.44 sürümünden itibaren bu yönerge <code class="directive"><a href="#serversignature">ServerSignature</a></code> yönergesi tarafından sunulan
      bilgiyi de etkilemektedir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#serversignature">ServerSignature</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetHandler" id="SetHandler">SetHandler</a> <a name="sethandler" id="sethandler">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Eşleşen tüm dosyaların belli bir eylemci tarafından işlenmesine
sebep olur.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetHandler <var>eylemci-ismi</var>|None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0’da core modülüne taşındı.</td></tr>
</table>
    <p>Bir <code>.htaccess</code> dosyasına veya bir <code class="directive"><a href="#directory">&lt;Directory&gt;</a></code> ya da <code class="directive"><a href="#location">&lt;Location&gt;</a></code> bölümüne yerleştirildiğinde, eşleşen
      tüm dosyaların, ismi <var>eylemci-ismi</var> ile belirtilen <a href="../handler.html">eylemci</a> tarafından çözümlenmesine sebep olur.
      Örneğin, bir dizin içindeki bütün dosyaların, uzantılarına bakılmaksızın
      birer imagemap kural dosyası olarak çözümlenmesini istersiniz, bu dizin
      içindeki bir <code>.htaccess</code> dosyasına şöyle bir satır
      koyabilirsiniz:</p>

    <div class="example"><p><code>
      SetHandler imap-file
    </code></p></div>

    <p>Başka bir örnek: <code>http://localhost/status</code> gibi bir istek
      yapıldığında sunucunun bir durum bilgisi göstermesi için
      <code>httpd.conf</code> dosyasına şöyle bir satır koyabilirsiniz:</p>

    <div class="example"><p><code>
      &lt;Location /status&gt;<br />
      <span class="indent">
        SetHandler server-status<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>Evvelce tanımlanmış bir <code class="directive">SetHandler</code> yönergesini
      <code>None</code> değeriyle geçersiz hale getirebilirsiniz.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetInputFilter" id="SetInputFilter">SetInputFilter</a> <a name="setinputfilter" id="setinputfilter">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>POST girdilerini ve istemci isteklerini işleyecek süzgeçleri
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetInputFilter <var>süzgeç</var>[;<var>süzgeç</var>...]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">SetInputFilter</code> yönergesi, istemci isteklerini
      ve sunucu tarafından alındığı takdirde POST girdisini işleyecek süzgeç
      veya süzgeçleri belirler. Bu, diğer <code class="directive"><a href="../mod/mod_mime.html#addinputfilter">AddInputFilter</a></code> yönergeleri dahil evvelce tanımlanmış
      süzgeçlere eklenir.</p>

    <p>Birden fazla süzgeç belirtilmek istenirse birbirlerinden noktalı
     virgüllerle ayrılmalı ve çıktıyı işleyecekleri sıraya uygun olarak
     sıralanmalıdırlar.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../filter.html">Süzgeçler</a> belgesi</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetOutputFilter" id="SetOutputFilter">SetOutputFilter</a> <a name="setoutputfilter" id="setoutputfilter">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun yanıtlarını işleyecek süzgeçleri belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetOutputFilter <var>süzgeç</var>[;<var>süzgeç</var>...]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">SetOutputFilter</code> yönergesi, istemciye
     gönderilmeden önce sunucunun yanıtlarını işleyecek süzgeçleri belirler.
     Bu, diğer <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code>
     yönergeleri dahil evvelce tanımlanmış süzgeçlere eklenir.</p>

    <p>Örneğin, aşağıdaki yapılandırma ile <code>/www/data/</code> dizinindeki
     bütün dosyalar sunucu taraflı içerik kapsamında ele alınacaktır.</p>

    <div class="example"><p><code>
      &lt;Directory /www/data/&gt;<br />
      <span class="indent">
        SetOutputFilter INCLUDES<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>Birden fazla süzgeç belirtilmek istenirse birbirlerinden noktalı
     virgüllerle ayrılmalı ve çıktıyı işleyecekleri sıraya uygun olarak
     sıralanmalıdırlar.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../filter.html">Süzgeçler</a> belgesi</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="TimeOut" id="TimeOut">TimeOut</a> <a name="timeout" id="timeout">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir istek için başarısız olmadan önce belirli olayların
gerçekleşmesi için sunucunun geçmesini bekleyeceği süre.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>TimeOut <var>saniye</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>TimeOut 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">TimeOut</code> yönergesi çeşitli durumlarda
      Apache’nin bekleyeceği süreyi belirler:</p>

    <ol>
      <li>Veri istemciden okunurken, okuma tamponu boş olduğunda bir TCP
        paketinin gelmesi için beklenecek süre.</li>

      <li>Veri istemciye yazılırken, gönderim tamponu dolu olduğunda bir
        paket alındı bilgisi için beklenecek süre.</li>

      <li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> modülünde bir CGI betiğinin çıktısı için
        beklenecek süre.</li>

      <li><code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> modülünde bir süzme işleminin
        çıktısı için beklenecek süre.</li>

      <li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünde
        <code class="directive"><a href="../mod/mod_proxy.html#proxytimeout">ProxyTimeout</a></code>
        yapılandırılmamışsa öntanımlı zaman aşımı değeri.</li>
    </ol>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="TraceEnable" id="TraceEnable">TraceEnable</a> <a name="traceenable" id="traceenable">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>TRACE</code> isteklerinde davranış şeklini belirler
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>TraceEnable <var>[on|off|extended]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>TraceEnable on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 1.3.34, 2.0.55 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu yönerge çekirdek ve vekil (<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>) sunucuların
      her ikisi için öntanımlı <code>TRACE</code> davranışını değiştirir.
      Öntanımlı olan <code>TraceEnable on</code> ile RFC 2616’dan kaynaklanan
      ve isteğe herhangi bir istek gövdesinin eşlik etmesine izin vermeyen
      <code>TRACE</code> isteklerine izin verilir. <code>TraceEnable off</code>
      ile çekirdek ve vekil (<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>) sunucuların her ikisi
      de <code>TRACE</code> isteklerine yanıt olarak bir <code>405</code>
      (Yönteme izin verilmiyor) hatası döndürür.</p>

    <p><code>TraceEnable extended</code> ile sadece sınama ve tanı koyma
      amaçlarına yönelik olarak istek gövdelerine izin verilir. Asıl sunucu
      istek gövdesini 64k ile sınırlar (<code>Transfer-Encoding: chunked</code>
      kullanılmışsa bölüm başlıkları için 8k daha). Asıl sunucu yanıt
      gövdesinde tüm başlıkları ve bölüm başlıklarının tamamını yansıtacaktır.
      Vekil sunucuda ise istek gövdesi için 64k’lık sınır yoktur.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="UseCanonicalName" id="UseCanonicalName">UseCanonicalName</a> <a name="usecanonicalname" id="usecanonicalname">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun kendi adını ve portunu nasıl belirleyeceğini ayarlar
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>UseCanonicalName On|Off|DNS</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>UseCanonicalName Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Apache‘nin çoğu durumda özüne yönelik URL‘ler (isteğin tekrar aynı
      sunucuya yapıldığı bir URL türü) oluşturması gerekir.
      <code>UseCanonicalName On</code> ile Apache, sunucu için meşru ismi ve
      portu oluşturmak için <code class="directive"><a href="#servername">ServerName</a></code>
      yönergesinde belirtilen ismi ve portu kullanır. Bu isim  CGI'lerde
      <code>SERVER_NAME</code> ve <code>SERVER_PORT</code> değerlerinde ve tüm
      özüne yönelik URL’lerde kullanılır.</p>

    <p><code>UseCanonicalName Off</code> ile Apache, özüne yönelik URL’leri
      varsa istemci tarafından sağlanan konak ismini ve portu kullanarak
      oluşturur; bunlar istemci tarafından sağlanmamışsa yukarıda tanımlanan
      işleme başvurulur. Bu değerler, <a href="../vhosts/name-based.html">isme
      dayalı sanal konakları</a> gerçekleştirirken kullanılan değerlerle aynı
      olup aynı istemcilerle kullanılabilir. <code>SERVER_NAME</code> ve
      <code>SERVER_PORT</code> CGI değişkenleri de istemci tarafından sağlanan
      isim ve portla oluşturulur.</p>

    <p>Bir örnek olarak, iç ağdaki istemcilerin sunucuya <code>www</code> gibi
      bir kısa isim kullanarak bağlandığı durumu ele alırsak daha yararlı olur.
      Kullanıcılar bir kısa isim ve bir dizin isminden oluşan ve <em>bir / ile
      sonlandırılmamış</em> <code>http://www/splat</code> şeklinde bir istek
      yaparlarsa, Apache onları <code>http://www.mesela.dom/splat/</code>
      adresine yönlendirecektir. Eğer kimlik doğrulama da etkinse bu
      kullanıcının iki defa kimlik doğrulamasına sokulmasına sebep olacaktır
      (bir kere <code>www</code> için bir kere de <code>www.mesela.dom</code>
      için; daha ayrıntılı bilgi için <a href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">SSS</a>’y
      e bakınız). Fakat <code class="directive">UseCanonicalName Off</code> olsaydı
      Apache isteği <code>http://www/splat/</code> adresine yönlendirecekti.</p>

    <p><code>UseCanonicalName DNS</code> diye üçüncü bir seçenek daha vardır ve
      istek yaparken <code>Host:</code> başlığını kullanmayan eski istemcileri
      desteklemek amacıyla IP’ye dayalı sanal konaklarla kullanmak için
      tasarlanmıştır. Bu seçenek etkin olduğunda Apache, istemciyi özüne
      yönelik URL’lerle doğru yere bağlamak için sunucu IP adresi üzerinde bir
      ters DNS sorgusu yapar.</p>

    <div class="warning"><h3>Uyarı</h3>
    <p>Eğer CGI’ler <code>SERVER_NAME</code> değerleri için önkabuller
      yapıyorlarsa bu seçenek işlerinin bozulmasına yol açabilir. Aslında
      istemciler konak ismi olarak istedikleri değeri vermekte özgürdürler.
      Fakat eğer CGI, özüne yönelik URL’leri oluştururken sadece
      <code>SERVER_NAME</code> değerini kullanıyorsa bu istendiği gibi
      çalışacaktır.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code></li>
<li><code class="directive"><a href="#servername">ServerName</a></code></li>
<li><code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="UseCanonicalPhysicalPort" id="UseCanonicalPhysicalPort">UseCanonicalPhysicalPort</a> <a name="usecanonicalphysicalport" id="usecanonicalphysicalport">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun kendi adını ve portunu nasıl belirleyeceğini ayarlar
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>UseCanonicalPhysicalPort On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>UseCanonicalPhysicalPort Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p>Apache‘nin çoğu durumda özüne yönelik URL‘ler (isteğin tekrar aynı
      sunucuya yapıldığı bir URL türü) oluşturması gerekir. Apache <code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code> yönergesine bağlı olarak
      sunucu için meşru portu oluştururken <code>UseCanonicalPhysicalPort
      On</code> ile olası port olarak istek tarafından kullanılmakta olan
      fiziksel portu kullanacaktır. <code>UseCanonicalPhysicalPort Off</code>
      olduğunda ise geçerli bir port numarası oluşturmak için asıl fiziksel
      port yerine yapılandırma bilgisi kullanılır.</p>

    <div class="note"><h3>Ek Bilgi</h3>
    <p>Fiziksel port kullanımı etkin olduğunda işlemler şu sırayla
      yürütülür:<br /><br />
     <code>UseCanonicalName On</code></p>
     <ul>
      <li><code>Servername</code> yönergesinde belirtilen port</li>
      <li>Fiziksel port</li>
      <li>Öntanımlı port</li>
     </ul>
     <code>UseCanonicalName Off | DNS</code>
     <ul>
      <li><code>Host:</code> başlığından çözümlenen port</li>
      <li>Fiziksel port</li>
      <li><code>Servername</code> yönergesinde belirtilen port</li>
      <li>Öntanımlı port</li>
     </ul>

    <p><code>UseCanonicalPhysicalPort Off</code> olduğunda işlem sırasında
      fiziksel port adımları atlanır.</p>
    </div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code></li>
<li><code class="directive"><a href="#servername">ServerName</a></code></li>
<li><code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="VirtualHost" id="VirtualHost">&lt;VirtualHost&gt;</a> <a name="virtualhost" id="virtualhost">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sadece belli bir konak ismine ve porta uygulanacak yönergeleri barındırır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>&lt;VirtualHost
    <var>adres</var>[:<var>port</var>] [<var>adres</var>[:<var>port</var>]]
    ...&gt; ... &lt;/VirtualHost&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Çekirdek</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>core</td></tr>
</table>
    <p><code class="directive">&lt;VirtualHost&gt;</code> ve
      <code>&lt;/VirtualHost&gt;</code> birlikte sadece belli bir sanal konağa
      uygulanacak yönergeleri sarmalamakta kullanılırlar. Bir sanal konak
      kapsamında belirtilebilecek her yönerge kullanılabilir. Sunucu belli bir
      sanal konak üzerindeki bir belge için bir istek aldığında <code class="directive">&lt;VirtualHost&gt;</code> bölümünde bulunan yapılandırma
      yönergelerini kullanır. <var>adres</var> şunlardan biri olabilir:</p>

    <ul>
      <li>Sanal konağın IP adresi.</li>

      <li>Sanal konağın IP adresi için tam nitelenmiş alan adı (önerilmez).</li>

      <li><code>NameVirtualHost *</code> ile birlikte tüm IP adresleri ile
        eşleşmek üzere <code>*</code> karakteri.</li>

      <li>Sadece IP sanal konaklarında kullanmak için eşleşmeyen IP adreslerini
        yakalamak amacıyla <code>_default_</code> dizgesi.</li>
    </ul>

    <div class="example"><h3>Örnek</h3><p><code>
      &lt;VirtualHost 10.1.2.3&gt;<br />
      <span class="indent">
        ServerAdmin webmaster@konak.mesela.dom<br />
        DocumentRoot /www/docs/konak.mesela.dom<br />
        ServerName konak.mesela.dom<br />
        ErrorLog logs/konak.mesela.dom-error_log<br />
        TransferLog logs/konak.mesela.dom-access_log<br />
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>


    <p>İsteğe bağlı port numarasını belirtmeyi mümkün kılmak için IPv6
      adresleri köşeli ayraç içine alınır. IPv6 adresi kullanılan bir örnek:</p>

    <div class="example"><p><code>
      &lt;VirtualHost [2001:db8::a00:20ff:fea7:ccea]&gt;<br />
      <span class="indent">
        ServerAdmin webmaster@konak.mesela.dom<br />
        DocumentRoot /www/docs/konak.mesela.dom<br />
        ServerName konak.mesela.dom<br />
        ErrorLog logs/konak.mesela.dom-error_log<br />
        TransferLog logs/konak.mesela.dom-access_log<br />
      </span>
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Her sanal konağın ya farklı bir IP adresi ve port ile ya da farklı bir
      konak ismiyle eşleşmesi gerekir. Birinci durumda sunucu makinesinin çok
      sayıda adresten IP paketleri kabul edecek şekilde yapılandırılması
      gerekir. (Eğer makinede çok sayıda ağ arabirimi yoksa bu, işletim sistemi
      desteklediği takdirde <code>ifconfig alias</code> komutuyla
      sağlanabilir.)</p>

    <div class="note"><h3>Ek Bilgi</h3>
    <p><code class="directive">&lt;VirtualHost&gt;</code> kullanımı Apache’nin
      dinleyeceği adresler üzerinde belirleyici değildir. Apache’nin doğru
      adresi dinlediğinden emin olmak için <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> kullanmanız gerekebilir.</p>
    </div>

    <p>IP’ye dayalı sanal konakları kullanıyorsanız, diğer sanal konaklarda
      açıkça belirtilmemiş IP adresleriyle eşleşecek sanal konağı
      <code>_default_</code> özel ismiyle belirtebilirsiniz. "Ana" sunucu
      yapılandırmasında <code>_default_</code> diye bir sanal konağın
      bulunmaması halinde, hiçbir IP adresi eşleşmesi bulunamadığı takdirde
      <code class="directive">&lt;VirtualHost&gt;</code> bölümleri dışında kalan
      tüm yapılandırmalar bu amaca yönelik olarak kullanılır. (Yalnız dikkat
      edin, bir <code class="directive"><a href="#namevirtualhost">NameVirtualHost</a></code> yönergesi
      ile eşleşen bir IP adresi için ne "ana" sunucu yapılandırması ne de
      <code>_default_</code> sanal konak yapılandırması kullanılır. Bu konuda
      daha ayrıntılı bilgi için <a href="../vhosts/name-based.html">isme dayalı
      sanal konaklar</a> belgesine bakınız.)</p>

    <p>Eşleşilecek portu değiştirmek için bir <code>:port</code>
      belirtebilirsiniz. Port bu şekilde değiştirilmediği takdirde ana
      sunucunun son <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
      yönergesinde belirtilen port kullanılır. Bir adresteki tüm portlarla
      eşleşileceğini belirtmek için <code>:*</code> kullanabilirsiniz. (Bu,
      <code>_default_</code> kullanıldığı takdirde önerilir.)</p>

    <p>Her <code class="directive">&lt;VirtualHost&gt;</code> bloku içinde bir
      <code class="directive"><a href="#servername">ServerName</a></code> yönergesi mutlaka
      olmalıdır. Yokluğu halinde "ana" sunucu yapılandırmasındaki <code class="directive"><a href="#servername">ServerName</a></code> miras alınacaktır (yani, sanal konak
      belirtmek için boşuna uğraşmış olursunuz).</p>

    <div class="warning"><h3>Güvenlik</h3>
    <p>Günlük dosyalarının sunucuyu çalıştıran kullanıcıdan başka herkes
      tarafından yazılabilen bir yerde saklanmasından dolayı ortaya çıkabilecek
      güvenlik sorunları hakkında daha ayrıntılı bilgi için <a href="../misc/security_tips.html">güvenlik ipuçları</a> belgesine
      bakınız.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../vhosts/index.html">Apache Sanal Konak Belgeleri</a></li>
<li><a href="../dns-caveats.html">DNS ile İlgili Konular ve Apache</a></li>
<li><a href="../bind.html">Apache’nin belli adresleri ve portları dinlemek
  üzere yapılandırılması</a></li>
<li>Bir istek alındığında farklı yapılandırma bölümlerinin nasıl bir arada
  ele alındığının açıklaması için <a href="../sections.html">
  &lt;Directory&gt;, &lt;Location&gt; ve &lt;Files&gt; bölümleri nasıl
  çalışır?</a> belgesine bakınız.</li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                     mod/directive-dict.html                                                                             100644       0       0        35060 11256641267  12607  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Yönergeleri Tanımlamakta Kullanılan Terimler - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Yönergeleri Tanımlamakta Kullanılan Terimler</h1>


    <p>Bu belgede Apache <a href="directives.html">yapılandırma yönergeler</a>ini tanımlamakta kullanılan terimler açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#Description">Açıklama</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Syntax">Sözdizimi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Default">Öntanımlı</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Context">Bağlam</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Override">Geçersizleştirme</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Status">Durum</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Module">Modül</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Compatibility">Uyumluluk</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../configuring.html">Yapılandırma dosyaları</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Description" id="Description">Açıklama</a></h2>

<p>Yönergenin kullanım amacının kısa bir açıklaması.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Syntax" id="Syntax">Sözdizimi</a></h2>

    <p>Yönergenin bir yapılandırma dosyasında hangi söz dizimiyle görünebileceği belirtilir. Bu sözdizimi yönergeye özeldir ve ayrıntıları yönerge tanımında açıklanır. Genelde yönerge ismini aralarında boşluklar bırakılmış bir dizi argüman izler. Eğer argümanlardan biri kendi içinde boşluk içeriyorsa çift tırnak içine alınır. İsteğe bağlı argümanlar sözdiziminde köşeli ayraçların arasında gösterilmiştir. Birden fazla olası değeri olan argümanlarda değerler aralarına | karakteri konarak ayrılmıştır. Değerin yerine ismi belirtilen argümanlarda bu isimler <em>eğik</em> yazılırken, kendisi değer olan dizgeler öntanımlı yazıtipi ile gösterilmiştir. Değişik sayıda argüman alan yönergelerde bu durum son argümanı takibeden “...” ile belirtilmiştir.</p>

    <p>Yönergelerde kullanılan argüman türleri çok çeşitlidir. Çok kullanılanlardan bazıları aşağıda tanımlanmıştır.</p>

    <dl>
      <dt><em>URL</em></dt>

      <dd><code>http://www.mesela.dom/yol/yordam/dosya.html</code> örneğindeki gibi protokol şeması ve konak ismini isteğe bağlı bir dosya yolunun izlediği, açılımı “Uniform Resource Locator” olan ve Türkçe’ye “Tektip Özkaynak Konumlayıcı” şeklinde çevrilebilecek adresleri betimler.</dd>

      <dt><em>URL-yolu</em></dt>

      <dd><code>/yol/yordam/dosya.html</code> örneğindeki gibi bir <em>url</em>’nin parçası olarak protokol şeması ve konak ismini izleyen bir yol dizgesini betimler. <em>url-yolu</em>, bir dosya sisteminin kök dizinine göre değil, <a href="core.html#documentroot">DocumentRoot</a> ile belirtilen dizine göre bir dosya yolu betimler.</dd>

      <dt><em>dosya-yolu</em></dt>

      <dd><code>/usr/local/apache/htdocs/yol/yordam/dosya.html</code> örneğindeki gibi yerel dosya sisteminin kök dizini ile başlayan bir dosya yolunu betimler. Aksi belirtilmedikçe, bir / ile başlamayan bir <em>dosya-yolu</em> <a href="core.html#serverroot">ServerRoot</a> ile belirtilen dizine göre ele alınır.</dd>

      <dt><em>dizin-yolu</em></dt>

      <dd><code>/usr/local/apache/htdocs/yol/yordam/</code> örneğindeki gibi kök dizin ile başlayan, yerel dosya sistemindeki bir dizin yolunu betimler.</dd>

      <dt><em>dosya-ismi</em></dt>

      <dd><code>dosya.html</code> örneğindeki gibi dizin yolu içermeyen bir dosya ismini betimler.</dd>

      <dt><em>düzifd</em></dt>

      <dd>Bir Perl uyumlu <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> betimler. Yönerge tanımında <em>düzifd</em> ile eşleşenler argüman olarak ele alınır.</dd>

      <dt><em>uzantı</em></dt>

      <dd>Bu genelde, <em>dosya-ismi</em>’nin bir parçası olarak son noktadan sonraki kısmı betimler. Bununla birlikte, Apache çok sayıda nokta içeren dosya isimlerinde ilk noktadan sonrasını <em>uzantı</em> kabul eden çoklu dosya ismi uzantılarını da tanır. Örneğin, <em>dosya-ismi</em> olarak <code>dosya.html.tr</code> değeri iki uzantı içerir: <code>.html</code> ve
      <code>.tr</code>. Apache yönergelerinde <em>uzantı</em>’ları başında noktası olmaksızın da belirtebilirsiniz. Ayrıca, <em>uzantı</em>’lar harf büyüklüğüne de duyarlı değildir.</dd>

      <dt><em>MIME-türü</em></dt>

      <dd>Dosya biçiminin, <code>text/html</code> örneğindeki gibi aralarına bir / konulmuş asıl ve alt biçimler şeklinde açıklandığı yönteme göre belirtileceğini betimler.</dd>

      <dt><em>ortam-değişkeni</em></dt>

      <dd>Apache yapılandırma sürecinde tanımlanmış bir <a href="../env.html">ortam değişkeni</a>nin ismini betimler. Daha ayrıntılı bilgi için <a href="../env.html">ortam değişkenleri belgesi</a>ne bakınız.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Default" id="Default">Öntanımlı</a></h2>

    <p>Eğer yönerge öntanımlı bir değere sahipse o burada belirtilir (öntanımlı değer, yönergede kullanıcı tarafından belirtilmediği halde Apache tarafından belirtildiği varsayılarak işlem yapılan değerdir). Eğer öntanımlı bir değer yoksa bu bölümde bu durum “<em>Yok</em>” şeklinde belirtilir. Burada belirtilen öntanımlı değerin sunucu ile dağıtılan öntanımlı httpd.conf içindeki yönergede kullanılan değerle aynı olmasının gerekmediğine dikkat ediniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Context" id="Context">Bağlam</a></h2>

    <p>Yönergenin sunucunun yapılandırma dosyalarının nerelerinde meşru kabul edildiği aşağıdaki değerlerin virgül ayraçlı bir listesi halinde burada belirtilir.</p>

    <dl>
      <dt>sunucu geneli</dt>

      <dd>Yönergenin sunucunun (<code>httpd.conf</code> gibi) yapılandırma dosyalarında <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> ve <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> bölümleri <strong>dışında</strong> her yerde kullanılabileceğini belirtir. Ayrıca, <code>.htaccess</code> dosyalarında bulunmasına da izin verilmez.</dd>

      <dt>sanal konak</dt>

      <dd>Yönergenin sunucunun yapılandırma dosyalarının sadece <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümlerinde kullanıldığında geçerli kabul edileceğini belirtir.</dd>

      <dt>dizin</dt>

      <dd>Yönergenin sunucunun yapılandırma dosyalarında sadece <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>, <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code> ve <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> bölümlerinde kullanıldığında geçerli kabul edileceğini belirtir. Bu bağlama konu sınırlamaların çerçevesi  <a href="../sections.html">Yapılandırma Bölümleri</a> içinde çizilmiştir.</dd>

      <dt>.htaccess</dt>

      <dd>Bu bağlamda geçerli olacağı kabul edilen bir yönerge sadece dizin içi <code>.htaccess</code> dosyalarında görüldüğü zaman işleme sokulur. Üzerinde bir <a href="#Override">geçersizleştirme</a> etkin kılınmışsa yönerge her şeye rağmen işleme sokulmayabilir.</dd>
    </dl>

    <p>Yönergeye <em>sadece</em> tasarlandığı bağlam içinde izin verilir; başka bir yerde kullanmayı denerseniz ya sunucunun bu bağlamı doğru şekilde işlemesine engel olan ya da sunucunun tamamen işlevsiz kalmasına sebep olan  -- sunucu hiç başlatılamayabilir -- bir yapılandırma hatası alırsınız.</p>

    <p>Yönergenin geçerli olacağı konumlar, aslında, listelenen bağlamların tamamına mantıksal VEYA uygulanarak bulunur. Başka bir deyişle, bir yönergenin geçerli olacağı yerler "<code>sunucu geneli, .htaccess</code>" şeklinde belirtilmişse yönerge <code>httpd.conf</code> dosyasında ve <code>.htaccess</code> dosyalarında, <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> veya <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümleri haricinde her yerde kullanılabilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Override" id="Override">Geçersizleştirme</a></h2>

    <p>Bir <code>.htaccess</code> dosyasında göründüğü takdirde yönerge işlenirken hangi yapılandırma geçersizleşirmesinin etkin olacağı burada belirtilir. Eğer yönerge <a href="#Context">bağlam</a>ının <code>.htaccess</code> dosyalarında görünmesine izin verilmiyorsa hiçbir bağlam listelenmez.</p>

    <p>Geçersizleştirmeler <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> yönergesi tarafından etkinleştirilir ve belli bir bağlama ve alt seviyelerde başka <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> yönergeleri ile değiştirilmedikçe tüm çocuklarına uygulanır. Yönergenin belgesinde ayrıca kullanılabilecek tüm olası geçersizleştirme isimleri belirtilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Status" id="Status">Durum</a></h2>

    <p>Yönergenin Apache HTTP sunucusuna ne kadar sıkı bağlı olduğunu belirtir. Başka bir deyişle, yönergeye ve işlevselliğine erişim kazanmak için sunucuyu belli bir modül kümesiyle yeniden derlemek gerekip gerekmediği ile ilgili durumu belirtir. Bu özniteliğin olası değerleri şunlardır:</p>

    <dl>
      <dt>Çekirdek</dt>

      <dd>Eğer bir yönerge “Çekirdek” durumuna sahip olarak listelenmişse bu, yönergenin Apache HTTP sunucusunun en iç kısımlarının bir parçası olduğu ve daima kullanılabilir olacağı anlamına gelir.</dd>

      <dt>MPM</dt>

      <dd>“MPM” durumuna sahip bir yönerge <a href="../mpm.html">Çok Süreklilik Modülü</a> tarafından sağlanır. Bu yönerge türü sadece ve sadece yönerge tanımının <a href="#Module">Modül</a> satırında listelenmiş MPM’lerden birini kullanıyorsanız mevcut olacaktır.</dd>

      <dt>Temel</dt>

      <dd>“Temel” durumuna sahip bir yönerge, sunucuda öntanımlı derlenmiş standart Apache modüllerinden biri tarafından destekleniyor demektir. Bu nedenle sunucuyu derlemek için yapılandırırken yönergeyi içeren modülü yapılandırmadan özellikle kaldırmazsanız yönerge normal olarak kullanılabilir olacaktır.</dd>

      <dt>Eklenti</dt>

      <dd>“Eklenti” durumuna sahip bir yönerge, Apache sunucu kitinde bulunan ancak normalde sunucuyla birlikte derlenmeyen modüllerden biri tarafından sağlanır. Yönergeyi ve işlevselliğini etkin kılmak için sunucunun derleme öncesi paket yapılandırması sırasında modülün derleneceğini açıkça belirttikten sonra gerekirse sunucuyu yeniden derlemeniz gerekir.</dd>

      <dt>Deneysel</dt>

      <dd>“Deneysel” durumuna sahip bir yönerge, Apache sunucu kitinde bulunan modüllerden biri tarafından sağlanır ve modülün denenmesi tamamen sizin insiyatifinize bırakılır. Böyle bir yönerge her şeyiyle belgelenmiştir fakat gerektiği gibi desteklenmemiştir. Yönergeyi içeren modül öntanımlı olarak sunucuyla birlikte derlenebileceği gibi derlenmeyebilir de; bunun için yönergenin açıklandığı sayfanın başına ve kullanılabilirliği hakkında bilgi edinmek için yönergeyi içeren modüle bakın.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Module" id="Module">Modül</a></h2>

    <p>Burada sadece yönergeyi tanımlayan kaynak modülün ismi yazılır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Compatibility" id="Compatibility">Uyumluluk</a></h2>

    <p>Eğer yönerge Apache’nin 2. sürüm dağıtımının özgün parçası değilse söz konusu sürüm burada belirtilir. Ayrıca, yönergenin kullanımı belli platformlarla sınırlıysa bunun ayrıntıları da burada belirtilir.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                mod/directives.html                                                                                 100644       0       0        74743 11256641267  12064  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Yönerge Dizini - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="directive-index"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div><div id="preamble"><h1>Yönerge Dizini</h1>


    <p>Standart Apache dağıtımında bulunan yönergelerin tamamı burada
    listelenmiştir. Hepsi aralarında şekilsel bir uyum sağlanarak
    açıklanmışlardır. Açıklamalarında kullanılan terimler için <a href="directive-dict.html" rel="Glossary">Yönerge Sözlüğü</a>ne
    bakabilirsiniz.</p>

    <p>Ayrıca, yönerge ayrıntılarının bir özet olarak listelendiği bir
    <a href="quickreference.html">Hızlı Yönerge Kılavuzu</a> da
    mevcuttur.</p>
  
<p class="letters"><a href="#A">&nbsp;A&nbsp;</a> | <a href="#B">&nbsp;B&nbsp;</a> | <a href="#C">&nbsp;C&nbsp;</a> | <a href="#D">&nbsp;D&nbsp;</a> | <a href="#E">&nbsp;E&nbsp;</a> | <a href="#F">&nbsp;F&nbsp;</a> | <a href="#G">&nbsp;G&nbsp;</a> | <a href="#H">&nbsp;H&nbsp;</a> | <a href="#I">&nbsp;I&nbsp;</a> | <a href="#K">&nbsp;K&nbsp;</a> | <a href="#L">&nbsp;L&nbsp;</a> | <a href="#M">&nbsp;M&nbsp;</a> | <a href="#N">&nbsp;N&nbsp;</a> | <a href="#O">&nbsp;O&nbsp;</a> | <a href="#P">&nbsp;P&nbsp;</a> | <a href="#R">&nbsp;R&nbsp;</a> | <a href="#S">&nbsp;S&nbsp;</a> | <a href="#T">&nbsp;T&nbsp;</a> | <a href="#U">&nbsp;U&nbsp;</a> | <a href="#V">&nbsp;V&nbsp;</a> | <a href="#W">&nbsp;W&nbsp;</a> | <a href="#X">&nbsp;X&nbsp;</a></p>
</div>
<div id="directive-list"><ul>
<li><a href="core.html#acceptfilter" id="A" name="A">AcceptFilter</a></li>
<li><a href="mpm_common.html#acceptmutex">AcceptMutex</a></li>
<li><a href="core.html#acceptpathinfo">AcceptPathInfo</a></li>
<li><a href="core.html#accessfilename">AccessFileName</a></li>
<li><a href="mod_actions.html#action">Action</a></li>
<li><a href="mod_autoindex.html#addalt">AddAlt</a></li>
<li><a href="mod_autoindex.html#addaltbyencoding">AddAltByEncoding</a></li>
<li><a href="mod_autoindex.html#addaltbytype">AddAltByType</a></li>
<li><a href="mod_mime.html#addcharset">AddCharset</a></li>
<li><a href="core.html#adddefaultcharset">AddDefaultCharset</a></li>
<li><a href="mod_autoindex.html#adddescription">AddDescription</a></li>
<li><a href="mod_mime.html#addencoding">AddEncoding</a></li>
<li><a href="mod_mime.html#addhandler">AddHandler</a></li>
<li><a href="mod_autoindex.html#addicon">AddIcon</a></li>
<li><a href="mod_autoindex.html#addiconbyencoding">AddIconByEncoding</a></li>
<li><a href="mod_autoindex.html#addiconbytype">AddIconByType</a></li>
<li><a href="mod_mime.html#addinputfilter">AddInputFilter</a></li>
<li><a href="mod_mime.html#addlanguage">AddLanguage</a></li>
<li><a href="mod_info.html#addmoduleinfo">AddModuleInfo</a></li>
<li><a href="mod_mime.html#addoutputfilter">AddOutputFilter</a></li>
<li><a href="core.html#addoutputfilterbytype">AddOutputFilterByType</a></li>
<li><a href="mod_mime.html#addtype">AddType</a></li>
<li><a href="mod_alias.html#alias">Alias</a></li>
<li><a href="mod_alias.html#aliasmatch">AliasMatch</a></li>
<li><a href="mod_authz_host.html#allow">Allow</a></li>
<li><a href="mod_proxy.html#allowconnect">AllowCONNECT</a></li>
<li><a href="core.html#allowencodedslashes">AllowEncodedSlashes</a></li>
<li><a href="core.html#allowoverride">AllowOverride</a></li>
<li><a href="mod_authn_anon.html#anonymous">Anonymous</a></li>
<li><a href="mod_authn_anon.html#anonymous_logemail">Anonymous_LogEmail</a></li>
<li><a href="mod_authn_anon.html#anonymous_mustgiveemail">Anonymous_MustGiveEmail</a></li>
<li><a href="mod_authn_anon.html#anonymous_nouserid">Anonymous_NoUserID</a></li>
<li><a href="mod_authn_anon.html#anonymous_verifyemail">Anonymous_VerifyEmail</a></li>
<li><a href="mod_auth_basic.html#authbasicauthoritative">AuthBasicAuthoritative</a></li>
<li><a href="mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></li>
<li><a href="mod_authn_dbd.html#authdbduserpwquery">AuthDBDUserPWQuery</a></li>
<li><a href="mod_authn_dbd.html#authdbduserrealmquery">AuthDBDUserRealmQuery</a></li>
<li><a href="mod_authz_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></li>
<li><a href="mod_authn_dbm.html#authdbmtype">AuthDBMType</a></li>
<li><a href="mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></li>
<li><a href="mod_authn_default.html#authdefaultauthoritative">AuthDefaultAuthoritative</a></li>
<li><a href="mod_auth_digest.html#authdigestalgorithm">AuthDigestAlgorithm</a></li>
<li><a href="mod_auth_digest.html#authdigestdomain">AuthDigestDomain</a></li>
<li><a href="mod_auth_digest.html#authdigestnccheck">AuthDigestNcCheck</a></li>
<li><a href="mod_auth_digest.html#authdigestnonceformat">AuthDigestNonceFormat</a></li>
<li><a href="mod_auth_digest.html#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li>
<li><a href="mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></li>
<li><a href="mod_auth_digest.html#authdigestqop">AuthDigestQop</a></li>
<li><a href="mod_auth_digest.html#authdigestshmemsize">AuthDigestShmemSize</a></li>
<li><a href="mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></li>
<li><a href="mod_authnz_ldap.html#authldapbinddn">AuthLDAPBindDN</a></li>
<li><a href="mod_authnz_ldap.html#authldapbindpassword">AuthLDAPBindPassword</a></li>
<li><a href="mod_authnz_ldap.html#authldapcharsetconfig">AuthLDAPCharsetConfig</a></li>
<li><a href="mod_authnz_ldap.html#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></li>
<li><a href="mod_authnz_ldap.html#authldapdereferencealiases">AuthLDAPDereferenceAliases</a></li>
<li><a href="mod_authnz_ldap.html#authldapgroupattribute">AuthLDAPGroupAttribute</a></li>
<li><a href="mod_authnz_ldap.html#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></li>
<li><a href="mod_authnz_ldap.html#authldapremoteuserattribute">AuthLDAPRemoteUserAttribute</a></li>
<li><a href="mod_authnz_ldap.html#authldapremoteuserisdn">AuthLDAPRemoteUserIsDN</a></li>
<li><a href="mod_authnz_ldap.html#authldapurl">AuthLDAPUrl</a></li>
<li><a href="core.html#authname">AuthName</a></li>
<li><a href="mod_authn_alias.html#authnprovideralias">&lt;AuthnProviderAlias&gt;</a></li>
<li><a href="core.html#authtype">AuthType</a></li>
<li><a href="mod_authn_file.html#authuserfile">AuthUserFile</a></li>
<li><a href="mod_authz_dbm.html#authzdbmauthoritative">AuthzDBMAuthoritative</a></li>
<li><a href="mod_authz_dbm.html#authzdbmtype">AuthzDBMType</a></li>
<li><a href="mod_authz_default.html#authzdefaultauthoritative">AuthzDefaultAuthoritative</a></li>
<li><a href="mod_authz_groupfile.html#authzgroupfileauthoritative">AuthzGroupFileAuthoritative</a></li>
<li><a href="mod_authnz_ldap.html#authzldapauthoritative">AuthzLDAPAuthoritative</a></li>
<li><a href="mod_authz_owner.html#authzownerauthoritative">AuthzOwnerAuthoritative</a></li>
<li><a href="mod_authz_user.html#authzuserauthoritative">AuthzUserAuthoritative</a></li>
<li><a href="mod_proxy.html#balancermember" id="B" name="B">BalancerMember</a></li>
<li><a href="mod_setenvif.html#browsermatch">BrowserMatch</a></li>
<li><a href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></li>
<li><a href="mod_log_config.html#bufferedlogs">BufferedLogs</a></li>
<li><a href="mod_cache.html#cachedefaultexpire" id="C" name="C">CacheDefaultExpire</a></li>
<li><a href="mod_disk_cache.html#cachedirlength">CacheDirLength</a></li>
<li><a href="mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></li>
<li><a href="mod_cache.html#cachedisable">CacheDisable</a></li>
<li><a href="mod_cache.html#cacheenable">CacheEnable</a></li>
<li><a href="mod_file_cache.html#cachefile">CacheFile</a></li>
<li><a href="mod_cache.html#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li>
<li><a href="mod_cache.html#cacheignoreheaders">CacheIgnoreHeaders</a></li>
<li><a href="mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li>
<li><a href="mod_cache.html#cacheignorequerystring">CacheIgnoreQueryString</a></li>
<li><a href="mod_cache.html#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers</a></li>
<li><a href="mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li>
<li><a href="mod_cache.html#cachemaxexpire">CacheMaxExpire</a></li>
<li><a href="mod_disk_cache.html#cachemaxfilesize">CacheMaxFileSize</a></li>
<li><a href="mod_disk_cache.html#cacheminfilesize">CacheMinFileSize</a></li>
<li><a href="mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></li>
<li><a href="mod_disk_cache.html#cacheroot">CacheRoot</a></li>
<li><a href="mod_cache.html#cachestorenostore">CacheStoreNoStore</a></li>
<li><a href="mod_cache.html#cachestoreprivate">CacheStorePrivate</a></li>
<li><a href="core.html#cgimapextension">CGIMapExtension</a></li>
<li><a href="mod_charset_lite.html#charsetdefault">CharsetDefault</a></li>
<li><a href="mod_charset_lite.html#charsetoptions">CharsetOptions</a></li>
<li><a href="mod_charset_lite.html#charsetsourceenc">CharsetSourceEnc</a></li>
<li><a href="mod_speling.html#checkcaseonly">CheckCaseOnly</a></li>
<li><a href="mod_speling.html#checkspelling">CheckSpelling</a></li>
<li><a href="mpm_common.html#chrootdir">ChrootDir</a></li>
<li><a href="core.html#contentdigest">ContentDigest</a></li>
<li><a href="mod_usertrack.html#cookiedomain">CookieDomain</a></li>
<li><a href="mod_usertrack.html#cookieexpires">CookieExpires</a></li>
<li><a href="mod_log_config.html#cookielog">CookieLog</a></li>
<li><a href="mod_usertrack.html#cookiename">CookieName</a></li>
<li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li>
<li><a href="mod_usertrack.html#cookietracking">CookieTracking</a></li>
<li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><a href="mod_log_config.html#customlog">CustomLog</a></li>
<li><a href="mod_dav.html#dav" id="D" name="D">Dav</a></li>
<li><a href="mod_dav.html#davdepthinfinity">DavDepthInfinity</a></li>
<li><a href="mod_dav_lock.html#davgenericlockdb">DavGenericLockDB</a></li>
<li><a href="mod_dav_fs.html#davlockdb">DavLockDB</a></li>
<li><a href="mod_dav.html#davmintimeout">DavMinTimeout</a></li>
<li><a href="mod_dbd.html#dbdexptime">DBDExptime</a></li>
<li><a href="mod_dbd.html#dbdkeep">DBDKeep</a></li>
<li><a href="mod_dbd.html#dbdmax">DBDMax</a></li>
<li><a href="mod_dbd.html#dbdmin">DBDMin</a></li>
<li><a href="mod_dbd.html#dbdparams">DBDParams</a></li>
<li><a href="mod_dbd.html#dbdpersist">DBDPersist</a></li>
<li><a href="mod_dbd.html#dbdpreparesql">DBDPrepareSQL</a></li>
<li><a href="mod_dbd.html#dbdriver">DBDriver</a></li>
<li><a href="mod_autoindex.html#defaulticon">DefaultIcon</a></li>
<li><a href="mod_mime.html#defaultlanguage">DefaultLanguage</a></li>
<li><a href="core.html#defaulttype">DefaultType</a></li>
<li><a href="mod_deflate.html#deflatebuffersize">DeflateBufferSize</a></li>
<li><a href="mod_deflate.html#deflatecompressionlevel">DeflateCompressionLevel</a></li>
<li><a href="mod_deflate.html#deflatefilternote">DeflateFilterNote</a></li>
<li><a href="mod_deflate.html#deflatememlevel">DeflateMemLevel</a></li>
<li><a href="mod_deflate.html#deflatewindowsize">DeflateWindowSize</a></li>
<li><a href="mod_authz_host.html#deny">Deny</a></li>
<li><a href="core.html#directory">&lt;Directory&gt;</a></li>
<li><a href="mod_dir.html#directoryindex">DirectoryIndex</a></li>
<li><a href="core.html#directorymatch">&lt;DirectoryMatch&gt;</a></li>
<li><a href="mod_dir.html#directoryslash">DirectorySlash</a></li>
<li><a href="core.html#documentroot">DocumentRoot</a></li>
<li><a href="mod_dumpio.html#dumpioinput">DumpIOInput</a></li>
<li><a href="mod_dumpio.html#dumpiologlevel">DumpIOLogLevel</a></li>
<li><a href="mod_dumpio.html#dumpiooutput">DumpIOOutput</a></li>
<li><a href="mpm_common.html#enableexceptionhook" id="E" name="E">EnableExceptionHook</a></li>
<li><a href="core.html#enablemmap">EnableMMAP</a></li>
<li><a href="core.html#enablesendfile">EnableSendfile</a></li>
<li><a href="core.html#errordocument">ErrorDocument</a></li>
<li><a href="core.html#errorlog">ErrorLog</a></li>
<li><a href="mod_example.html#example">Example</a></li>
<li><a href="mod_expires.html#expiresactive">ExpiresActive</a></li>
<li><a href="mod_expires.html#expiresbytype">ExpiresByType</a></li>
<li><a href="mod_expires.html#expiresdefault">ExpiresDefault</a></li>
<li><a href="mod_status.html#extendedstatus">ExtendedStatus</a></li>
<li><a href="mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></li>
<li><a href="mod_ext_filter.html#extfilteroptions">ExtFilterOptions</a></li>
<li><a href="core.html#fileetag" id="F" name="F">FileETag</a></li>
<li><a href="core.html#files">&lt;Files&gt;</a></li>
<li><a href="core.html#filesmatch">&lt;FilesMatch&gt;</a></li>
<li><a href="mod_filter.html#filterchain">FilterChain</a></li>
<li><a href="mod_filter.html#filterdeclare">FilterDeclare</a></li>
<li><a href="mod_filter.html#filterprotocol">FilterProtocol</a></li>
<li><a href="mod_filter.html#filterprovider">FilterProvider</a></li>
<li><a href="mod_filter.html#filtertrace">FilterTrace</a></li>
<li><a href="mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></li>
<li><a href="core.html#forcetype">ForceType</a></li>
<li><a href="mod_log_forensic.html#forensiclog">ForensicLog</a></li>
<li><a href="mpm_common.html#gracefulshutdowntimeout" id="G" name="G">GracefulShutdownTimeout</a></li>
<li><a href="mpm_common.html#group">Group</a></li>
<li><a href="mod_headers.html#header" id="H" name="H">Header</a></li>
<li><a href="mod_autoindex.html#headername">HeaderName</a></li>
<li><a href="core.html#hostnamelookups">HostnameLookups</a></li>
<li><a href="mod_ident.html#identitycheck" id="I" name="I">IdentityCheck</a></li>
<li><a href="mod_ident.html#identitychecktimeout">IdentityCheckTimeout</a></li>
<li><a href="core.html#ifdefine">&lt;IfDefine&gt;</a></li>
<li><a href="core.html#ifmodule">&lt;IfModule&gt;</a></li>
<li><a href="mod_version.html#ifversion">&lt;IfVersion&gt;</a></li>
<li><a href="mod_imagemap.html#imapbase">ImapBase</a></li>
<li><a href="mod_imagemap.html#imapdefault">ImapDefault</a></li>
<li><a href="mod_imagemap.html#imapmenu">ImapMenu</a></li>
<li><a href="core.html#include">Include</a></li>
<li><a href="mod_autoindex.html#indexheadinsert">IndexHeadInsert</a></li>
<li><a href="mod_autoindex.html#indexignore">IndexIgnore</a></li>
<li><a href="mod_autoindex.html#indexoptions">IndexOptions</a></li>
<li><a href="mod_autoindex.html#indexorderdefault">IndexOrderDefault</a></li>
<li><a href="mod_autoindex.html#indexstylesheet">IndexStyleSheet</a></li>
<li><a href="mod_isapi.html#isapiappendlogtoerrors">ISAPIAppendLogToErrors</a></li>
<li><a href="mod_isapi.html#isapiappendlogtoquery">ISAPIAppendLogToQuery</a></li>
<li><a href="mod_isapi.html#isapicachefile">ISAPICacheFile</a></li>
<li><a href="mod_isapi.html#isapifakeasync">ISAPIFakeAsync</a></li>
<li><a href="mod_isapi.html#isapilognotsupported">ISAPILogNotSupported</a></li>
<li><a href="mod_isapi.html#isapireadaheadbuffer">ISAPIReadAheadBuffer</a></li>
<li><a href="core.html#keepalive" id="K" name="K">KeepAlive</a></li>
<li><a href="core.html#keepalivetimeout">KeepAliveTimeout</a></li>
<li><a href="mod_negotiation.html#languagepriority" id="L" name="L">LanguagePriority</a></li>
<li><a href="mod_ldap.html#ldapcacheentries">LDAPCacheEntries</a></li>
<li><a href="mod_ldap.html#ldapcachettl">LDAPCacheTTL</a></li>
<li><a href="mod_ldap.html#ldapconnectiontimeout">LDAPConnectionTimeout</a></li>
<li><a href="mod_ldap.html#ldapopcacheentries">LDAPOpCacheEntries</a></li>
<li><a href="mod_ldap.html#ldapopcachettl">LDAPOpCacheTTL</a></li>
<li><a href="mod_ldap.html#ldapsharedcachefile">LDAPSharedCacheFile</a></li>
<li><a href="mod_ldap.html#ldapsharedcachesize">LDAPSharedCacheSize</a></li>
<li><a href="mod_ldap.html#ldaptrustedclientcert">LDAPTrustedClientCert</a></li>
<li><a href="mod_ldap.html#ldaptrustedglobalcert">LDAPTrustedGlobalCert</a></li>
<li><a href="mod_ldap.html#ldaptrustedmode">LDAPTrustedMode</a></li>
<li><a href="mod_ldap.html#ldapverifyservercert">LDAPVerifyServerCert</a></li>
<li><a href="core.html#limit">&lt;Limit&gt;</a></li>
<li><a href="core.html#limitexcept">&lt;LimitExcept&gt;</a></li>
<li><a href="core.html#limitinternalrecursion">LimitInternalRecursion</a></li>
<li><a href="core.html#limitrequestbody">LimitRequestBody</a></li>
<li><a href="core.html#limitrequestfields">LimitRequestFields</a></li>
<li><a href="core.html#limitrequestfieldsize">LimitRequestFieldSize</a></li>
<li><a href="core.html#limitrequestline">LimitRequestLine</a></li>
<li><a href="core.html#limitxmlrequestbody">LimitXMLRequestBody</a></li>
<li><a href="mpm_common.html#listen">Listen</a></li>
<li><a href="mpm_common.html#listenbacklog">ListenBackLog</a></li>
<li><a href="mod_so.html#loadfile">LoadFile</a></li>
<li><a href="mod_so.html#loadmodule">LoadModule</a></li>
<li><a href="core.html#location">&lt;Location&gt;</a></li>
<li><a href="core.html#locationmatch">&lt;LocationMatch&gt;</a></li>
<li><a href="mpm_common.html#lockfile">LockFile</a></li>
<li><a href="mod_log_config.html#logformat">LogFormat</a></li>
<li><a href="core.html#loglevel">LogLevel</a></li>
<li><a href="mpm_common.html#maxclients" id="M" name="M">MaxClients</a></li>
<li><a href="core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></li>
<li><a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><a href="beos.html#maxrequestsperthread">MaxRequestsPerThread</a></li>
<li><a href="prefork.html#maxspareservers">MaxSpareServers</a></li>
<li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><a href="mpm_netware.html#maxthreads">MaxThreads</a></li>
<li><a href="mod_mem_cache.html#mcachemaxobjectcount">MCacheMaxObjectCount</a></li>
<li><a href="mod_mem_cache.html#mcachemaxobjectsize">MCacheMaxObjectSize</a></li>
<li><a href="mod_mem_cache.html#mcachemaxstreamingbuffer">MCacheMaxStreamingBuffer</a></li>
<li><a href="mod_mem_cache.html#mcacheminobjectsize">MCacheMinObjectSize</a></li>
<li><a href="mod_mem_cache.html#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></li>
<li><a href="mod_mem_cache.html#mcachesize">MCacheSize</a></li>
<li><a href="mod_cern_meta.html#metadir">MetaDir</a></li>
<li><a href="mod_cern_meta.html#metafiles">MetaFiles</a></li>
<li><a href="mod_cern_meta.html#metasuffix">MetaSuffix</a></li>
<li><a href="mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></li>
<li><a href="prefork.html#minspareservers">MinSpareServers</a></li>
<li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><a href="mod_file_cache.html#mmapfile">MMapFile</a></li>
<li><a href="mod_mime.html#modmimeusepathinfo">ModMimeUsePathInfo</a></li>
<li><a href="mod_mime.html#multiviewsmatch">MultiviewsMatch</a></li>
<li><a href="core.html#namevirtualhost" id="N" name="N">NameVirtualHost</a></li>
<li><a href="mod_proxy.html#noproxy">NoProxy</a></li>
<li><a href="mod_nw_ssl.html#nwssltrustedcerts">NWSSLTrustedCerts</a></li>
<li><a href="mod_nw_ssl.html#nwsslupgradeable">NWSSLUpgradeable</a></li>
<li><a href="core.html#options" id="O" name="O">Options</a></li>
<li><a href="mod_authz_host.html#order">Order</a></li>
<li><a href="mod_env.html#passenv" id="P" name="P">PassEnv</a></li>
<li><a href="mpm_common.html#pidfile">PidFile</a></li>
<li><a href="mod_echo.html#protocolecho">ProtocolEcho</a></li>
<li><a href="mod_proxy.html#proxy">&lt;Proxy&gt;</a></li>
<li><a href="mod_proxy.html#proxybadheader">ProxyBadHeader</a></li>
<li><a href="mod_proxy.html#proxyblock">ProxyBlock</a></li>
<li><a href="mod_proxy.html#proxydomain">ProxyDomain</a></li>
<li><a href="mod_proxy.html#proxyerroroverride">ProxyErrorOverride</a></li>
<li><a href="mod_proxy.html#proxyftpdircharset">ProxyFtpDirCharset</a></li>
<li><a href="mod_proxy.html#proxyiobuffersize">ProxyIOBufferSize</a></li>
<li><a href="mod_proxy.html#proxymatch">&lt;ProxyMatch&gt;</a></li>
<li><a href="mod_proxy.html#proxymaxforwards">ProxyMaxForwards</a></li>
<li><a href="mod_proxy.html#proxypass">ProxyPass</a></li>
<li><a href="mod_proxy.html#proxypassinterpolateenv">ProxyPassInterpolateEnv</a></li>
<li><a href="mod_proxy.html#proxypassmatch">ProxyPassMatch</a></li>
<li><a href="mod_proxy.html#proxypassreverse">ProxyPassReverse</a></li>
<li><a href="mod_proxy.html#proxypassreversecookiedomain">ProxyPassReverseCookieDomain</a></li>
<li><a href="mod_proxy.html#proxypassreversecookiepath">ProxyPassReverseCookiePath</a></li>
<li><a href="mod_proxy.html#proxypreservehost">ProxyPreserveHost</a></li>
<li><a href="mod_proxy.html#proxyreceivebuffersize">ProxyReceiveBufferSize</a></li>
<li><a href="mod_proxy.html#proxyremote">ProxyRemote</a></li>
<li><a href="mod_proxy.html#proxyremotematch">ProxyRemoteMatch</a></li>
<li><a href="mod_proxy.html#proxyrequests">ProxyRequests</a></li>
<li><a href="mod_proxy_scgi.html#proxyscgiinternalredirect">ProxySCGIInternalRedirect</a></li>
<li><a href="mod_proxy_scgi.html#proxyscgisendfile">ProxySCGISendfile</a></li>
<li><a href="mod_proxy.html#proxyset">ProxySet</a></li>
<li><a href="mod_proxy.html#proxystatus">ProxyStatus</a></li>
<li><a href="mod_proxy.html#proxytimeout">ProxyTimeout</a></li>
<li><a href="mod_proxy.html#proxyvia">ProxyVia</a></li>
<li><a href="mod_autoindex.html#readmename" id="R" name="R">ReadmeName</a></li>
<li><a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><a href="mod_alias.html#redirect">Redirect</a></li>
<li><a href="mod_alias.html#redirectmatch">RedirectMatch</a></li>
<li><a href="mod_alias.html#redirectpermanent">RedirectPermanent</a></li>
<li><a href="mod_alias.html#redirecttemp">RedirectTemp</a></li>
<li><a href="mod_mime.html#removecharset">RemoveCharset</a></li>
<li><a href="mod_mime.html#removeencoding">RemoveEncoding</a></li>
<li><a href="mod_mime.html#removehandler">RemoveHandler</a></li>
<li><a href="mod_mime.html#removeinputfilter">RemoveInputFilter</a></li>
<li><a href="mod_mime.html#removelanguage">RemoveLanguage</a></li>
<li><a href="mod_mime.html#removeoutputfilter">RemoveOutputFilter</a></li>
<li><a href="mod_mime.html#removetype">RemoveType</a></li>
<li><a href="mod_headers.html#requestheader">RequestHeader</a></li>
<li><a href="core.html#require">Require</a></li>
<li><a href="mod_rewrite.html#rewritebase">RewriteBase</a></li>
<li><a href="mod_rewrite.html#rewritecond">RewriteCond</a></li>
<li><a href="mod_rewrite.html#rewriteengine">RewriteEngine</a></li>
<li><a href="mod_rewrite.html#rewritelock">RewriteLock</a></li>
<li><a href="mod_rewrite.html#rewritelog">RewriteLog</a></li>
<li><a href="mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></li>
<li><a href="mod_rewrite.html#rewritemap">RewriteMap</a></li>
<li><a href="mod_rewrite.html#rewriteoptions">RewriteOptions</a></li>
<li><a href="mod_rewrite.html#rewriterule">RewriteRule</a></li>
<li><a href="core.html#rlimitcpu">RLimitCPU</a></li>
<li><a href="core.html#rlimitmem">RLimitMEM</a></li>
<li><a href="core.html#rlimitnproc">RLimitNPROC</a></li>
<li><a href="core.html#satisfy" id="S" name="S">Satisfy</a></li>
<li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><a href="mod_actions.html#script">Script</a></li>
<li><a href="mod_alias.html#scriptalias">ScriptAlias</a></li>
<li><a href="mod_alias.html#scriptaliasmatch">ScriptAliasMatch</a></li>
<li><a href="core.html#scriptinterpretersource">ScriptInterpreterSource</a></li>
<li><a href="mod_cgi.html#scriptlog">ScriptLog</a></li>
<li><a href="mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></li>
<li><a href="mod_cgi.html#scriptloglength">ScriptLogLength</a></li>
<li><a href="mod_cgid.html#scriptsock">ScriptSock</a></li>
<li><a href="mod_nw_ssl.html#securelisten">SecureListen</a></li>
<li><a href="mod_status.html#seerequesttail">SeeRequestTail</a></li>
<li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><a href="core.html#serveradmin">ServerAdmin</a></li>
<li><a href="core.html#serveralias">ServerAlias</a></li>
<li><a href="mpm_common.html#serverlimit">ServerLimit</a></li>
<li><a href="core.html#servername">ServerName</a></li>
<li><a href="core.html#serverpath">ServerPath</a></li>
<li><a href="core.html#serverroot">ServerRoot</a></li>
<li><a href="core.html#serversignature">ServerSignature</a></li>
<li><a href="core.html#servertokens">ServerTokens</a></li>
<li><a href="mod_env.html#setenv">SetEnv</a></li>
<li><a href="mod_setenvif.html#setenvif">SetEnvIf</a></li>
<li><a href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></li>
<li><a href="core.html#sethandler">SetHandler</a></li>
<li><a href="core.html#setinputfilter">SetInputFilter</a></li>
<li><a href="core.html#setoutputfilter">SetOutputFilter</a></li>
<li><a href="mod_include.html#ssienableaccess">SSIEnableAccess</a></li>
<li><a href="mod_include.html#ssiendtag">SSIEndTag</a></li>
<li><a href="mod_include.html#ssierrormsg">SSIErrorMsg</a></li>
<li><a href="mod_include.html#ssistarttag">SSIStartTag</a></li>
<li><a href="mod_include.html#ssitimeformat">SSITimeFormat</a></li>
<li><a href="mod_include.html#ssiundefinedecho">SSIUndefinedEcho</a></li>
<li><a href="mod_ssl.html#sslcacertificatefile">SSLCACertificateFile</a></li>
<li><a href="mod_ssl.html#sslcacertificatepath">SSLCACertificatePath</a></li>
<li><a href="mod_ssl.html#sslcadnrequestfile">SSLCADNRequestFile</a></li>
<li><a href="mod_ssl.html#sslcadnrequestpath">SSLCADNRequestPath</a></li>
<li><a href="mod_ssl.html#sslcarevocationfile">SSLCARevocationFile</a></li>
<li><a href="mod_ssl.html#sslcarevocationpath">SSLCARevocationPath</a></li>
<li><a href="mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile</a></li>
<li><a href="mod_ssl.html#sslcertificatefile">SSLCertificateFile</a></li>
<li><a href="mod_ssl.html#sslcertificatekeyfile">SSLCertificateKeyFile</a></li>
<li><a href="mod_ssl.html#sslciphersuite">SSLCipherSuite</a></li>
<li><a href="mod_ssl.html#sslcryptodevice">SSLCryptoDevice</a></li>
<li><a href="mod_ssl.html#sslengine">SSLEngine</a></li>
<li><a href="mod_ssl.html#sslhonorcipherorder">SSLHonorCipherOrder</a></li>
<li><a href="mod_ssl.html#sslmutex">SSLMutex</a></li>
<li><a href="mod_ssl.html#ssloptions">SSLOptions</a></li>
<li><a href="mod_ssl.html#sslpassphrasedialog">SSLPassPhraseDialog</a></li>
<li><a href="mod_ssl.html#sslprotocol">SSLProtocol</a></li>
<li><a href="mod_ssl.html#sslproxycacertificatefile">SSLProxyCACertificateFile</a></li>
<li><a href="mod_ssl.html#sslproxycacertificatepath">SSLProxyCACertificatePath</a></li>
<li><a href="mod_ssl.html#sslproxycarevocationfile">SSLProxyCARevocationFile</a></li>
<li><a href="mod_ssl.html#sslproxycarevocationpath">SSLProxyCARevocationPath</a></li>
<li><a href="mod_ssl.html#sslproxycheckpeercn">SSLProxyCheckPeerCN</a></li>
<li><a href="mod_ssl.html#sslproxycheckpeerexpire">SSLProxyCheckPeerExpire</a></li>
<li><a href="mod_ssl.html#sslproxyciphersuite">SSLProxyCipherSuite</a></li>
<li><a href="mod_ssl.html#sslproxyengine">SSLProxyEngine</a></li>
<li><a href="mod_ssl.html#sslproxymachinecertificatefile">SSLProxyMachineCertificateFile</a></li>
<li><a href="mod_ssl.html#sslproxymachinecertificatepath">SSLProxyMachineCertificatePath</a></li>
<li><a href="mod_ssl.html#sslproxyprotocol">SSLProxyProtocol</a></li>
<li><a href="mod_ssl.html#sslproxyverify">SSLProxyVerify</a></li>
<li><a href="mod_ssl.html#sslproxyverifydepth">SSLProxyVerifyDepth</a></li>
<li><a href="mod_ssl.html#sslrandomseed">SSLRandomSeed</a></li>
<li><a href="mod_ssl.html#sslrenegbuffersize">SSLRenegBufferSize</a></li>
<li><a href="mod_ssl.html#sslrequire">SSLRequire</a></li>
<li><a href="mod_ssl.html#sslrequiressl">SSLRequireSSL</a></li>
<li><a href="mod_ssl.html#sslsessioncache">SSLSessionCache</a></li>
<li><a href="mod_ssl.html#sslsessioncachetimeout">SSLSessionCacheTimeout</a></li>
<li><a href="mod_ssl.html#sslstrictsnivhostcheck">SSLStrictSNIVHostCheck</a></li>
<li><a href="mod_ssl.html#sslusername">SSLUserName</a></li>
<li><a href="mod_ssl.html#sslverifyclient">SSLVerifyClient</a></li>
<li><a href="mod_ssl.html#sslverifydepth">SSLVerifyDepth</a></li>
<li><a href="mpm_common.html#startservers">StartServers</a></li>
<li><a href="mpm_common.html#startthreads">StartThreads</a></li>
<li><a href="mod_substitute.html#substitute">Substitute</a></li>
<li><a href="mod_suexec.html#suexecusergroup">SuexecUserGroup</a></li>
<li><a href="mpm_common.html#threadlimit" id="T" name="T">ThreadLimit</a></li>
<li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
<li><a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
<li><a href="core.html#timeout">TimeOut</a></li>
<li><a href="core.html#traceenable">TraceEnable</a></li>
<li><a href="mod_log_config.html#transferlog">TransferLog</a></li>
<li><a href="mod_mime.html#typesconfig">TypesConfig</a></li>
<li><a href="mod_env.html#unsetenv" id="U" name="U">UnsetEnv</a></li>
<li><a href="core.html#usecanonicalname">UseCanonicalName</a></li>
<li><a href="core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></li>
<li><a href="mpm_common.html#user">User</a></li>
<li><a href="mod_userdir.html#userdir">UserDir</a></li>
<li><a href="mod_vhost_alias.html#virtualdocumentroot" id="V" name="V">VirtualDocumentRoot</a></li>
<li><a href="mod_vhost_alias.html#virtualdocumentrootip">VirtualDocumentRootIP</a></li>
<li><a href="core.html#virtualhost">&lt;VirtualHost&gt;</a></li>
<li><a href="mod_vhost_alias.html#virtualscriptalias">VirtualScriptAlias</a></li>
<li><a href="mod_vhost_alias.html#virtualscriptaliasip">VirtualScriptAliasIP</a></li>
<li><a href="mpm_winnt.html#win32disableacceptex" id="W" name="W">Win32DisableAcceptEx</a></li>
<li><a href="mod_include.html#xbithack" id="X" name="X">XBitHack</a></li>
</ul></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                             mod/event.html                                                                                      100644       0       0        21443 11256641267  11031  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>event - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM event</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>An experimental variant of the standard <code class="module"><a href="../mod/worker.html">worker</a></code>
MPM</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mpm_event_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>event.c</td></tr></table>
<h3>Summary</h3>

    <div class="warning"><h3>Warning</h3>
      <p>This MPM is experimental, so it may or may not work as
      expected.</p> 
    </div>

    <p>The <code class="module"><a href="../mod/event.html">event</a></code> Multi-Processing Module (MPM) is
    designed to allow more requests to be served simultaneously by
    passing off some processing work to supporting threads, freeing up
    the main threads to work on new requests.  It is based on the
    <code class="module"><a href="../mod/worker.html">worker</a></code> MPM, which implements a hybrid
    multi-process multi-threaded server.  Run-time configuration
    directives are identical to those provided by
    <code class="module"><a href="../mod/worker.html">worker</a></code>.</p>

    <p>To use the <code class="module"><a href="../mod/event.html">event</a></code> MPM, add
      <code>--with-mpm=event</code> to the <code class="program"><a href="../programs/configure.html">configure</a></code>
      script's arguments when building the <code class="program"><a href="../programs/httpd.html">httpd</a></code>.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#acceptmutex">AcceptMutex</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#enableexceptionhook">EnableExceptionHook</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#lockfile">LockFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#serverlimit">ServerLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadlimit">ThreadLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">How it Works</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#requirements">Requirements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#issues">Issues</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="worker.html">The worker MPM</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="how-it-works" id="how-it-works">How it Works</a></h2>
    <p>This MPM tries to fix the 'keep alive problem' in HTTP. After a client
    completes the first request, the client can keep the connection
    open, and send further requests using the same socket. This can
    save signifigant overhead in creating TCP connections. However,
    Apache traditionally keeps an entire child process/thread waiting
    for data from the client, which brings its own disadvantages. To
    solve this problem, this MPM uses a dedicated thread to handle both
    the Listening sockets, and all sockets that are in a Keep Alive
    state.</p>

    <p>The MPM assumes that the underlying <code>apr_pollset</code>
    implementation is reasonably threadsafe. This enables the MPM to
    avoid excessive high level locking, or having to wake up the listener
    thread in order to send it a keep-alive socket. This is currently
    only compatible with KQueue and EPoll.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requirements" id="requirements">Requirements</a></h2>
    <p>This MPM depends on <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>'s atomic
    compare-and-swap operations for thread synchronization. If you are
    compiling for an x86 target and you don't need to support 386s, or
    you are compiling for a SPARC and you don't need to run on
    pre-UltraSPARC chips, add
    <code>--enable-nonportable-atomics=yes</code> to the
    <code class="program"><a href="../programs/configure.html">configure</a></code> script's arguments. This will cause
    APR to implement atomic operations using efficient opcodes not
    available in older CPUs.</p>

    <p>This MPM does not perform well on older platforms which lack good
    threading, but the requirement for EPoll or KQueue makes this
    moot.</p>

    <ul>
    
      <li>To use this MPM on FreeBSD, FreeBSD 5.3 or higher is recommended.
      However, it is possible to run this MPM on FreeBSD 5.2.1, if you
      use <code>libkse</code> (see <code>man libmap.conf</code>).</li>

      <li>For NetBSD, at least version 2.0 is recommended.</li>

      <li>For Linux, a 2.6 kernel is recommended. It is also necessary to
      ensure that your version of <code>glibc</code> has been compiled
      with support for EPoll.</li>

    </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="issues" id="issues">Issues</a></h2>
    <p>At present, this MPM is incompatible with <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>, and
    other input filters.</p>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                             mod/index.html                                                                                      100644       0       0        33665 11256641267  11030  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Modül Dizini - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="module-index"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Modül Dizini</h1>


    <p>Apache dağıtımının parçası olarak gelen modüllerin tamamı aşağıda
    listelenmiştir. Ayrıca, tüm Apache yönergelerinin alfabetik olarak
    listelendiği bir <a href="directives.html">Yönerge Dizini</a> de
    mevcuttur.</p>
  </div>
<div id="quickview"><ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#core">Temel Özellikler ve Çoklu İşlem Modülleri</a></li><li><img alt="" src="../images/down.gif" /> <a href="#other">Diğer Modüller</a></li></ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../mpm.html">Çok Süreçlilik Modülleri (MPM’ler)</a>
  </li>
<li><a href="quickreference.html">Hızlı Yönerge Kılavuzu</a>
  </li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section"><h2><a id="core" name="core">Temel Özellikler ve Çoklu İşlem Modülleri</a></h2>
<dl>
<dt><a href="core.html">core</a></dt><dd>Apache HTTP Sunucusunda daima mevcut olan çekirdek
 özellikler</dd>
<dt><a href="mpm_common.html">mpm_common</a></dt><dd class="separate">Birden fazla Çok Süreçlilik Modülü (MPM) tarafından gerçeklenmiş
  yönergeler bütünü.</dd>
<dt><a href="beos.html">beos</a></dt><dd>This Multi-Processing Module is optimized for BeOS.</dd>
<dt><a href="event.html">event</a></dt><dd>An experimental variant of the standard <code class="module"><a href="../mod/worker.html">worker</a></code>
MPM</dd>
<dt><a href="mpm_netware.html">mpm_netware</a></dt><dd>Multi-Processing Module implementing an exclusively threaded web
    server optimized for Novell NetWare</dd>
<dt><a href="mpmt_os2.html">mpmt_os2</a></dt><dd>Hybrid multi-process, multi-threaded MPM for OS/2</dd>
<dt><a href="prefork.html">prefork</a></dt><dd>Evresiz ön çatallamalı HTTP sunucusu oluşturur</dd>
<dt><a href="mpm_winnt.html">mpm_winnt</a></dt><dd>This Multi-Processing Module is optimized for Windows
NT.</dd>
<dt><a href="worker.html">worker</a></dt><dd>Çok evreli ve çok süreçli melez bir HTTP sunucusu oluşturan çok
süreçlilik modülü.</dd>
</dl></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section"><h2><a id="other" name="other">Diğer Modüller</a></h2>
<p class="letters"><a href="#A">&nbsp;A&nbsp;</a> | <a href="#C">&nbsp;C&nbsp;</a> | <a href="#D">&nbsp;D&nbsp;</a> | <a href="#E">&nbsp;E&nbsp;</a> | <a href="#F">&nbsp;F&nbsp;</a> | <a href="#H">&nbsp;H&nbsp;</a> | <a href="#I">&nbsp;I&nbsp;</a> | <a href="#L">&nbsp;L&nbsp;</a> | <a href="#M">&nbsp;M&nbsp;</a> | <a href="#N">&nbsp;N&nbsp;</a> | <a href="#P">&nbsp;P&nbsp;</a> | <a href="#R">&nbsp;R&nbsp;</a> | <a href="#S">&nbsp;S&nbsp;</a> | <a href="#U">&nbsp;U&nbsp;</a> | <a href="#V">&nbsp;V&nbsp;</a></p>
<dl><dt><a href="mod_actions.html" id="A" name="A">mod_actions</a></dt><dd>This module provides for executing CGI scripts based on
media type or request method.</dd>
<dt><a href="mod_alias.html">mod_alias</a></dt><dd>Belge ağacının parçalarının dosya sisteminin parçalarıyla
eşlenmesini sağlar ve URL yönlendirmesi yapar.</dd>
<dt><a href="mod_asis.html">mod_asis</a></dt><dd>Sends files that contain their own
HTTP headers</dd>
<dt><a href="mod_auth_basic.html">mod_auth_basic</a></dt><dd>Basic authentication</dd>
<dt><a href="mod_auth_digest.html">mod_auth_digest</a></dt><dd>User authentication using MD5
    Digest Authentication.</dd>
<dt><a href="mod_authn_alias.html">mod_authn_alias</a></dt><dd>Provides the ability to create extended authentication 
    providers based on actual providers</dd>
<dt><a href="mod_authn_anon.html">mod_authn_anon</a></dt><dd>Allows "anonymous" user access to authenticated
    areas</dd>
<dt><a href="mod_authn_dbd.html">mod_authn_dbd</a></dt><dd>User authentication using an SQL database</dd>
<dt><a href="mod_authn_dbm.html">mod_authn_dbm</a></dt><dd>User authentication using DBM files</dd>
<dt><a href="mod_authn_default.html">mod_authn_default</a></dt><dd>Authentication fallback module</dd>
<dt><a href="mod_authn_file.html">mod_authn_file</a></dt><dd>User authentication using text files</dd>
<dt><a href="mod_authnz_ldap.html">mod_authnz_ldap</a></dt><dd>Allows an LDAP directory to be used to store the database
for HTTP Basic authentication.</dd>
<dt><a href="mod_authz_dbm.html">mod_authz_dbm</a></dt><dd>Group authorization using DBM files</dd>
<dt><a href="mod_authz_default.html">mod_authz_default</a></dt><dd>Authorization fallback module</dd>
<dt><a href="mod_authz_groupfile.html">mod_authz_groupfile</a></dt><dd>Group authorization using plaintext files</dd>
<dt><a href="mod_authz_host.html">mod_authz_host</a></dt><dd>Group authorizations based on host (name or IP
address)</dd>
<dt><a href="mod_authz_owner.html">mod_authz_owner</a></dt><dd>Authorization based on file ownership</dd>
<dt><a href="mod_authz_user.html">mod_authz_user</a></dt><dd>User Authorization</dd>
<dt><a href="mod_autoindex.html">mod_autoindex</a></dt><dd>Unix <code>ls</code> veya Win32 <code>dir</code> kabuk komutunun
yaptığı gibi dizin içeriğini listeler.</dd>
<dt><a href="mod_cache.html" id="C" name="C">mod_cache</a></dt><dd>Content cache keyed to URIs.</dd>
<dt><a href="mod_cern_meta.html">mod_cern_meta</a></dt><dd>CERN httpd metafile semantics</dd>
<dt><a href="mod_cgi.html">mod_cgi</a></dt><dd>Execution of CGI scripts</dd>
<dt><a href="mod_cgid.html">mod_cgid</a></dt><dd>Execution of CGI scripts using an
    external CGI daemon</dd>
<dt><a href="mod_charset_lite.html">mod_charset_lite</a></dt><dd>Specify character set translation or recoding</dd>
<dt><a href="mod_dav.html" id="D" name="D">mod_dav</a></dt><dd>Distributed Authoring and Versioning
(<a href="http://www.webdav.org/">WebDAV</a>) functionality</dd>
<dt><a href="mod_dav_fs.html">mod_dav_fs</a></dt><dd>filesystem provider for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></dd>
<dt><a href="mod_dav_lock.html">mod_dav_lock</a></dt><dd>generic locking module for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></dd>
<dt><a href="mod_dbd.html">mod_dbd</a></dt><dd>Manages SQL database connections</dd>
<dt><a href="mod_deflate.html">mod_deflate</a></dt><dd>Compress content before it is delivered to the
client</dd>
<dt><a href="mod_dir.html">mod_dir</a></dt><dd>Bölü çizgisiyle biten yönlendirmeleri yapar ve dizin içeriği dosyalarını sunar.</dd>
<dt><a href="mod_disk_cache.html">mod_disk_cache</a></dt><dd>Content cache storage manager keyed to URIs</dd>
<dt><a href="mod_dumpio.html">mod_dumpio</a></dt><dd>Dumps all I/O to error log as desired.</dd>
<dt><a href="mod_echo.html" id="E" name="E">mod_echo</a></dt><dd>A simple echo server to illustrate protocol 
modules</dd>
<dt><a href="mod_env.html">mod_env</a></dt><dd>CGI betiklerine ve SSI sayfalarına aktarılan değişkenlere
müdahale etmek için kullanılır.</dd>
<dt><a href="mod_example.html">mod_example</a></dt><dd>Illustrates the Apache module API</dd>
<dt><a href="mod_expires.html">mod_expires</a></dt><dd>Generation of <code>Expires</code> and
<code>Cache-Control</code> HTTP headers according to user-specified
criteria</dd>
<dt><a href="mod_ext_filter.html">mod_ext_filter</a></dt><dd>Pass the response body through an external program before
delivery to the client</dd>
<dt><a href="mod_file_cache.html" id="F" name="F">mod_file_cache</a></dt><dd>Caches a static list of files in memory</dd>
<dt><a href="mod_filter.html">mod_filter</a></dt><dd>Context-sensitive smart filter configuration module</dd>
<dt><a href="mod_headers.html" id="H" name="H">mod_headers</a></dt><dd>Customization of HTTP request and response
headers</dd>
<dt><a href="mod_ident.html" id="I" name="I">mod_ident</a></dt><dd>RFC 1413 ident lookups</dd>
<dt><a href="mod_imagemap.html">mod_imagemap</a></dt><dd>Server-side imagemap processing</dd>
<dt><a href="mod_include.html">mod_include</a></dt><dd>Server-parsed html documents (Server Side Includes)</dd>
<dt><a href="mod_info.html">mod_info</a></dt><dd>Provides a comprehensive overview of the server
configuration</dd>
<dt><a href="mod_isapi.html">mod_isapi</a></dt><dd>ISAPI Extensions within Apache for Windows</dd>
<dt><a href="mod_ldap.html" id="L" name="L">mod_ldap</a></dt><dd>LDAP connection pooling and result caching services for use
by other LDAP modules</dd>
<dt><a href="mod_log_config.html">mod_log_config</a></dt><dd>Sunucuya yapılan isteklerin günlük kayıtlarının tutulması
</dd>
<dt><a href="mod_log_forensic.html">mod_log_forensic</a></dt><dd>Sunucuya yapılan isteklerin adli günlük kayıtlarının tutulması</dd>
<dt><a href="mod_logio.html">mod_logio</a></dt><dd>Her isteğin girdi ve çıktı uzunluklarının günlüklenmesi.
</dd>
<dt><a href="mod_mem_cache.html" id="M" name="M">mod_mem_cache</a></dt><dd>Content cache keyed to URIs</dd>
<dt><a href="mod_mime.html">mod_mime</a></dt><dd>Associates the requested filename's extensions
    with the file's behavior (handlers and filters)
    and content (mime-type, language, character set and
    encoding)</dd>
<dt><a href="mod_mime_magic.html">mod_mime_magic</a></dt><dd>Determines the MIME type of a file
    by looking at a few bytes of its contents</dd>
<dt><a href="mod_negotiation.html" id="N" name="N">mod_negotiation</a></dt><dd>Provides for <a href="../content-negotiation.html">content negotiation</a></dd>
<dt><a href="mod_nw_ssl.html">mod_nw_ssl</a></dt><dd>Enable SSL encryption for NetWare</dd>
<dt><a href="mod_proxy.html" id="P" name="P">mod_proxy</a></dt><dd>HTTP/1.1 proxy/gateway server</dd>
<dt><a href="mod_proxy_ajp.html">mod_proxy_ajp</a></dt><dd>AJP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></dd>
<dt><a href="mod_proxy_balancer.html">mod_proxy_balancer</a></dt><dd><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> extension for load balancing </dd>
<dt><a href="mod_proxy_connect.html">mod_proxy_connect</a></dt><dd><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> extension for
<code>CONNECT</code> request handling</dd>
<dt><a href="mod_proxy_ftp.html">mod_proxy_ftp</a></dt><dd>FTP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></dd>
<dt><a href="mod_proxy_http.html">mod_proxy_http</a></dt><dd>HTTP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></dd>
<dt><a href="mod_proxy_scgi.html">mod_proxy_scgi</a></dt><dd>SCGI gateway module for <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></dd>
<dt><a href="mod_rewrite.html" id="R" name="R">mod_rewrite</a></dt><dd>Provides a rule-based rewriting engine to rewrite requested
URLs on the fly</dd>
<dt><a href="mod_setenvif.html" id="S" name="S">mod_setenvif</a></dt><dd>Ortam değişkenlerinin isteğin özelliklerine uygun olarak atanmasını sağlar</dd>
<dt><a href="mod_so.html">mod_so</a></dt><dd>Modüllerin ve çalıştırılabilir kodun sunucunun başlatılması veya
yeniden başlatılması sırasında yüklenmesini sağlar.</dd>
<dt><a href="mod_speling.html">mod_speling</a></dt><dd>Attempts to correct mistaken URLs that
users might have entered by ignoring capitalization and by
allowing up to one misspelling</dd>
<dt><a href="mod_ssl.html">mod_ssl</a></dt><dd>Strong cryptography using the Secure Sockets
Layer (SSL) and Transport Layer Security (TLS) protocols</dd>
<dt><a href="mod_status.html">mod_status</a></dt><dd>Sunucu etkinliği ve başarımı hakkında bilgi sağlar.</dd>
<dt><a href="mod_substitute.html">mod_substitute</a></dt><dd>Perform search and replace operations on response bodies</dd>
<dt><a href="mod_suexec.html">mod_suexec</a></dt><dd>CGI betiklerinin belli bir kullanıcı ve grubun aidiyetinde
çalışmasını mümkün kılar.</dd>
<dt><a href="mod_unique_id.html" id="U" name="U">mod_unique_id</a></dt><dd>Provides an environment variable with a unique
identifier for each request</dd>
<dt><a href="mod_userdir.html">mod_userdir</a></dt><dd>Kullanıcılara özel dizinler</dd>
<dt><a href="mod_usertrack.html">mod_usertrack</a></dt><dd>
<em>Clickstream</em> logging of user activity on a site
</dd>
<dt><a href="mod_version.html" id="V" name="V">mod_version</a></dt><dd>Version dependent configuration</dd>
<dt><a href="mod_vhost_alias.html">mod_vhost_alias</a></dt><dd>Kitlesel sanal konakların devingen olarak yapılandırılmasını
sağlar</dd>
</dl></div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                           mod/mod_actions.html                                                                                100644       0       0        21653 11256641267  12212  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_actions - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_actions</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>This module provides for executing CGI scripts based on
media type or request method.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>actions_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_actions.c</td></tr></table>
<h3>Summary</h3>

    <p>This module has two directives. The <code class="directive"><a href="#action">Action</a></code> directive lets you run CGI
    scripts whenever a file of a certain <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME content type</a> is requested. The
    <code class="directive"><a href="#script">Script</a></code> directive lets
    you run CGI scripts whenever a particular method is used in a
    request. This makes it much easier to execute scripts that process
    files.</p> </div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#action">Action</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#script">Script</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li>
<li><a href="../howto/cgi.html">Dynamic Content with CGI</a></li>
<li><a href="../handler.html">Apache's Handler Use</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Action" id="Action">Action</a> <a name="action" id="action">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activates a CGI script for a particular handler or
content-type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Action <var>action-type</var> <var>cgi-script</var> [virtual]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_actions</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>virtual</code> modifier and handler passing were
introduced in Apache 2.1</td></tr>
</table>
    <p>This directive adds an action, which will activate
    <var>cgi-script</var> when <var>action-type</var> is triggered by
    the request.  The <var>cgi-script</var> is the URL-path to a
    resource that has been designated as a CGI script using <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code>.  The
    <var>action-type</var> can be either a <a href="../handler.html">handler</a> or a <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME content type</a>. It sends the URL and
    file path of the requested document using the standard CGI
    <code>PATH_INFO</code> and <code>PATH_TRANSLATED</code>
    environment variables. The handler used for the particular request
    is passed using the <code>REDIRECT_HANDLER</code> variable.</p>

    <div class="example"><h3>Examples</h3><p><code>
      # Requests for files of a particular MIME content type:<br />
      Action image/gif /cgi-bin/images.cgi<br />
      <br />
      # Files of a particular file extension<br />
      AddHandler my-file-type .xyz<br />
      Action my-file-type /cgi-bin/program.cgi<br />
    </code></p></div>

    <p>In the first example, requests for files with a MIME content
    type of <code>image/gif</code> will be handled by the
    specified cgi script <code>/cgi-bin/images.cgi</code>.</p>

    <p>In the second example, requests for files with a file extension of
    <code>.xyz</code> are handled by the specified cgi script 
    <code>/cgi-bin/program.cgi</code>.</p>

    <p>The optional <code>virtual</code> modifier turns off the check
    whether the requested file really exists. This is useful, for example,
    if you want to use the <code class="directive">Action</code> directive in
    virtual locations.</p>

    <div class="example"><h3>Example</h3><p><code>
      &lt;Location /news&gt;<br />
      <span class="indent">
        SetHandler news-handler<br />
        Action news-handler /cgi-bin/news.cgi virtual<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Script" id="Script">Script</a> <a name="script" id="script">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activates a CGI script for a particular request
method.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Script <var>method</var> <var>cgi-script</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_actions</td></tr>
</table>
    <p>This directive adds an action, which will activate
    <var>cgi-script</var> when a file is requested using the method of
    <var>method</var>. The <var>cgi-script</var> is the URL-path to a
    resource that has been designated as a CGI script using <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code>.  The URL and
    file path of the requested document is sent using the standard CGI
    <code>PATH_INFO</code> and <code>PATH_TRANSLATED</code> environment 
    variables.</p>

    <div class="note">
      Any arbitrary method name may be used. <strong>Method names are
      case-sensitive</strong>, so <code>Script PUT</code> and
      <code>Script put</code> have two entirely different
      effects.
    </div>

    <p>Note that the <code class="directive">Script</code> command defines default 
    actions only. If a CGI script is called, or some other resource that is
    capable of handling the requested method internally, it will do
    so. Also note that <code class="directive">Script</code> with a method of 
    <code>GET</code> will only be called if there are query arguments present
    (<em>e.g.</em>, foo.html?hi). Otherwise, the request will
    proceed normally.</p>

    <div class="example"><h3>Examples</h3><p><code>
      # For &lt;ISINDEX&gt;-style searching<br />
      Script GET /cgi-bin/search<br />
      <br />
      # A CGI PUT handler<br />
      Script PUT /~bob/put.cgi<br />
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                     mod/mod_alias.html                                                                                  100644       0       0        64720 11256641267  11645  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_alias - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_alias</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Belge ağacının parçalarının dosya sisteminin parçalarıyla
eşlenmesini sağlar ve URL yönlendirmesi yapar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>alias_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_alias.c</td></tr></table>
<h3>Özet</h3>

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

    <p><code class="directive"><a href="#redirect">Redirect</a></code> 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.</p>

    <p><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> 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 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülü ile
      sağlanan araçlar kullanılır.</p>

  </div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#alias">Alias</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#aliasmatch">AliasMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirect">Redirect</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirectmatch">RedirectMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirectpermanent">RedirectPermanent</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirecttemp">RedirectTemp</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptalias">ScriptAlias</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptaliasmatch">ScriptAliasMatch</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#order">İşlem Sırası</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></li>
<li><a href="../urlmapping.html">URL’lerin Dosya sistemi ile Eşlenmesi</a>
  </li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="order" id="order">İşlem Sırası</a></h2>

    <p>Farklı bağlamlarda bulunan <code class="directive"><a href="#alias">Alias</a></code> ve <code class="directive"><a href="#redirect">Redirect</a></code>
      yönergeleri standart <a href="../sections.html#mergin">katıştırma
      kuralları</a> ile ilgili diğer yönergeler gibi işleme sokulur. Fakat
      aynı bağlam dahilinde (örneğin, aynı <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümünde) çok fazla <code class="directive"><a href="#alias">Alias</a></code> ve <code class="directive"><a href="#redirect">Redirect</a></code> varsa bunlar belli bir
      sıraya göre işleme sokulurlar.</p>

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

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

    <div class="example"><p><code>
    Alias /foo/bar /baz<br />
    Alias /foo /gaz
    </code></p></div>

    <p>Ama yukarıdaki iki satır ters sırada yerleştirilmiş olsaydı,
      <code>/foo</code> rumuzu  daima <code>/foo/bar</code> rumuzundan önce
      eşleşecek, dolayısıyla ikinci yönerge yok sayılacaktı.</p>

  </div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Alias" id="Alias">Alias</a> <a name="alias" id="alias">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>URL’leri dosya sistemi konumlarıyla eşler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Alias <var>URL-yolu</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>

    <p><code class="directive">Alias</code> yönergesi, belgelerin <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> dizininden farklı bir yerde
      saklanmasını mümkün kılar. <code><em>URL-yolu</em></code> ile başlayan
      URL’ler (% imlemesi çözüldükten sonra) <code><em>dizin-yolu</em></code>
      ile başlayan yerel dosyalarla eşlenir. <code><em>URL-yolu</em></code>,
      harf büyüklüğüne duyarsız sistemlerde bile harf büyüklüğüne
      duyarlıdır.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      Alias /image /ftp/pub/image
    </code></p></div>

    <p><code>http://sunucum/image/foo.gif</code> şeklinde bir istek, sunucunun
      <code>/ftp/pub/image/foo.gif</code> dosyasıyla yanıt vermesine sebep
      olurdu. Sadece tam yol parçaları eşleştirilir; bu bakımdan yukarıdaki
      <code class="directive">Alias</code> yapılandırması
      <code>http://sunucum/imagefoo.gif</code> ile eşleşmez. Düzenli
      ifadelerin kullanıldığı daha karmaşık eşleşmeler için <code class="directive"><a href="#aliasmatch">AliasMatch</a></code> yönergesine bakınız.</p>

    <p><code><em>URL-yolu</em></code>’nu bir <code>/</code> ile
      sonlandırırsanız <code class="directive">Alias</code> yönergesini yorumlarken
      sunucunun da sona bir <code>/</code> ekleyeceğine dikkat ediniz. Yani,
      eğer</p>

    <dl><dd><code>Alias /icons/ /usr/local/apache/icons/</code></dd></dl>

    <p>diye bir tanım yaparsanız <code>/icons</code> URL’si için bir
      <code class="directive">Alias</code> kullanılmayacaktır.</p>

    <p><code class="directive">Alias</code> <em>hedefleri</em> için ek <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> bölümleri
      belirtmeniz gerekebileceğine dikkat ediniz. <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> bölümlerinden önce yer alan
      <code class="directive">Alias</code> yönergelerine özellikle bakılır,
      dolayısıyla sadece <code class="directive">Alias</code> hedefleri etkilenir.
      (Bununla birlikte, <code class="directive">Alias</code> yönergelerinden önce
      işleme sokulan <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> bölümlerinin uygulanacağına dikkat
      ediniz.)</p>

    <p>Özellikle, <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> dışında
      bir dizine bir <code class="directive">Alias</code> oluşturuyorsanız hedef
      dizine doğrudan erişim izni vermeniz gerekebilir.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
        Alias /image /ftp/pub/image<br />
        &lt;Directory /ftp/pub/image&gt;<br />
        <span class="indent">
            Order allow,deny<br />
            Allow from all<br />
        </span>
        &lt;/Directory&gt;
    </code></p></div>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AliasMatch" id="AliasMatch">AliasMatch</a> <a name="aliasmatch" id="aliasmatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>URL’leri dosya sistemi konumlarıyla düzenli ifadeleri kullanarak
eşler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AliasMatch <var>düzenli-ifade</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Bu yönerge <code><em>URL-yolu</em></code> ile eşleşmek üzere bir
      <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> kabul etmesi dışında
      <code class="directive"><a href="#alias">Alias</a></code> yönergesine eşdeğerdir.
      Belirtilen düzenli ifade <code><em>URL-yolu</em></code> ile eşleşiyorsa
      sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak dosya yolunu
      elde eder. Örneğin, <code>/icons</code> dizinini etkinleştirmek için şu
      yazılabilir:</p>

    <div class="example"><p><code>
      AliasMatch ^/icons(.*) /usr/local/apache/icons$1
    </code></p></div>

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

    <div class="example"><p><code>
      AliasMatch (?i)^/image(.*) /ftp/pub/image$1
    </code></p></div>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Redirect" id="Redirect">Redirect</a> <a name="redirect" id="redirect">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciyi, bir yönlendirme isteği döndürerek farklı bir URL’ye
yönlendirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Redirect [<var>durum</var>] <var>URL-yolu</var>
<var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p><code class="directive">Redirect</code> yönergesi istemciye bir yönlendirme
      isteği döndürerek eski URL’yi yenisiyle eşler.</p>

    <p>Eski <code><em>URL-yolu</em></code> bir bölü çizgisi ile başlar ve harf
      büyüklüğüne duyarlıdır (% imlemesi çözüldükten sonra).
      <code><em>URL-yolu</em></code> olarak göreli yollara izin verilmez.
      <code><em>URL</em></code> 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 olmalıdır.
      İkinci durumda URL yolunun başına geçerli sunucu ismi ve şemayı sunucu
      ekler.</p>

    <p><code><em>URL-yolu</em></code> ile başlayan istekler istemciye hedef
      <code><em>URL</em></code> konumuna bir yönlendirme isteği olarak
      dönecektir. <code><em>URL-yolu</em></code>’nun devamı niteliğindeki ek
      yol hedef URL’ye eklenir.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      Redirect /hizmet http://iki.mesela.dom/hizmet
    </code></p></div>

    <p>İstemcinin yaptığı <code>http://mesela.dom/hizmet/fesmekan.txt</code>
      isteğine karşılık istemciye isteği
      <code>http://iki.mesela.dom/hizmet/fesmekan.txt</code> olarak yapması
      söylenecektir. Sadece tam yol parçaları eşleştirilir, bu nedenle
      <code>http://mesela.dom/hizmetfesmekan.txt</code> isteği yukarıdaki
      yönlendirme ile eşleşmeyecektir. Düzenli ifadelerin kullanıldığı daha
      karmaşık eşleşmeler için <code class="directive"><a href="#redirectmatch">RedirectMatch</a></code> yönergesine bakınız.</p>


    <div class="note"><h3>Bilginize</h3>
      <p>Yapılandırma dosyasında yer alış sırasına bakmaksızın
        <code class="directive">Redirect</code> yönergeleri
        <code class="directive">Alias</code> ve <code class="directive">ScriptAlias</code>
        yönergelerinden önce ele alınır.</p></div>

      <p>Herhangi bir <code><em>durum</em></code> 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 <code><em>durum</em></code>
        değerleri:</p>

    <dl>
      <dt><code>permanent</code></dt>
      <dd>İstemciye özkaynağın kalıcı olarak taşındığını belirten kalıcı
        yönlendirme durumu (301) döndürülür.</dd>

      <dt><code>temp</code></dt>
      <dd>İstemciye geçici yönlendirme durumu (302) döner. Bu öntanımlıdır.
      </dd>

      <dt><code>seeother</code></dt>
      <dd>İstemciye özkaynağın yerine başka bir şey konduğunu belirten
        "diğerine bak" durumu (303) döndürülür.</dd>

      <dt><code>gone</code></dt>
      <dd>İstemciye özkaynağın kalıcı olarak kaldırıldığını belirten "ölü
        bağlantı" durumu (410) döner. Bu durumda <code><em>URL</em></code>
        belirtilmez.</dd>
    </dl>

    <p>Diğer durum kodları için <code><em>durum</em></code> olarak sayısal
      durum kodu belirtilir. Eğer durum 300 ile 399 arasındaysa bir
      <code><em>URL</em></code> belirtmek gereklidir, yoksa belirtilmez.
      Belirtilecek durum kodunu Apache’nin bilmesi gerektiğine dikkat ediniz
      (<code>http_protocol.c</code> dosyasında bulunan
      <code>send_error_response</code> işlevine bakınız).</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      Redirect permanent /bir http://mesela.dom/iki<br />
      Redirect 303 /yedi http://mesela.dom/baskabisey
    </code></p></div>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RedirectMatch" id="RedirectMatch">RedirectMatch</a> <a name="redirectmatch" id="redirectmatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Geçerli URL ile eşleşen bir düzenli ifadeye dayanarak bir harici
yönlendirme gönderir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RedirectMatch [<var>durum</var>] <var>düzenli-ifade</var>
<var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Bu yönerge <code><em>URL-yolu</em></code> ile eşleşmek üzere bir
      <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> kabul etmesi dışında
      <code class="directive"><a href="#redirect">Redirect</a></code> yönergesine
      eşdeğerdir. Belirtilen düzenli ifade <code><em>URL-yolu</em></code> 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:</p>

    <div class="example"><p><code>
      RedirectMatch (.*)\.gif$ http://baska.sunucu.dom$1.jpg
    </code></p></div>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RedirectPermanent" id="RedirectPermanent">RedirectPermanent</a> <a name="redirectpermanent" id="redirectpermanent">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciyi, kalıcı bir yönlendirme isteği döndürerek farklı bir
URL’ye yönlendirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RedirectPermanent <var>URL-yolu</var> <var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Bu yönerge istemciye daima kalıcı yönlendirme durumu (301) döndürür.
      Yani, <code>Redirect permanent</code> ile aynı işi yapar.</p>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RedirectTemp" id="RedirectTemp">RedirectTemp</a> <a name="redirecttemp" id="redirecttemp">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemciyi, geçici bir yönlendirme isteği döndürerek farklı bir
URL’ye yönlendirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>RedirectTemp <var>URL-yolu</var> <var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Bu yönerge istemciye daima geçici yönlendirme durumu (302) döndürür.
      Yani, <code>Redirect temp</code> ile aynı işi yapar.</p>
  
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptAlias" id="ScriptAlias">ScriptAlias</a> <a name="scriptalias" id="scriptalias">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir URL’yi dosya sistemindeki bir yere eşler ve hedefi bir CGI betiği olarak çalıştırır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ScriptAlias <var>URL-yolu</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Hedef dizini, <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> modülünün CGI betiği
      yorumlayıcısı tarafından çalıştırılacak betikleri içeren dizin olarak
      imlemesi dışında <code class="directive"><a href="#alias">Alias</a></code>
      yönergesinin yaptığı işi yapar. <code><em>URL-yolu</em></code> ile
      başlayan harf büyüklüğüne duyarlı URL’ler (% imlemesi çözüldükten
      sonra), dosya sistemindeki bir tam yol olarak belirtilmiş
      <code><em>dizin-yolu</em></code> ile başlayan betiklerle eşlenir.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      ScriptAlias /cgi-bin/ /siteler/cgi-bin/
    </code></p></div>

    <p><code>http://sunucum/cgi-bin/foo</code> şeklindeki bir istek sunucunun
      <code>/siteler/cgi-bin/foo</code> betiğini çalıştırmasına sebep olur. Bu
      yapılandırma aslında şuna eşdeğerdir:</p>

    <div class="example"><p><code>
      Alias /cgi-bin/ /siteler/cgi-bin/<br />
      &lt;Location /cgi-bin &gt;<br />
      <span class="indent">
      SetHandler cgi-script<br />
      Options +ExecCGI<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <div class="warning">Yapılandırma değiştiğinde kaynak kodlarının ister
      istemez açığa çıkmasını istemiyorsanız CGI betiklerinizi <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> altına koymayınız.
      <code class="directive">ScriptAlias</code> yönergesi URL’yi doğru yere
      eşlemekten başka orayı bir CGI betikleri dizini olarak imler. CGI
      betiklerinizi <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> altına
      koyarsanız çalıştırmak için <code class="directive">ScriptAlias</code> değil,
      <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>,
      <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code> ve <code class="directive"><a href="../mod/core.html#options">Options</a></code> yönergelerini örnekteki gibi kullanın:

    <div class="example"><p><code>
      &lt;Directory /usr/local/apache2/htdocs/cgi-bin &gt;<br />
      <span class="indent">
      SetHandler cgi-script<br />
      Options ExecCGI<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

     Aynı dosya sistemi konumu ile çok sayıda <code><em>URL-yolu</em></code>
     eşleşebileceğinden, bir <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>
     bölümü ile sınırlanmadığı takdirde CGI betiklerinin kaynak kodları açığa
     çıkabilir; bu bakımdan <code class="directive">ScriptAlias</code> yönergesini yok
     sayan URL yollarının belirtilebilme olasılığı gözardı
     edilmemelidir.</div>

  
<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../howto/cgi.html">CGI Öğreticisi</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptAliasMatch" id="ScriptAliasMatch">ScriptAliasMatch</a> <a name="scriptaliasmatch" id="scriptaliasmatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir URL’yi dosya sistemindeki bir yere düzenli ifade kullanarak
eşler ve hedefi bir CGI betiği olarak çalıştırır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ScriptAliasMatch <var>düzenli-ifade</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_alias</td></tr>
</table>
    <p>Bu yönerge <code><em>URL-yolu</em></code> ile eşleşmek üzere bir
      <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> kabul etmesi dışında
      <code class="directive"><a href="#scriptalias">ScriptAlias</a></code> yönergesine
      eşdeğerdir. Belirtilen düzenli ifade <code><em>URL-yolu</em></code> ile
      eşleşiyorsa sunucu parantezli eşleşmeleri belirtilen dizgede kullanarak
      dosya yolunu elde eder. Örneğin, standart <code>/cgi-bin</code> dizinini
      etkin kılmak için şu yazılabilir:</p>

    <div class="example"><p><code>
      ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
    </code></p></div>
  
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                mod/mod_asis.html                                                                                   100644       0       0        12015 11256641267  11501  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_asis - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_asis</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Sends files that contain their own
HTTP headers</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>asis_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_asis.c</td></tr></table>
<h3>Summary</h3>

    <p>This module provides the handler <code>send-as-is</code>
    which causes Apache to send the document without adding most of
    the usual HTTP headers.</p>

    <p>This can be used to send any kind of data from the server,
    including redirects and other special HTTP responses, without
    requiring a cgi-script or an nph script.</p>

    <p>For historical reasons, this module will also process any
    file with the mime type <code>httpd/send-as-is</code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#usage">Usage</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></li>
<li><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code></li>
<li><a href="../handler.html">Apache's Handler Use</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="usage" id="usage">Usage</a></h2>

    <p>In the server configuration file, associate files with the
    <code>send-as-is</code> handler <em>e.g.</em></p>

    <div class="example"><p><code>AddHandler send-as-is asis</code></p></div>

    <p>The contents of any file with a <code>.asis</code> extension
    will then be sent by Apache to the client with almost no
    changes. In particular, HTTP headers are derived from the file
    itself according to <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> rules, so an asis
    file must include valid headers, and may also use the CGI
    Status: header to determine the HTTP response code.</p>

    <p>Here's an example of a file whose contents are sent <em>as
    is</em> so as to tell the client that a file has
    redirected.</p>


    <div class="example"><p><code>
      Status: 301 Now where did I leave that URL<br />
      Location: http://xyz.abc.com/foo/bar.html<br />
      Content-type: text/html<br />
      <br />
      &lt;html&gt;<br />
      &lt;head&gt;<br />
      &lt;title&gt;Lame excuses'R'us&lt;/title&gt;<br />
      &lt;/head&gt;<br />
      &lt;body&gt;<br />
      &lt;h1&gt;Fred's exceptionally wonderful page has moved to<br />
      &lt;a href="http://xyz.abc.com/foo/bar.html"&gt;Joe's&lt;/a&gt;
      site.<br />
      &lt;/h1&gt;<br />
      &lt;/body&gt;<br />
      &lt;/html&gt;
    </code></p></div>

    <div class="note"><h3>Notes:</h3>
    <p>The server always adds a <code>Date:</code> and <code>Server:</code>
    header to the data returned to the client, so these should not be
    included in the file. The server does <em>not</em> add a
    <code>Last-Modified</code> header; it probably should.</p>
    </div>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   mod/mod_auth_basic.html                                                                             100644       0       0        17625 11256641267  12660  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_auth_basic - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_auth_basic</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Basic authentication</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>auth_basic_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_auth_basic.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module allows the use of HTTP Basic Authentication to
    restrict access by looking up users in the given providers.
    HTTP Digest Authentication is provided by
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>.  This module should
    usually be combined with at least one authentication module
    such as <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and one authorization
    module such as <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authbasicauthoritative">AuthBasicAuthoritative</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authbasicprovider">AuthBasicProvider</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li>
<li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li>
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
<li><a href="../howto/auth.html">Authentication howto</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthBasicAuthoritative" id="AuthBasicAuthoritative">AuthBasicAuthoritative</a> <a name="authbasicauthoritative" id="authbasicauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization and authentication are passed to
lower level modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
</table>
    <p>Normally, each authorization module listed in <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code> will attempt
    to verify the user, and if the user is not found in any provider,
    access will be denied. Setting the
    <code class="directive">AuthBasicAuthoritative</code> directive explicitly
    to <code>Off</code> allows for both authentication and
    authorization to be passed on to other non-provider-based modules
    if there is <strong>no userID</strong> or <strong>rule</strong>
    matching the supplied userID.  This should only be necessary when
    combining <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> with third-party modules
    that are not configured with the <code class="directive"><a href="#authbasicprovider">AuthBasicProvider</a></code>
    directive.  When using such modules, the order of processing
    is determined in the modules' source code and is not configurable.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthBasicProvider" id="AuthBasicProvider">AuthBasicProvider</a> <a name="authbasicprovider" id="authbasicprovider">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthBasicProvider <var>provider-name</var>
[<var>provider-name</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthBasicProvider file</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_basic</td></tr>
</table>
    <p>The <code class="directive">AuthBasicProvider</code> directive sets 
    which provider is used to authenticate the users for this location.
    The default <code>file</code> provider is implemented
    by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module.  Make sure
    that the chosen provider module is present in the server.</p>

    <div class="example"><h3>Example</h3><p><code>
      &lt;Location /secure&gt;<br />
      <span class="indent">
        AuthType basic<br />
        AuthName "private area"<br />
        AuthBasicProvider  dbm<br />
        AuthDBMType        SDBM<br />
        AuthDBMUserFile    /www/etc/dbmpasswd<br />
        Require            valid-user<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>Providers are implemented by <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>,
    <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>,
    and <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                           mod/mod_auth_digest.html                                                                            100644       0       0        51020 11256641267  13041  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_auth_digest - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_auth_digest</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using MD5
    Digest Authentication.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>auth_digest_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_auth_digest.c</td></tr></table>
<h3>Summary</h3>

    <p>This module implements HTTP Digest Authentication
    (<a href="http://www.faqs.org/rfcs/rfc2617.html">RFC2617</a>), and
    provides a more secure alternative to <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestalgorithm">AuthDigestAlgorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestdomain">AuthDigestDomain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestnccheck">AuthDigestNcCheck</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestnonceformat">AuthDigestNonceFormat</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestprovider">AuthDigestProvider</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestqop">AuthDigestQop</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdigestshmemsize">AuthDigestShmemSize</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#using">Using Digest Authentication</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#msie">Working with MS Internet Explorer</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li>
<li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li>
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
<li><a href="../howto/auth.html">Authentication howto</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">Using Digest Authentication</a></h2>

    <p>Using MD5 Digest authentication is very simple. Simply set
    up authentication normally, using <code>AuthType Digest</code> and
    <code class="directive"><a href="#authdigestprovider">AuthDigestProvider</a></code>
    instead of the normal <code>AuthType Basic</code> and
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>.
    Then add a <code class="directive"><a href="#authdigestdomain">AuthDigestDomain</a></code> directive containing at least the root
    URI(s) for this protection space.</p>

    <p>Appropriate user (text) files can be created using the
    <code class="program"><a href="../programs/htdigest.html">htdigest</a></code> tool.</p>

    <div class="example"><h3>Example:</h3><p><code>
      &lt;Location /private/&gt;<br />
      <span class="indent">
        AuthType Digest<br />
        AuthName "private area"<br />
        AuthDigestDomain /private/ http://mirror.my.dom/private2/<br />
	<br />
	AuthDigestProvider file<br />
        AuthUserFile /web/auth/.digest_pw<br />
        Require valid-user<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <div class="note"><h3>Note</h3> 
    <p>Digest authentication is more secure than Basic authentication,
    but only works with supporting browsers. As of September 2004, major
    browsers that support digest authentication include <a href="http://www.w3.org/Amaya/">Amaya</a>, <a href="http://konqueror.kde.org/">Konqueror</a>, <a href="http://www.microsoft.com/windows/ie/">MS Internet Explorer</a>
    for Mac OS X and Windows (although the Windows version fails when
    used with a query string -- see "<a href="#msie">Working with MS
    Internet Explorer</a>" below for a workaround), <a href="http://www.mozilla.org">Mozilla</a>, <a href="http://channels.netscape.com/ns/browsers/download.jsp">
    Netscape</a> 7, <a href="http://www.opera.com/">Opera</a>, and <a href="http://www.apple.com/safari/">Safari</a>. <a href="http://lynx.isc.org/">lynx</a> does <strong>not</strong>
    support digest authentication. Since digest authentication is not as
    widely implemented as basic authentication, you should use it only
    in environments where all users will have supporting browsers.</p>
    </div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="msie" id="msie">Working with MS Internet Explorer</a></h2>
    <p>The Digest authentication implementation in previous Internet
    Explorer for Windows versions (5 and 6) had issues, namely that
    <code>GET</code> requests with a query string were not RFC compliant.
    There are a few ways to work around this issue.</p>

    <p>
    The first way is to use <code>POST</code> requests instead of
    <code>GET</code> requests to pass data to your program.  This method
    is the simplest approach if your application can work with this
    limitation.
    </p>

    <p>Since version 2.0.51 Apache also provides a workaround in the
    <code>AuthDigestEnableQueryStringHack</code> environment variable.
    If <code>AuthDigestEnableQueryStringHack</code> is set for the
    request, Apache will take steps to work around the MSIE bug and
    remove the query string from the digest comparison.  Using this
    method would look similar to the following.</p>

    <div class="example"><h3>Using Digest Authentication with MSIE:</h3><p><code>
    BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
    </code></p></div>

    <p>This workaround is not necessary for MSIE 7, though enabling it does
    not cause any compatibility issues or significant overhead.</p>

    <p>See the <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
    directive for more details on conditionally setting environment
    variables.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestAlgorithm" id="AuthDigestAlgorithm">AuthDigestAlgorithm</a> <a name="authdigestalgorithm" id="authdigestalgorithm">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Selects the algorithm used to calculate the challenge and
response hashes in digest authentication</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestAlgorithm MD5|MD5-sess</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestAlgorithm MD5</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestAlgorithm</code> directive
    selects the algorithm used to calculate the challenge and response
    hashes.</p>

    <div class="note">
      <code>MD5-sess</code> is not correctly implemented yet.
    </div>
    

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestDomain" id="AuthDigestDomain">AuthDigestDomain</a> <a name="authdigestdomain" id="authdigestdomain">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>URIs that are in the same protection space for digest
authentication</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestDomain <var>URI</var> [<var>URI</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestDomain</code> directive allows
    you to specify one or more URIs which are in the same protection
    space (<em>i.e.</em> use the same realm and username/password info).
    The specified URIs are prefixes; the client will assume
    that all URIs "below" these are also protected by the same
    username/password. The URIs may be either absolute URIs (<em>i.e.</em>
    including a scheme, host, port, etc.) or relative URIs.</p>

    <p>This directive <em>should</em> always be specified and
    contain at least the (set of) root URI(s) for this space.
    Omitting to do so will cause the client to send the
    Authorization header for <em>every request</em> sent to this
    server. Apart from increasing the size of the request, it may
    also have a detrimental effect on performance if <code class="directive"><a href="#authdigestnccheck">AuthDigestNcCheck</a></code> is on.</p>

    <p>The URIs specified can also point to different servers, in
    which case clients (which understand this) will then share
    username/password info across multiple servers without
    prompting the user each time. </p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestNcCheck" id="AuthDigestNcCheck">AuthDigestNcCheck</a> <a name="authdigestnccheck" id="authdigestnccheck">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables or disables checking of the nonce-count sent by the
server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNcCheck On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNcCheck Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <div class="note">
      Not implemented yet.
    </div>
    

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestNonceFormat" id="AuthDigestNonceFormat">AuthDigestNonceFormat</a> <a name="authdigestnonceformat" id="authdigestnonceformat">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines how the nonce is generated</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceFormat <var>format</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <div class="note">Not implemented yet.</div>
    

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestNonceLifetime" id="AuthDigestNonceLifetime">AuthDigestNonceLifetime</a> <a name="authdigestnoncelifetime" id="authdigestnoncelifetime">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How long the server nonce is valid</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceLifetime <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNonceLifetime 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestNonceLifetime</code> directive
    controls how long the server nonce is valid. When the client
    contacts the server using an expired nonce the server will send
    back a 401 with <code>stale=true</code>. If <var>seconds</var> is
    greater than 0 then it specifies the amount of time for which the
    nonce is valid; this should probably never be set to less than 10
    seconds. If <var>seconds</var> is less than 0 then the nonce never
    expires. 
    </p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestProvider" id="AuthDigestProvider">AuthDigestProvider</a> <a name="authdigestprovider" id="authdigestprovider">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestProvider <var>provider-name</var>
[<var>provider-name</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestProvider file</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestProvider</code> directive sets 
    which provider is used to authenticate the users for this location.
    The default <code>file</code> provider is implemented
    by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module.  Make sure
    that the chosen provider module is present in the server.</p>

    <p>See <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>, <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, 
    and <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> for providers.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestQop" id="AuthDigestQop">AuthDigestQop</a> <a name="authdigestqop" id="authdigestqop">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the quality-of-protection to use in digest
authentication</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestQop none|auth|auth-int [auth|auth-int]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestQop auth</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestQop</code> directive determines
    the <dfn>quality-of-protection</dfn> to use. <code>auth</code> will
    only do authentication (username/password); <code>auth-int</code> is
    authentication plus integrity checking (an MD5 hash of the entity
    is also computed and checked); <code>none</code> will cause the module
    to use the old RFC-2069 digest algorithm (which does not include
    integrity checking). Both <code>auth</code> and <code>auth-int</code> may
    be specified, in which the case the browser will choose which of
    these to use. <code>none</code> should only be used if the browser for
    some reason does not like the challenge it receives otherwise.</p>

    <div class="note">
      <code>auth-int</code> is not implemented yet.
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDigestShmemSize" id="AuthDigestShmemSize">AuthDigestShmemSize</a> <a name="authdigestshmemsize" id="authdigestshmemsize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The amount of shared memory to allocate for keeping track
of clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestShmemSize <var>size</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestShmemSize 1000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr>
</table>
    <p>The <code class="directive">AuthDigestShmemSize</code> directive defines
    the amount of shared memory, that will be allocated at the server
    startup for keeping track of clients. Note that the shared memory
    segment cannot be set less than the space that is necessary for
    tracking at least <em>one</em> client. This value is dependant on your
    system. If you want to find out the exact value, you may simply
    set <code class="directive">AuthDigestShmemSize</code> to the value of
    <code>0</code> and read the error message after trying to start the
    server.</p>

    <p>The <var>size</var> is normally expressed in Bytes, but you
    may let the number follow a <code>K</code> or an <code>M</code> to
    express your value as KBytes or MBytes. For example, the following
    directives are all equivalent:</p>

    <div class="example"><p><code>
      AuthDigestShmemSize 1048576<br />
      AuthDigestShmemSize 1024K<br />
      AuthDigestShmemSize 1M
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                mod/mod_authn_alias.html                                                                            100644       0       0        16671 11256641267  13046  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_alias - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_alias</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides the ability to create extended authentication 
    providers based on actual providers</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_alias_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_alias.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module allows extended authentication providers to be created 
    within the configuration file and assigned an alias name.  The alias 
    providers can then be referenced through the directives 
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> or 
    <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code> in
    the same way as a base authentication provider.  Besides the ability
    to create and alias an extended provider, it also allows the same 
    extended authentication provider to be reference by multiple 
    locations.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authnprovideralias">&lt;AuthnProviderAlias&gt;</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#example">Examples</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Examples</a></h2>

        <p>This example checks for passwords in two different text
        files.</p>

        <div class="example"><h3>Checking multiple text password files</h3><p><code>

        # Check here first<br />
        &lt;AuthnProviderAlias file file1&gt;<br />
        <span class="indent">
            AuthUserFile /www/conf/passwords1<br />
        </span>
        &lt;/AuthnProviderAlias&gt;<br />
        <br />
        # Then check here<br />
        &lt;AuthnProviderAlias file file2&gt;   <br />
        <span class="indent">
            AuthUserFile /www/conf/passwords2<br />
        </span>
        &lt;/AuthnProviderAlias&gt;<br />
        <br />
        &lt;Directory /var/web/pages/secure&gt;<br />
        <span class="indent">
            AuthBasicProvider file1 file2<br />
            <br />
            AuthType Basic<br />
            AuthName "Protected Area"<br />
            Require valid-user<br />
        </span>
        &lt;/Directory&gt;<br />
        </code></p></div>

         <p>The example below creates two different ldap authentication 
         provider aliases based on the ldap provider.  This allows
         a single authenticated location to be serviced by multiple ldap
         hosts:</p>
     
      <div class="example"><h3>Checking multiple LDAP servers</h3><p><code>
      LoadModule authn_alias_module modules/mod_authn_alias.so<br /><br />
      &lt;AuthnProviderAlias ldap ldap-alias1&gt;<br />
      <span class="indent">
         AuthLDAPBindDN cn=youruser,o=ctx<br />
         AuthLDAPBindPassword yourpassword<br />
         AuthLDAPURL ldap://ldap.host/o=ctx<br />
      </span>
      &lt;/AuthnProviderAlias&gt;<br /><br />
      &lt;AuthnProviderAlias ldap ldap-other-alias&gt;<br />
      <span class="indent">
         AuthLDAPBindDN cn=yourotheruser,o=dev<br />
         AuthLDAPBindPassword yourotherpassword<br />
         AuthLDAPURL ldap://other.ldap.host/o=dev?cn<br />
      </span>
      &lt;/AuthnProviderAlias&gt;<br /><br />

      Alias /secure /webpages/secure<br />
      &lt;Directory /webpages/secure&gt;<br />
      <span class="indent">
         Order deny,allow<br />
         Allow from all<br /><br />
    
         AuthBasicProvider ldap-other-alias  ldap-alias1<br /><br />
    
         AuthType Basic<br />
         AuthName LDAP_Protected_Place<br />
         AuthzLDAPAuthoritative off<br />
         Require valid-user<br />
      </span>
      &lt;/Directory&gt;<br />
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthnProviderAlias" id="AuthnProviderAlias">&lt;AuthnProviderAlias&gt;</a> <a name="authnprovideralias" id="authnprovideralias">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of directives that represent an
extension of a base authentication provider and referenced by
the specified alias</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>&lt;AuthnProviderAlias <var>baseProvider Alias</var>&gt;
... &lt;/AuthnProviderAlias&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_alias</td></tr>
</table>
    <p><code class="directive">&lt;AuthnProviderAlias&gt;</code> and
    <code>&lt;/AuthnProviderAlias&gt;</code> are used to enclose a group of
    authentication directives that can be referenced by the alias name 
    using one of the directives <code class="directive"><a href="../mod/mod_auth_basic.html#&#10;    authbasicprovider">
    AuthBasicProvider</a></code> or <code class="directive"><a href="../mod/mod_auth_digest.html#&#10;    authdigestprovider">
    AuthDigestProvider</a></code>.</p>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                       mod/mod_authn_anon.html                                                                             100644       0       0        31542 11256641267  12702  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_anon - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_anon</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Allows "anonymous" user access to authenticated
    areas</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_anon_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_anon.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authentication front-ends such as
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> to authenticate users similar
    to anonymous-ftp sites, <em>i.e.</em> have a 'magic' user id
    'anonymous' and the email address as a password. These email
    addresses can be logged.</p>

    <p>Combined with other (database) access control methods, this
    allows for effective user tracking and customization according
    to a user profile while still keeping the site open for
    'unregistered' users. One advantage of using Auth-based user
    tracking is that, unlike magic-cookies and funny URL
    pre/postfixes, it is completely browser independent and it
    allows users to share URLs.</p>

    <p>When using <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>, this module is invoked
    via the <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
    directive with the <code>anon</code> value.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#anonymous">Anonymous</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#anonymous_logemail">Anonymous_LogEmail</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#anonymous_mustgiveemail">Anonymous_MustGiveEmail</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#anonymous_nouserid">Anonymous_NoUserID</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#anonymous_verifyemail">Anonymous_VerifyEmail</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#example">Example</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Example</a></h2>
    <p>The example below is combined with "normal" htpasswd-file based
    authentication and allows users in additionally as 'guests' with the
    following properties:</p>

    <ul>
      <li>It insists that the user enters a userID.
      (<code class="directive"><a href="#anonymous_nouserid">Anonymous_NoUserID</a></code>)</li>

      <li>It insists that the user enters a password.
      (<code class="directive"><a href="#anonymous_mustgiveemail">Anonymous_MustGiveEmail</a></code>)</li>

      <li>The password entered must be a valid email address, <em>i.e.</em>
      contain at least one '@' and a '.'.
      (<code class="directive"><a href="#anonymous_verifyemail">Anonymous_VerifyEmail</a></code>)</li>

      <li>The userID must be one of <code>anonymous guest www test
      welcome</code> and comparison is <strong>not</strong> case
      sensitive. (<code class="directive"><a href="#anonymous">Anonymous</a></code>)</li>

      <li>And the Email addresses entered in the passwd field are
      logged to the error log file.
      (<code class="directive"><a href="#anonymous_logemail">Anonymous_LogEmail</a></code>)</li>
    </ul>

    <div class="example"><h3>Example</h3><p><code>
      &lt;Directory /foo&gt;
      <span class="indent">
        AuthName "Use 'anonymous' &amp; Email address for guest entry"<br />
        AuthType Basic<br />
        AuthBasicProvider file anon<br />
        AuthUserFile /path/to/your/.htpasswd<br />
	<br />
        Anonymous_NoUserID off<br />
        Anonymous_MustGiveEmail on<br />
        Anonymous_VerifyEmail on<br />
        Anonymous_LogEmail on<br />
        Anonymous anonymous guest www test welcome<br />
        <br />
        Order Deny,Allow<br />
        Allow from all<br />
        <br />
        Require valid-user<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Anonymous" id="Anonymous">Anonymous</a> <a name="anonymous" id="anonymous">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specifies userIDs that are allowed access without
password verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Anonymous <var>user</var> [<var>user</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_anon</td></tr>
</table>
    <p>A list of one or more 'magic' userIDs which are allowed
    access without password verification. The userIDs are space
    separated. It is possible to use the ' and " quotes to allow a
    space in a userID as well as the \ escape character.</p>

    <p>Please note that the comparison is
    <strong>case-IN-sensitive</strong>.<br />
    It's strongly recommended that the magic username
    '<code>anonymous</code>' is always one of the allowed
    userIDs.</p>

    <div class="example"><h3>Example:</h3><p><code>
      Anonymous anonymous "Not Registered" "I don't know"
    </code></p></div>

    <p>This would allow the user to enter without password
    verification by using the userIDs "anonymous",
    "AnonyMous", "Not Registered" and "I Don't Know".</p>

    <p>As of Apache 2.1 it is possible to specify the userID as
    "<code>*</code>". That allows <em>any</em> supplied userID to be
    accepted.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Anonymous_LogEmail" id="Anonymous_LogEmail">Anonymous_LogEmail</a> <a name="anonymous_logemail" id="anonymous_logemail">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether the password entered will be logged in the
error log</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Anonymous_LogEmail On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Anonymous_LogEmail On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_anon</td></tr>
</table>
    <p>When set <code>On</code>, the default, the 'password' entered
    (which hopefully contains a sensible email address) is logged in
    the error log.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Anonymous_MustGiveEmail" id="Anonymous_MustGiveEmail">Anonymous_MustGiveEmail</a> <a name="anonymous_mustgiveemail" id="anonymous_mustgiveemail">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specifies whether blank passwords are allowed</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Anonymous_MustGiveEmail On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Anonymous_MustGiveEmail On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_anon</td></tr>
</table>
    <p>Specifies whether the user must specify an email address as
    the password. This prohibits blank passwords.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Anonymous_NoUserID" id="Anonymous_NoUserID">Anonymous_NoUserID</a> <a name="anonymous_nouserid" id="anonymous_nouserid">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether the userID field may be empty</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Anonymous_NoUserID On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Anonymous_NoUserID Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_anon</td></tr>
</table>
    <p>When set <code>On</code>, users can leave the userID (and
    perhaps the password field) empty. This can be very convenient for
    MS-Explorer users who can just hit return or click directly on the
    OK button; which seems a natural reaction.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Anonymous_VerifyEmail" id="Anonymous_VerifyEmail">Anonymous_VerifyEmail</a> <a name="anonymous_verifyemail" id="anonymous_verifyemail">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether to check the password field for a correctly
formatted email address</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Anonymous_VerifyEmail On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Anonymous_VerifyEmail Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_anon</td></tr>
</table>
    <p>When set <code>On</code> the 'password' entered is checked for
    at least one '@' and a '.' to encourage users to enter valid email
    addresses (see the above <code class="directive"><a href="#anonymous_logemail">Anonymous_LogEmail</a></code>).</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                              mod/mod_authn_dbd.html                                                                              100644       0       0        24761 11256641267  12505  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_dbd - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_dbd</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using an SQL database</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_dbd_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_dbd.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authentication front-ends such as
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> and <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>
    to authenticate users by looking up users in SQL tables.
    Similar functionality is provided by, for example,
    <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>.</p>
    <p>This module relies on <code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code> to specify
    the backend database driver and connection parameters, and
    manage the database connections.</p>

    <p>When using <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> or
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>, this module is invoked via the
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> or
    <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
    with the <code>dbd</code> value.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authdbduserpwquery">AuthDBDUserPWQuery</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdbduserrealmquery">AuthDBDUserRealmQuery</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#example">Configuration Example</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exposed">Exposing Login Information</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li>
<li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li>
<li>
  <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
</li>
<li>
  <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
</li>
<li><code class="directive"><a href="../mod/mod_dbd.html#dbdriver">DBDriver</a></code></li>
<li><code class="directive"><a href="../mod/mod_dbd.html#dbdparams">DBDParams</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Configuration Example</a></h2>

<p>This simple example shows use of this module in the context of
the Authentication and DBD frameworks. Please note that you need
to load an authorization module, such as <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>,
to get it working.</p>
<div class="example"><pre>
# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"

DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300

&lt;Directory /usr/www/myhost/private&gt;
  # core authentication and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName "My Server"
  AuthBasicProvider dbd

  # core authorization configuration
  Require valid-user

  # mod_authn_dbd SQL query to authenticate a user
  AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s"
&lt;/Directory&gt;
</pre></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exposed" id="exposed">Exposing Login Information</a></h2>

<p>
If httpd was built against <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> version 1.3.0
or higher, then whenever a query is made to the database server, all
column values in the first row returned by the query are placed in the
environment, using environment variables with the prefix "AUTHENTICATE_".
</p>
<p>If a database query for example returned the username, full name
and telephone number of a user, a CGI program will have access to
this information without the need to make a second independent database
query to gather this additional information.</p>
<p>This has the potential to dramatically simplify the coding and
configuration required in some web applications.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDBDUserPWQuery" id="AuthDBDUserPWQuery">AuthDBDUserPWQuery</a> <a name="authdbduserpwquery" id="authdbduserpwquery">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>SQL query to look up a password for a user</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDBDUserPWQuery <var>query</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_dbd</td></tr>
</table>
    <p>The <code class="directive">AuthDBDUserPWQuery</code> specifies an
    SQL query to look up a password for a specified user.  The user's ID
    will be passed as a single string parameter when the SQL query is
    executed.  It may be referenced within the query statement using
    a <code>%s</code> format specifier.</p>
    <div class="example"><h3>Example</h3><pre>
AuthDBDUserPWQuery \
  "SELECT password FROM authn WHERE user = %s"
</pre></div>
    <p>The first column value of the first row returned by the query
    statement should be a string containing the encrypted password.
    Subsequent rows will be ignored.  If no rows are returned, the user
    will not be authenticated through <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
    <p>If httpd was built against <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> version 1.3.0
    or higher, any additional column values in the first row returned by
    the query statement will be stored as environment variables with
    names of the form <code>AUTHENTICATE_<var>COLUMN</var></code>.
    </p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDBDUserRealmQuery" id="AuthDBDUserRealmQuery">AuthDBDUserRealmQuery</a> <a name="authdbduserrealmquery" id="authdbduserrealmquery">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>SQL query to look up a password hash for a user and realm.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDBDUserRealmQuery <var>query</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_dbd</td></tr>
</table>
    <p>The <code class="directive">AuthDBDUserRealmQuery</code> specifies an
    SQL query to look up a password for a specified user and realm.
    The user's ID and the realm, in that order, will be passed as string
    parameters when the SQL query is executed.  They may be referenced
    within the query statement using <code>%s</code> format specifiers.</p>
    <div class="example"><h3>Example</h3><pre>
AuthDBDUserRealmQuery \
  "SELECT password FROM authn WHERE user = %s AND realm = %s"
</pre></div>
    <p>The first column value of the first row returned by the query
    statement should be a string containing the encrypted password.
    Subsequent rows will be ignored.  If no rows are returned, the user
    will not be authenticated through <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
    <p>If httpd was built against <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> version 1.3.0
    or higher, any additional column values in the first row returned by
    the query statement will be stored as environment variables with
    names of the form <code>AUTHENTICATE_<var>COLUMN</var></code>.
    </p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
               mod/mod_authn_dbm.html                                                                              100644       0       0        17605 11256641267  12515  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_dbm - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_dbm</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using DBM files</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_dbm_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_dbm.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authentication front-ends such as
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> and <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>
    to authenticate users by looking up users in <dfn>dbm</dfn> password
    files. Similar functionality is provided by
    <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>.</p>

    <p>When using <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> or
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>, this module is invoked via the
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> or
    <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
    with the <code>dbm</code> value.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authdbmtype">AuthDBMType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authdbmuserfile">AuthDBMUserFile</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li>
<li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li>
<li>
  <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
</li>
<li>
  <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
</li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDBMType" id="AuthDBMType">AuthDBMType</a> <a name="authdbmtype" id="authdbmtype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the type of database file that is used to
store passwords</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDBMType default|SDBM|GDBM|NDBM|DB</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDBMType default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_dbm</td></tr>
</table>
    <p>Sets the type of database file that is used to store the passwords.
    The default database type is determined at compile time.  The
    availability of other types of database files also depends on
    <a href="../install.html#dbm">compile-time settings</a>.</p>

    <p>It is crucial that whatever program you use to create your password
    files is configured to use the same type of database.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDBMUserFile" id="AuthDBMUserFile">AuthDBMUserFile</a> <a name="authdbmuserfile" id="authdbmuserfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of a database file containing the list of users and
passwords for authentication</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDBMUserFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_dbm</td></tr>
</table>
    <p>The <code class="directive">AuthDBMUserFile</code> directive sets the
    name of a DBM file containing the list of users and passwords for
    user authentication. <var>File-path</var> is the absolute path to
    the user file.</p>

    <p>The user file is keyed on the username. The value for a user is
    the encrypted password, optionally followed by a colon and arbitrary
    data. The colon and the data following it will be ignored by the
    server.</p>

    <div class="warning"><h3>Security:</h3>
      <p>Make sure that the <code class="directive">AuthDBMUserFile</code> is stored
      outside the document tree of the web-server; do <em>not</em> put it in
      the directory that it protects. Otherwise, clients will be able to
      download the <code class="directive">AuthDBMUserFile</code>.</p>
    </div>

    <p>Important compatibility note: The implementation of
    <code>dbmopen</code> in the apache modules reads the string length of
    the hashed values from the DBM data structures, rather than relying
    upon the string being NULL-appended. Some applications, such as
    the Netscape web server, rely upon the string being
    NULL-appended, so if you are having trouble using DBM files
    interchangeably between applications this may be a part of the
    problem.</p>

    <p>A perl script called
    <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> is included with
    Apache. This program can be used to create and update DBM
    format password files for use with this module.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                           mod/mod_authn_default.html                                                                          100644       0       0        11036 11256641267  13367  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_default - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_default</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Authentication fallback module</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_default_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_default.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module is designed to be the fallback module, if you don't
    have configured an authentication module like
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. It simply rejects any
    credentials supplied by the user.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authdefaultauthoritative">AuthDefaultAuthoritative</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDefaultAuthoritative" id="AuthDefaultAuthoritative">AuthDefaultAuthoritative</a> <a name="authdefaultauthoritative" id="authdefaultauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authentication is passed to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDefaultAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDefaultAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_default</td></tr>
</table>
    <p>Setting the <code class="directive">AuthDefaultAuthoritative</code> directive
    explicitly to <code>Off</code> allows for authentication to be passed on
    to lower level modules (as defined in the <code>modules.c</code>
    files).</p>

    <div class="note"><h3>Note</h3>
      <p>Normally there are no lower level modules, since
      <code class="module"><a href="../mod/mod_authn_default.html">mod_authn_default</a></code> is defined to be already on
      a <em>very low</em> level. Therefore you should leave the value of
      <code class="directive">AuthDefaultAuthoritative</code> as default
      (<code>On</code>).</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  mod/mod_authn_file.html                                                                             100644       0       0        16401 11256641267  12663  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authn_file - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authn_file</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using text files</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authn_file_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authn_file.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authentication front-ends such as
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> and <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>
    to authenticate users by looking up users in plain text password files.
    Similar functionality is provided by <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>.</p>

    <p>When using <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> or
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>, this module is invoked via the
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> or
    <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
    with the <code>file</code> value.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authuserfile">AuthUserFile</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li>
  <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
</li>
<li>
  <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>
</li>
<li><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code></li>
<li><code class="program"><a href="../programs/htdigest.html">htdigest</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthUserFile" id="AuthUserFile">AuthUserFile</a> <a name="authuserfile" id="authuserfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of a text file containing the list of users and
passwords for authentication</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthUserFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authn_file</td></tr>
</table>
    <p>The <code class="directive">AuthUserFile</code> directive sets the name
    of a textual file containing the list of users and passwords for
    user authentication. <var>File-path</var> is the path to the user
    file. If it is not absolute, it is treated as relative to the
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.</p>

    <p>Each line of the user file contains a username followed by
    a colon, followed by the encrypted password. If the same user
    ID is defined multiple times, <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> will
    use the first occurrence to verify the password.</p>

    <p>The utility <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>
    which is installed as part of the binary distribution, or which
    can be found in <code>src/support</code>, is used to maintain
    the password file for <em>HTTP Basic Authentication</em>. See the
    <a href="../programs/htpasswd.html">man page</a> for more details.
    In short:</p>

    <p>Create a password file <code>Filename</code> with
    <code>username</code> as the initial ID. It will prompt for
    the password:</p>

    <div class="example"><p><code>
      htpasswd -c Filename username
    </code></p></div>

    <p>Add or modify <code>username2</code> in the password file
    <code>Filename</code>:</p>

    <div class="example"><p><code>
      htpasswd Filename username2
    </code></p></div>

    <p>Note that searching large text files is <em>very</em>
    inefficient; <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code> should be used
    instead.</p>

    <p>If you are using <em>HTTP Digest Authentication</em>, the <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> tool is not sufficient.
    You have to use <code class="program"><a href="../programs/htdigest.html">htdigest</a></code>
    instead. Note that you cannot mix user data for Digest Authentication
    and Basic Authentication within the same file.</p>

    <div class="warning"><h3>Security</h3>
      <p>Make sure that the <code class="directive">AuthUserFile</code> is
      stored outside the document tree of the web-server. Do
      <strong>not</strong> put it in the directory that it protects.
      Otherwise, clients may be able to download the
      <code class="directive">AuthUserFile</code>.</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                               mod/mod_authnz_ldap.html                                                                            100644       0       0       155255 11256641267  13111  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authnz_ldap - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authnz_ldap</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Allows an LDAP directory to be used to store the database
for HTTP Basic authentication.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authnz_ldap_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authnz_ldap.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authentication front-ends such as
    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> to authenticate users through 
    an ldap directory.</p>
    
    <p><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> supports the following features:</p>

    <ul>
      <li>Known to support the <a href="http://www.openldap.org/">OpenLDAP SDK</a> (both 1.x
      and 2.x), <a href="http://developer.novell.com/ndk/cldap.htm">
      Novell LDAP SDK</a> and the <a href="http://www.iplanet.com/downloads/developer/">iPlanet
      (Netscape)</a> SDK.</li>

      <li>Complex authorization policies can be implemented by
      representing the policy with LDAP filters.</li>

      <li>Uses extensive caching of LDAP operations via <a href="mod_ldap.html">mod_ldap</a>.</li>

      <li>Support for LDAP over SSL (requires the Netscape SDK) or
      TLS (requires the OpenLDAP 2.x SDK or Novell LDAP SDK).</li>
    </ul>

    <p>When using <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>, this module is invoked
    via the <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>
    directive with the <code>ldap</code> value.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authldapbinddn">AuthLDAPBindDN</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapbindpassword">AuthLDAPBindPassword</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapcharsetconfig">AuthLDAPCharsetConfig</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapdereferencealiases">AuthLDAPDereferenceAliases</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapremoteuserattribute">AuthLDAPRemoteUserAttribute</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapremoteuserisdn">AuthLDAPRemoteUserIsDN</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authldapurl">AuthLDAPUrl</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authzldapauthoritative">AuthzLDAPAuthoritative</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#contents">Contents</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#operation">Operation</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#requiredirectives">The Require Directives</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usingtls">Using TLS</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usingssl">Using SSL</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exposed">Exposing Login Information</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#frontpage">Using Microsoft
    FrontPage with mod_authnz_ldap</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code></li>
<li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
<li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
<li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="contents" id="contents">Contents</a></h2>

    <ul>
      <li>
        <a href="#operation">Operation</a> 

        <ul>
          <li><a href="#authenphase">The Authentication
          Phase</a></li>

          <li><a href="#authorphase">The Authorization
          Phase</a></li>
        </ul>
      </li>

      <li>
        <a href="#requiredirectives">The Require Directives</a> 

        <ul>
          <li><a href="#reqvaliduser">Require valid-user</a></li>
          <li><a href="#requser">Require ldap-user</a></li>
          <li><a href="#reqgroup">Require ldap-group</a></li>
          <li><a href="#reqdn">Require ldap-dn</a></li>
          <li><a href="#reqattribute">Require ldap-attribute</a></li>
          <li><a href="#reqfilter">Require ldap-filter</a></li>
        </ul>
      </li>

      <li><a href="#examples">Examples</a></li>
      <li><a href="#usingtls">Using TLS</a></li>
      <li><a href="#usingssl">Using SSL</a></li>
      <li><a href="#exposed">Exposing Login Information</a></li>
      <li>
        <a href="#frontpage">Using Microsoft FrontPage with
        <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></a> 

        <ul>
          <li><a href="#howitworks">How It Works</a></li>
          <li><a href="#fpcaveats">Caveats</a></li>
        </ul>
      </li>
    </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="operation" id="operation">Operation</a></h2>

    <p>There are two phases in granting access to a user. The first
    phase is authentication, in which the <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>
    authentication provider verifies that the user's credentials are valid. 
    This is also called the <em>search/bind</em> phase. The second phase is
    authorization, in which <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> determines
    if the authenticated user is allowed access to the resource in
    question. This is also known as the <em>compare</em>
    phase.</p>

    <p><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> registers both an authn_ldap authentication
    provider and an authz_ldap authorization handler.  The authn_ldap
    authentication provider can be enabled through the 
    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> directive 
    using the <code>ldap</code> value. The authz_ldap handler extends the 
    <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive's authorization types
    by adding <code>ldap-user</code>, <code>ldap-dn</code> and <code>ldap-group</code> 
    values.</p>

<h3><a name="authenphase" id="authenphase">The Authentication
    Phase</a></h3>

    <p>During the authentication phase, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>
    searches for an entry in the directory that matches the username
    that the HTTP client passes. If a single unique match is found,
    then <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> attempts to bind to the
    directory server using the DN of the entry plus the password
    provided by the HTTP client. Because it does a search, then a
    bind, it is often referred to as the search/bind phase. Here are
    the steps taken during the search/bind phase.</p>

    <ol>
      <li>Generate a search filter by combining the attribute and
      filter provided in the <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> directive with
      the username passed by the HTTP client.</li>

      <li>Search the directory using the generated filter. If the
      search does not return exactly one entry, deny or decline
      access.</li>

      <li>Fetch the distinguished name of the entry retrieved from
      the search and attempt to bind to the LDAP server using the
      DN and the password passed by the HTTP client. If the bind is
      unsuccessful, deny or decline access.</li>
    </ol>

    <p>The following directives are used during the search/bind
    phase</p>

    <table>
      
      <tr>
        <td><code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code></td>

        <td>Specifies the LDAP server, the
        base DN, the attribute to use in the search, as well as the
        extra search filter to use.</td>
      </tr>

      <tr>
        <td><code class="directive"><a href="#authldapbinddn">AuthLDAPBindDN</a></code></td>

        <td>An optional DN to bind with
        during the search phase.</td>
      </tr>

      <tr>
        <td><code class="directive"><a href="#authldapbindpassword">AuthLDAPBindPassword</a></code></td>

        <td>An optional password to bind
        with during the search phase.</td>
      </tr>
    </table>


<h3><a name="authorphase" id="authorphase">The Authorization Phase</a></h3>

    <p>During the authorization phase, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>
    attempts to determine if the user is authorized to access the
    resource.  Many of these checks require
    <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> to do a compare operation on the
    LDAP server. This is why this phase is often referred to as the
    compare phase. <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> accepts the
    following <code class="directive"><a href="../mod/core.html#require">Require</a></code>
    directives to determine if the credentials are acceptable:</p>

    <ul>
      <li>Grant access if there is a <a href="#reqgroup"><code>Require ldap-user</code></a> directive, and the
      username in the directive matches the username passed by the
      client.</li>

      <li>Grant access if there is a <a href="#reqdn"><code>Require
      ldap-dn</code></a> directive, and the DN in the directive matches
      the DN fetched from the LDAP directory.</li>

      <li>Grant access if there is a <a href="#reqgroup"><code>Require ldap-group</code></a> directive, and
      the DN fetched from the LDAP directory (or the username
      passed by the client) occurs in the LDAP group.</li>

      <li>Grant access if there is a <a href="#reqattribute">
      <code>Require ldap-attribute</code></a> 
      directive, and the attribute fetched from the LDAP directory
      matches the given value.</li> 

      <li>Grant access if there is a <a href="#reqfilter">
      <code>Require ldap-filter</code></a> 
      directive, and the search filter successfully finds a single user
      object that matches the dn of the authenticated user.</li> 

      <li>otherwise, deny or decline access</li>
    </ul>

    <p>Other <code class="directive"><a href="../mod/core.html#require">Require</a></code> values may also
    be used which may require loading additional authorization modules.
    Note that if you use a <code class="directive"><a href="../mod/core.html#require">Require</a></code>
    value from another authorization module, you will need to ensure that
    <code class="directive"><a href="#authzldapauthoritative">AuthzLDAPAuthoritative</a></code>
    is set to <code>off</code> to allow the authorization phase to fall
    back to the module providing the alternate
    <code class="directive"><a href="../mod/core.html#require">Require</a></code> value. When no 
    LDAP-specific <code class="directive"><a href="../mod/core.html#require">Require</a></code>  directives
    are used, authorization is allowed to fall back to other modules
    as if <code class="directive"><a href="#authzldapauthoritative">AuthzLDAPAuthoritative</a></code>
    was set to <code>off</code>. </p>

    <ul>
        <li>Grant access if there is a <a href="#requser"><code>Require
        valid-user</code></a> directive. (requires 
        <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code>)</li>

        <li>Grant access if there is a <a href="#reqgroup"><code>Require group</code></a> directive, and
        <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> has been loaded with the 
        <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> 
        directive set.</li>
    
        <li>others...</li>
     </ul>


    <p><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> uses the following directives during the
    compare phase:</p>

    <table>
      
      <tr>
        <td><code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> </td>

        <td>The attribute specified in the
        URL is used in compare operations for the <code>Require
        ldap-user</code> operation.</td>
      </tr>

      <tr>
        <td><code class="directive"><a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></code></td>

        <td>Determines the behavior of the
        <code>Require ldap-dn</code> directive.</td>
      </tr>

      <tr>
        <td><code class="directive"><a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></code></td>

        <td>Determines the attribute to
        use for comparisons in the <code>Require ldap-group</code>
        directive.</td>
      </tr>

      <tr>
        <td><code class="directive"><a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></code></td>

        <td>Specifies whether to use the
        user DN or the username when doing comparisons for the
        <code>Require ldap-group</code> directive.</td>
      </tr>
    </table>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requiredirectives" id="requiredirectives">The Require Directives</a></h2>

    <p>Apache's <code class="directive"><a href="../mod/core.html#require">Require</a></code>
    directives are used during the authorization phase to ensure that
    a user is allowed to access a resource.  mod_authnz_ldap extends the 
    authorization types with <code>ldap-user</code>, <code>ldap-dn</code>, 
    <code>ldap-group</code>, <code>ldap-attribute</code> and 
    <code>ldap-filter</code>.  Other authorization types may also be 
    used but may require that additional authorization modules be loaded.</p>

<h3><a name="reqvaliduser" id="reqvaliduser">Require valid-user</a></h3>

    <p>If this directive exists, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> grants
    access to any user that has successfully authenticated during the
    search/bind phase.  Requires that <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code> be 
    loaded.</p>


<h3><a name="requser" id="requser">Require ldap-user</a></h3>

    <p>The <code>Require ldap-user</code> directive specifies what
    usernames can access the resource. Once
    <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> has retrieved a unique DN from the
    directory, it does an LDAP compare operation using the username
    specified in the <code>Require ldap-user</code> to see if that username
    is part of the just-fetched LDAP entry.  Multiple users can be
    granted access by putting multiple usernames on the line,
    separated with spaces. If a username has a space in it, then it
    must be surrounded with double quotes. Multiple users can also be
    granted access by using multiple <code>Require ldap-user</code>
    directives, with one user per line. For example, with a <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> of
    <code>ldap://ldap/o=Airius?cn</code> (i.e., <code>cn</code> is
    used for searches), the following Require directives could be used
    to restrict access:</p>
<div class="example"><p><code>
Require ldap-user "Barbara Jenson"<br />
Require ldap-user "Fred User"<br />
Require ldap-user "Joe Manager"<br />
</code></p></div>

    <p>Because of the way that <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> handles this
    directive, Barbara Jenson could sign on as <em>Barbara
    Jenson</em>, <em>Babs Jenson</em> or any other <code>cn</code> that
    she has in her LDAP entry. Only the single <code>Require
    ldap-user</code> line is needed to support all values of the attribute
    in the user's entry.</p>

    <p>If the <code>uid</code> attribute was used instead of the
    <code>cn</code> attribute in the URL above, the above three lines
    could be condensed to</p>
<div class="example"><p><code>Require ldap-user bjenson fuser jmanager</code></p></div>


<h3><a name="reqgroup" id="reqgroup">Require ldap-group</a></h3>

    <p>This directive specifies an LDAP group whose members are
    allowed access. It takes the distinguished name of the LDAP
    group. Note: Do not surround the group name with quotes.
    For example, assume that the following entry existed in
    the LDAP directory:</p>
<div class="example"><p><code>
dn: cn=Administrators, o=Airius<br />
objectClass: groupOfUniqueNames<br />
uniqueMember: cn=Barbara Jenson, o=Airius<br />
uniqueMember: cn=Fred User, o=Airius<br />
</code></p></div>

    <p>The following directive would grant access to both Fred and
    Barbara:</p>
<div class="example"><p><code>Require ldap-group cn=Administrators, o=Airius</code></p></div>

    <p>Behavior of this directive is modified by the <code class="directive"><a href="#authldapgroupattribute">AuthLDAPGroupAttribute</a></code> and
    <code class="directive"><a href="#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN</a></code>
    directives.</p>


<h3><a name="reqdn" id="reqdn">Require ldap-dn</a></h3>

    <p>The <code>Require ldap-dn</code> directive allows the administrator
    to grant access based on distinguished names. It specifies a DN
    that must match for access to be granted. If the distinguished
    name that was retrieved from the directory server matches the
    distinguished name in the <code>Require ldap-dn</code>, then
    authorization is granted. Note: do not surround the distinguished
    name with quotes.</p>

    <p>The following directive would grant access to a specific
    DN:</p>
<div class="example"><p><code>Require ldap-dn cn=Barbara Jenson, o=Airius</code></p></div>

    <p>Behavior of this directive is modified by the <code class="directive"><a href="#authldapcomparednonserver">AuthLDAPCompareDNOnServer</a></code>
    directive.</p>


<h3><a name="reqattribute" id="reqattribute">Require ldap-attribute</a></h3>

    <p>The <code>Require ldap-attribute</code> directive allows the
    administrator to grant access based on attributes of the authenticated
    user in the LDAP directory.  If the attribute in the directory
    matches the value given in the configuration, access is granted.</p>
    
    <p>The following directive would grant access to anyone with
    the attribute employeeType = active</p>

    <div class="example"><p><code>Require ldap-attribute employeeType=active</code></p></div>

    <p>Multiple attribute/value pairs can be specified on the same line
    separated by spaces or they can be specified in multiple 
    <code>Require ldap-attribute</code> directives. The effect of listing 
    multiple attribute/values pairs is an OR operation. Access will be 
    granted if any of the listed attribute values match the value of the 
    corresponding attribute in the user object. If the value of the 
    attribute contains a space, only the value must be within double quotes.</p>

    <p>The following directive would grant access to anyone with
    the city attribute equal to "San Jose" or status equal to "Active"</p>

    <div class="example"><p><code>Require ldap-attribute city="San Jose" status=active</code></p></div>



<h3><a name="reqfilter" id="reqfilter">Require ldap-filter</a></h3>

    <p>The <code>Require ldap-filter</code> directive allows the
    administrator to grant access based on a complex LDAP search filter.
    If the dn returned by the filter search matches the authenticated user
    dn, access is granted.</p>
    
    <p>The following directive would grant access to anyone having a cell phone
    and is in the marketing department</p>

    <div class="example"><p><code>Require ldap-filter &amp;(cell=*)(department=marketing)</code></p></div>

    <p>The difference between the <code>Require ldap-filter</code> directive and the 
    <code>Require ldap-attribute</code> directive is that <code>ldap-filter</code> 
    performs a search operation on the LDAP directory using the specified search 
    filter rather than a simple attribute comparison. If a simple attribute 
    comparison is all that is required, the comparison operation performed by 
    <code>ldap-attribute</code> will be faster than the search operation 
    used by <code>ldap-filter</code> especially within a large directory.</p>



</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>

    <ul>
      <li>
        Grant access to anyone who exists in the LDAP directory,
        using their UID for searches. 
<div class="example"><p><code>
AuthLDAPURL "ldap://ldap1.airius.com:389/ou=People, o=Airius?uid?sub?(objectClass=*)"<br />
Require valid-user
</code></p></div>
      </li>

      <li>
        The next example is the same as above; but with the fields
        that have useful defaults omitted. Also, note the use of a
        redundant LDAP server. 
<div class="example"><p><code>AuthLDAPURL "ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius"<br />
Require valid-user
</code></p></div>
      </li>

      <li>
        The next example is similar to the previous one, but it
        uses the common name instead of the UID. Note that this
        could be problematical if multiple people in the directory
        share the same <code>cn</code>, because a search on <code>cn</code>
        <strong>must</strong> return exactly one entry. That's why
        this approach is not recommended: it's a better idea to
        choose an attribute that is guaranteed unique in your
        directory, such as <code>uid</code>. 
<div class="example"><p><code>
AuthLDAPURL "ldap://ldap.airius.com/ou=People, o=Airius?cn"<br />
Require valid-user
</code></p></div>
      </li>

      <li>
        Grant access to anybody in the Administrators group. The
        users must authenticate using their UID. 
<div class="example"><p><code>
AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid<br />
Require ldap-group cn=Administrators, o=Airius
</code></p></div>
      </li>

      <li>
        The next example assumes that everyone at Airius who
        carries an alphanumeric pager will have an LDAP attribute
        of <code>qpagePagerID</code>. The example will grant access
        only to people (authenticated via their UID) who have
        alphanumeric pagers: 
<div class="example"><p><code>
AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(qpagePagerID=*)<br />
Require valid-user
</code></p></div>
      </li>

      <li>
        <p>The next example demonstrates the power of using filters
        to accomplish complicated administrative requirements.
        Without filters, it would have been necessary to create a
        new LDAP group and ensure that the group's members remain
        synchronized with the pager users. This becomes trivial
        with filters. The goal is to grant access to anyone who has
        a pager, plus grant access to Joe Manager, who doesn't
        have a pager, but does need to access the same
        resource:</p>
<div class="example"><p><code>
AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(|(qpagePagerID=*)(uid=jmanager))<br />
Require valid-user
</code></p></div>

        <p>This last may look confusing at first, so it helps to
        evaluate what the search filter will look like based on who
        connects, as shown below.  If
        Fred User connects as <code>fuser</code>, the filter would look
        like</p>

        <div class="example"><p><code>(&amp;(|(qpagePagerID=*)(uid=jmanager))(uid=fuser))</code></p></div>

        <p>The above search will only succeed if <em>fuser</em> has a
        pager. When Joe Manager connects as <em>jmanager</em>, the
        filter looks like</p>

        <div class="example"><p><code>(&amp;(|(qpagePagerID=*)(uid=jmanager))(uid=jmanager))</code></p></div>

        <p>The above search will succeed whether <em>jmanager</em>
        has a pager or not.</p>
      </li>
    </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="usingtls" id="usingtls">Using TLS</a></h2>

    <p>To use TLS, see the <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> directives <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedclientcert">LDAPTrustedClientCert</a></code>, <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedglobalcert">LDAPTrustedGlobalCert</a></code> and <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedmode">LDAPTrustedMode</a></code>.</p>

    <p>An optional second parameter can be added to the 
    <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> to override
    the default connection type set by <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedmode">LDAPTrustedMode</a></code>.
    This will allow the connection established by an <em>ldap://</em> Url 
    to be upgraded to a secure connection on the same port.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="usingssl" id="usingssl">Using SSL</a></h2>

    <p>To use SSL, see the <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> directives <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedclientcert">LDAPTrustedClientCert</a></code>, <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedglobalcert">LDAPTrustedGlobalCert</a></code> and <code class="directive"><a href="../mod/mod_ldap.html#ldaptrustedmode">LDAPTrustedMode</a></code>.</p>

    <p>To specify a secure LDAP server, use <em>ldaps://</em> in the
    <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code>
    directive, instead of <em>ldap://</em>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exposed" id="exposed">Exposing Login Information</a></h2>

    <p>When this module performs authentication, LDAP attributes specified
    in the <code class="directive"><a href="#authldapurl">AuthLDAPUrl</a></code> 
    directive are placed in environment variables with the prefix "AUTHENTICATE_".</p>

    <p>If the attribute field contains the username, common name
    and telephone number of a user, a CGI program will have access to
    this information without the need to make a second independent LDAP
    query to gather this additional information.</p>

    <p>This has the potential to dramatically simplify the coding and
    configuration required in some web applications.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="frontpage" id="frontpage">Using Microsoft
    FrontPage with mod_authnz_ldap</a></h2>

    <p>Normally, FrontPage uses FrontPage-web-specific user/group
    files (i.e., the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and
    <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> modules) to handle all
    authentication. Unfortunately, it is not possible to just
    change to LDAP authentication by adding the proper directives,
    because it will break the <em>Permissions</em> forms in
    the FrontPage client, which attempt to modify the standard
    text-based authorization files.</p>

    <p>Once a FrontPage web has been created, adding LDAP
    authentication to it is a matter of adding the following
    directives to <em>every</em> <code>.htaccess</code> file
    that gets created in the web</p>
<div class="example"><pre>
AuthLDAPURL            "the url"
AuthGroupFile <em>mygroupfile</em>
Require group <em>mygroupfile</em>
</pre></div>

<h3><a name="howitworks" id="howitworks">How It Works</a></h3>

    <p>FrontPage restricts access to a web by adding the <code>Require
    valid-user</code> directive to the <code>.htaccess</code>
    files. The <code>Require valid-user</code> directive will succeed for
    any user who is valid <em>as far as LDAP is
    concerned</em>. This means that anybody who has an entry in
    the LDAP directory is considered a valid user, whereas FrontPage
    considers only those people in the local user file to be
    valid. By substituting the ldap-group with group file authorization,
    Apache is allowed to consult the local user file (which is managed by 
    FrontPage) - instead of LDAP - when handling authorizing the user.</p>

    <p>Once directives have been added as specified above,
    FrontPage users will be able to perform all management
    operations from the FrontPage client.</p>


<h3><a name="fpcaveats" id="fpcaveats">Caveats</a></h3>

    <ul>
      <li>When choosing the LDAP URL, the attribute to use for
      authentication should be something that will also be valid
      for putting into a <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> user file.
      The user ID is ideal for this.</li>

      <li>When adding users via FrontPage, FrontPage administrators
      should choose usernames that already exist in the LDAP
      directory (for obvious reasons). Also, the password that the
      administrator enters into the form is ignored, since Apache
      will actually be authenticating against the password in the
      LDAP database, and not against the password in the local user
      file. This could cause confusion for web administrators.</li>

      
      <li>Apache must be compiled with <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>,
      <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> and
      <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> in order to
      use FrontPage support. This is because Apache will still use
      the <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> group file for determine 
      the extent of a user's access to the FrontPage web.</li>

      <li>The directives must be put in the <code>.htaccess</code>
      files. Attempting to put them inside <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> or <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> directives won't work. This
      is because <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> has to be able to grab
      the <code class="directive"><a href="../mod/mod_authn_file.html#authgroupfile">AuthGroupFile</a></code>
      directive that is found in FrontPage <code>.htaccess</code>
      files so that it knows where to look for the valid user list. If
      the <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> directives aren't in the same
      <code>.htaccess</code> file as the FrontPage directives, then
      the hack won't work, because <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will
      never get a chance to process the <code>.htaccess</code> file,
      and won't be able to find the FrontPage-managed user file.</li>
    </ul>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPBindDN" id="AuthLDAPBindDN">AuthLDAPBindDN</a> <a name="authldapbinddn" id="authldapbinddn">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Optional DN to use in binding to the LDAP server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPBindDN <em>distinguished-name</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>An optional DN used to bind to the server when searching for
    entries. If not provided, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will use
    an anonymous bind.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPBindPassword" id="AuthLDAPBindPassword">AuthLDAPBindPassword</a> <a name="authldapbindpassword" id="authldapbindpassword">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Password used in conjuction with the bind DN</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPBindPassword <em>password</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>A bind password to use in conjunction with the bind DN. Note
    that the bind password is probably sensitive data, and should be
    properly protected. You should only use the <code class="directive"><a href="#authldapbinddn">AuthLDAPBindDN</a></code> and <code class="directive"><a href="#authldapbindpassword">AuthLDAPBindPassword</a></code> if you
    absolutely need them to search the directory.</p> 

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPCharsetConfig" id="AuthLDAPCharsetConfig">AuthLDAPCharsetConfig</a> <a name="authldapcharsetconfig" id="authldapcharsetconfig">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Language to charset conversion configuration file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPCharsetConfig <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>The <code class="directive">AuthLDAPCharsetConfig</code> directive sets the location
    of the language to charset conversion configuration file. <var>File-path</var> is relative
    to the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>. This file specifies
    the list of language extensions to character sets.
    Most administrators use the provided <code>charset.conv</code>
    file, which associates common language extensions to character sets.</p>

    <p>The file contains lines in the following format:</p>

    <div class="example"><p><code>
      <var>Language-Extension</var> <var>charset</var> [<var>Language-String</var>] ...
    </code></p></div>

    <p>The case of the extension does not matter. Blank lines, and lines
    beginning with a hash character (<code>#</code>) are ignored.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPCompareDNOnServer" id="AuthLDAPCompareDNOnServer">AuthLDAPCompareDNOnServer</a> <a name="authldapcomparednonserver" id="authldapcomparednonserver">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use the LDAP server to compare the DNs</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPCompareDNOnServer on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthLDAPCompareDNOnServer on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>When set, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will use the LDAP
    server to compare the DNs. This is the only foolproof way to
    compare DNs.  <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will search the
    directory for the DN specified with the <a href="#reqdn"><code>Require dn</code></a> directive, then,
    retrieve the DN and compare it with the DN retrieved from the user
    entry. If this directive is not set,
    <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> simply does a string comparison. It
    is possible to get false negatives with this approach, but it is
    much faster. Note the <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> cache can speed up
    DN comparison in most situations.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPDereferenceAliases" id="AuthLDAPDereferenceAliases">AuthLDAPDereferenceAliases</a> <a name="authldapdereferencealiases" id="authldapdereferencealiases">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>When will the module de-reference aliases</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPDereferenceAliases never|searching|finding|always</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthLDAPDereferenceAliases Always</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>This directive specifies when <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will
    de-reference aliases during LDAP operations. The default is
    <code>always</code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPGroupAttribute" id="AuthLDAPGroupAttribute">AuthLDAPGroupAttribute</a> <a name="authldapgroupattribute" id="authldapgroupattribute">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>LDAP attributes used to check for group membership</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPGroupAttribute <em>attribute</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>This directive specifies which LDAP attributes are used to
    check for group membership. Multiple attributes can be used by
    specifying this directive multiple times. If not specified,
    then <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> uses the <code>member</code> and
    <code>uniquemember</code> attributes.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPGroupAttributeIsDN" id="AuthLDAPGroupAttributeIsDN">AuthLDAPGroupAttributeIsDN</a> <a name="authldapgroupattributeisdn" id="authldapgroupattributeisdn">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use the DN of the client username when checking for
group membership</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPGroupAttributeIsDN on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthLDAPGroupAttributeIsDN on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>When set <code>on</code>, this directive says to use the
    distinguished name of the client username when checking for group
    membership.  Otherwise, the username will be used. For example,
    assume that the client sent the username <code>bjenson</code>,
    which corresponds to the LDAP DN <code>cn=Babs Jenson,
    o=Airius</code>. If this directive is set,
    <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will check if the group has
    <code>cn=Babs Jenson, o=Airius</code> as a member. If this
    directive is not set, then <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will
    check if the group has <code>bjenson</code> as a member.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPRemoteUserAttribute" id="AuthLDAPRemoteUserAttribute">AuthLDAPRemoteUserAttribute</a> <a name="authldapremoteuserattribute" id="authldapremoteuserattribute">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use the value of the attribute returned during the user
query to set the REMOTE_USER environment variable</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPRemoteUserAttribute uid</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>If this directive is set, the value of the 
    <code>REMOTE_USER</code> environment variable will be set to the
    value of the attribute specified. Make sure that this attribute is
    included in the list of attributes in the AuthLDAPUrl definition,
    otherwise this directive will have no effect. This directive, if
    present, takes precedence over AuthLDAPRemoteUserIsDN. This
    directive is useful should you want people to log into a website
    using an email address, but a backend application expects the
    username as a userid.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPRemoteUserIsDN" id="AuthLDAPRemoteUserIsDN">AuthLDAPRemoteUserIsDN</a> <a name="authldapremoteuserisdn" id="authldapremoteuserisdn">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use the DN of the client username to set the REMOTE_USER
environment variable</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPRemoteUserIsDN on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthLDAPRemoteUserIsDN off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>If this directive is set to on, the value of the
    <code>REMOTE_USER</code> environment variable will be set to the full
    distinguished name of the authenticated user, rather than just
    the username that was passed by the client. It is turned off by
    default.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthLDAPUrl" id="AuthLDAPUrl">AuthLDAPUrl</a> <a name="authldapurl" id="authldapurl">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>URL specifying the LDAP search parameters</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthLDAPUrl <em>url [NONE|SSL|TLS|STARTTLS]</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>An RFC 2255 URL which specifies the LDAP search parameters
    to use. The syntax of the URL is</p>
<div class="example"><p><code>ldap://host:port/basedn?attribute?scope?filter</code></p></div>

<dl>
<dt>ldap</dt>

        <dd>For regular ldap, use the
        string <code>ldap</code>. For secure LDAP, use <code>ldaps</code>
        instead. Secure LDAP is only available if Apache was linked
        to an LDAP library with SSL support.</dd>

<dt>host:port</dt>

        <dd>
          <p>The name/port of the ldap server (defaults to
          <code>localhost:389</code> for <code>ldap</code>, and
          <code>localhost:636</code> for <code>ldaps</code>). To
          specify multiple, redundant LDAP servers, just list all
          servers, separated by spaces. <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>
          will try connecting to each server in turn, until it makes a
          successful connection.</p>

          <p>Once a connection has been made to a server, that
          connection remains active for the life of the
          <code class="program"><a href="../programs/httpd.html">httpd</a></code> process, or until the LDAP server goes
          down.</p>

          <p>If the LDAP server goes down and breaks an existing
          connection, <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> will attempt to
          re-connect, starting with the primary server, and trying
          each redundant server in turn. Note that this is different
          than a true round-robin search.</p>
        </dd>

<dt>basedn</dt>

        <dd>The DN of the branch of the
        directory where all searches should start from. At the very
        least, this must be the top of your directory tree, but
        could also specify a subtree in the directory.</dd>

<dt>attribute</dt>

        <dd>The attribute to search for.
        Although RFC 2255 allows a comma-separated list of
        attributes, only the first attribute will be used, no
        matter how many are provided. If no attributes are
        provided, the default is to use <code>uid</code>. It's a good
        idea to choose an attribute that will be unique across all
        entries in the subtree you will be using.</dd>

<dt>scope</dt>

        <dd>The scope of the search. Can be either <code>one</code> or
        <code>sub</code>. Note that a scope of <code>base</code> is
        also supported by RFC 2255, but is not supported by this
        module. If the scope is not provided, or if <code>base</code> scope
        is specified, the default is to use a scope of
        <code>sub</code>.</dd>

<dt>filter</dt>

        <dd>A valid LDAP search filter. If
        not provided, defaults to <code>(objectClass=*)</code>, which
        will search for all objects in the tree. Filters are
        limited to approximately 8000 characters (the definition of
        <code>MAX_STRING_LEN</code> in the Apache source code). This
        should be more than sufficient for any application.</dd>
</dl>

    <p>When doing searches, the attribute, filter and username passed
    by the HTTP client are combined to create a search filter that
    looks like
    <code>(&amp;(<em>filter</em>)(<em>attribute</em>=<em>username</em>))</code>.</p>

    <p>For example, consider an URL of
    <code>ldap://ldap.airius.com/o=Airius?cn?sub?(posixid=*)</code>. When
    a client attempts to connect using a username of <code>Babs
    Jenson</code>, the resulting search filter will be
    <code>(&amp;(posixid=*)(cn=Babs Jenson))</code>.</p>

    <p>An optional parameter can be added to allow the LDAP Url to override 
    the connection type.  This parameter can be one of the following:</p>

<dl>
    <dt>NONE</dt>
        <dd>Establish an unsecure connection on the default LDAP port. This
        is the same as <code>ldap://</code> on port 389.</dd>
    <dt>SSL</dt>
        <dd>Establish a secure connection on the default secure LDAP port.
        This is the same as <code>ldaps://</code></dd>
    <dt>TLS | STARTTLS</dt>
        <dd>Establish an upgraded secure connection on the default LDAP port.
        This connection will be initiated on port 389 by default and then 
        upgraded to a secure connection on the same port.</dd>
</dl>

    <p>See above for examples of <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code> URLs.</p>

    <p> When <code class="directive"><a href="#authldapurl">AuthLDAPURL</a></code>
    is enabled in a particular context, but some other module has performed
    authentication for the request, the server will try to map the username to a DN
    during authorization regardless of whether or not LDAP-specific requirements
    are present. To ignore the failures to map a username to a DN during
    authorization, set <code class="directive"><a href="#&#10;    authzldapautoritative">
    AuthzLDAPAutoritative</a></code> to "off".</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzLDAPAuthoritative" id="AuthzLDAPAuthoritative">AuthzLDAPAuthoritative</a> <a name="authzldapauthoritative" id="authzldapauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Prevent other authentication modules from
authenticating the user if this one fails</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzLDAPAuthoritative on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzLDAPAuthoritative on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authnz_ldap</td></tr>
</table>
    <p>Set to <code>off</code> if this module should let other
    authorization modules attempt to authorize the user, should
    authorization with this module fail. Control is only passed on
    to lower modules if there is no DN or rule that matches the
    supplied user name (as passed by the client).</p>
    <p> When no LDAP-specific <code class="directive"><a href="../mod/core.html#require">Require</a></code>  directives
    are used, authorization is allowed to fall back to other modules
    as if <code class="directive"><a href="#authzldapauthoritative">AuthzLDAPAuthoritative</a></code>
    was set to <code>off</code>. </p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                   mod/mod_authz_dbm.html                                                                              100644       0       0        24766 11256641267  12537  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_dbm - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_dbm</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Group authorization using DBM files</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_dbm_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_dbm.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authorization capabilities so that
       authenticated users can be allowed or denied access to portions
       of the web site by group membership. Similar functionality is
       provided by <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authdbmgroupfile">AuthDBMGroupFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authzdbmauthoritative">AuthzDBMAuthoritative</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authzdbmtype">AuthzDBMType</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthDBMGroupFile" id="AuthDBMGroupFile">AuthDBMGroupFile</a> <a name="authdbmgroupfile" id="authdbmgroupfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of the database file containing the list
of user groups for authorization</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDBMGroupFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_dbm</td></tr>
</table>
    <p>The <code class="directive">AuthDBMGroupFile</code> directive sets the
    name of a DBM file containing the list of user groups for user
    authorization.  <var>File-path</var> is the absolute path to the
    group file.</p>

    <p>The group file is keyed on the username. The value for a
    user is a comma-separated list of the groups to which the users
    belongs. There must be no whitespace within the value, and it
    must never contain any colons.</p>

    <div class="warning"><h3>Security</h3>
      <p>Make sure that the <code class="directive">AuthDBMGroupFile</code> is
      stored outside the document tree of the web-server. Do
      <strong>not</strong> put it in the directory that it protects.
      Otherwise, clients will be able to download the
      <code class="directive">AuthDBMGroupFile</code> unless otherwise
      protected.</p>
    </div>

    <p>Combining Group and Password DBM files: In some cases it is
    easier to manage a single database which contains both the
    password and group details for each user. This simplifies any
    support programs that need to be written: they now only have to
    deal with writing to and locking a single DBM file. This can be
    accomplished by first setting the group and password files to
    point to the same DBM:</p>

    <div class="example"><p><code>
      AuthDBMGroupFile /www/userbase<br />
      AuthDBMUserFile /www/userbase
    </code></p></div>

    <p>The key for the single DBM is the username. The value consists
    of</p>

    <div class="example"><p><code>
      Encrypted Password : List of Groups [ : (ignored) ]
    </code></p></div>

    <p>The password section contains the encrypted
    password as before. This is followed by a colon and the comma
    separated list of groups. Other data may optionally be left in the
    DBM file after another colon; it is ignored by the authorization
    module. This is what www.telescope.org uses for its combined
    password and group database.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzDBMAuthoritative" id="AuthzDBMAuthoritative">AuthzDBMAuthoritative</a> <a name="authzdbmauthoritative" id="authzdbmauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzDBMAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzDBMAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_dbm</td></tr>
</table>
    <p>Setting the <code class="directive">AuthzDBMAuthoritative</code>
    directive explicitly to <code>Off</code> allows group authorization
    to be passed on to lower level modules (as defined in the
    <code>modules.c</code> file) if there is no group found
    for the supplied userID. If there are any groups
    specified, the usual checks will be applied and a failure will
    give an Authentication Required reply.</p>

    <p>So if a userID appears in the database of more than one module;
    or if a valid <code class="directive"><a href="../mod/core.html#require">Require</a></code>
    directive applies to more than one module; then the first module
    will verify the credentials; and no access is passed on;
    regardless of the <code class="directive">AuthAuthoritative</code> setting.</p>

    <p>A common use for this is in conjunction with one of the
    auth providers; such as <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> or
    <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>. Whereas this DBM module supplies
    the bulk of the user credential checking; a few (administrator) related
    accesses fall through to a lower level with a well protected
    <code>.htpasswd</code> file.</p>

    <p>By default, control is not passed on and an unknown group
    will result in an Authentication Required reply. Not
    setting it thus keeps the system secure and forces an NCSA
    compliant behaviour.</p>

    <div class="warning"><h3>Security</h3>
      <p>Do consider the implications of allowing a user to
      allow fall-through in his .htaccess file; and verify that this
      is really what you want; Generally it is easier to just secure
      a single <code>.htpasswd</code> file, than it is to secure a
      database which might have more access interfaces.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzDBMType" id="AuthzDBMType">AuthzDBMType</a> <a name="authzdbmtype" id="authzdbmtype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the type of database file that is used to
store list of user groups</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzDBMType default|SDBM|GDBM|NDBM|DB</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzDBMType default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_dbm</td></tr>
</table>
    <p>Sets the type of database file that is used to store the list
    of user groups.
    The default database type is determined at compile time.  The
    availability of other types of database files also depends on
    <a href="../install.html#dbm">compile-time settings</a>.</p>

    <p>It is crucial that whatever program you use to create your group
    files is configured to use the same type of database.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
          mod/mod_authz_default.html                                                                          100644       0       0        11173 11256641267  13405  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_default - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_default</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Authorization fallback module</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_default_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_default.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module is designed to be the fallback module, if you don't
    have configured an authorization module like
    <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code> or <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code>.
    It simply rejects any authorization request.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authzdefaultauthoritative">AuthzDefaultAuthoritative</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzDefaultAuthoritative" id="AuthzDefaultAuthoritative">AuthzDefaultAuthoritative</a> <a name="authzdefaultauthoritative" id="authzdefaultauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization is passed to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzDefaultAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzDefaultAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_default</td></tr>
</table>
    <p>Setting the <code class="directive">AuthzDefaultAuthoritative</code> directive
    explicitly to <code>Off</code> allows for authorization to be passed on
    to lower level modules (as defined in the <code>modules.c</code>
    files).</p>

    <div class="note"><h3>Note</h3>
      <p>Normally there are no lower level modules, since
      <code class="module"><a href="../mod/mod_authz_default.html">mod_authz_default</a></code> is defined to be already on
      a <em>very low</em> level. Therefore you should leave the value of
      <code class="directive">AuthzDefaultAuthoritative</code> as default
      (<code>On</code>).</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                     mod/mod_authz_groupfile.html                                                                        100644       0       0        16426 11256641267  13763  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_groupfile - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_groupfile</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Group authorization using plaintext files</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_groupfile_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_groupfile.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authorization capabilities so that
    authenticated users can be allowed or denied access to portions
    of the web site by group membership. Similar functionality is
    provided by <code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authgroupfile">AuthGroupFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authzgroupfileauthoritative">AuthzGroupFileAuthoritative</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthGroupFile" id="AuthGroupFile">AuthGroupFile</a> <a name="authgroupfile" id="authgroupfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of a text file containing the list
of user groups for authorization</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthGroupFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_groupfile</td></tr>
</table>
    <p>The <code class="directive">AuthGroupFile</code> directive sets the
    name of a textual file containing the list of user groups for user
    authorization. <var>File-path</var> is the path to the group
    file. If it is not absolute, it is treated as relative to the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.</p>

    <p>Each line of the group file contains a groupname followed by a
    colon, followed by the member usernames separated by spaces.</p>

    <div class="example"><h3>Example:</h3><p><code>
      mygroup: bob joe anne
    </code></p></div> 

    <p>Note that searching large text files is <em>very</em>
    inefficient; <code class="directive"><a href="../mod/mod_authz_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></code> provides a much better performance.</p>

    <div class="warning"><h3>Security</h3>
      <p>Make sure that the <code class="directive">AuthGroupFile</code> is
      stored outside the document tree of the web-server; do <em>not</em>
      put it in the directory that it protects. Otherwise, clients may
      be able to download the <code class="directive">AuthGroupFile</code>.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzGroupFileAuthoritative" id="AuthzGroupFileAuthoritative">AuthzGroupFileAuthoritative</a> <a name="authzgroupfileauthoritative" id="authzgroupfileauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzGroupFileAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzGroupFileAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_groupfile</td></tr>
</table>
    <p>Setting the <code class="directive">AuthzGroupFileAuthoritative</code>
    directive explicitly to <code>Off</code> allows for
    group authorization to be passed on to lower level modules (as defined
    in the <code>modules.c</code> files) if there is <strong>no
    group</strong> matching the supplied userID.</p>

    <p>By default, control is not passed on and an unknown group
    will result in an Authentication Required reply. Not
    setting it thus keeps the system secure and forces an NCSA
    compliant behaviour.</p>

    <div class="warning"><h3>Security</h3>
      <p>Do consider the implications of allowing a user to
      allow fall-through in his <code>.htaccess</code> file; and verify
      that this is really what you want; Generally it is easier to just
      secure a single <code>.htpasswd</code> file, than it is to secure
      a database which might have more access interfaces.</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                          mod/mod_authz_host.html                                                                             100644       0       0        46436 11256641267  12750  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_host - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_host</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Group authorizations based on host (name or IP
address)</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_host_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_host.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>The directives provided by <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> are
    used in <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>,
    <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code>, and
    <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> sections
    as well as <code><a href="core.html#accessfilename">.htaccess</a>
    </code> files to control access to particular parts of the server.
    Access can be controlled based on the client hostname, IP address, or
    other characteristics of the client request, as captured in <a href="../env.html">environment variables</a>. The <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives are used to
    specify which clients are or are not allowed access to the server,
    while the <code class="directive"><a href="#order">Order</a></code>
    directive sets the default access state, and configures how the
    <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives interact with each
    other.</p>

    <p>Both host-based access restrictions and password-based
    authentication may be implemented simultaneously. In that case,
    the <code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code> directive is used
    to determine how the two sets of restrictions interact.</p>

    <p>In general, access restriction directives apply to all
    access methods (<code>GET</code>, <code>PUT</code>,
    <code>POST</code>, etc). This is the desired behavior in most
    cases. However, it is possible to restrict some methods, while
    leaving other methods unrestricted, by enclosing the directives
    in a <code class="directive"><a href="../mod/core.html#limit">&lt;Limit&gt;</a></code> section.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#allow">Allow</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deny">Deny</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#order">Order</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Allow" id="Allow">Allow</a> <a name="allow" id="allow">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls which hosts can access an area of the
server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Allow from all|<var>host</var>|env=[!]<var>env-variable</var>
[<var>host</var>|env=[!]<var>env-variable</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
</table>
    <p>The <code class="directive">Allow</code> directive affects which hosts can
    access an area of the server. Access can be controlled by
    hostname, IP address, IP address range, or by other
    characteristics of the client request captured in environment
    variables.</p>

    <p>The first argument to this directive is always
    <code>from</code>. The subsequent arguments can take three
    different forms. If <code>Allow from all</code> is specified, then
    all hosts are allowed access, subject to the configuration of the
    <code class="directive"><a href="#deny">Deny</a></code> and <code class="directive"><a href="#order">Order</a></code> directives as discussed
    below. To allow only particular hosts or groups of hosts to access
    the server, the <em>host</em> can be specified in any of the
    following formats:</p>

    <dl>
      <dt>A (partial) domain-name</dt>

      <dd>
      <div class="example"><h3>Example:</h3><p><code>
        Allow from apache.org<br />
        Allow from .net example.edu
      </code></p></div>
      <p>Hosts whose names match, or end in, this string are allowed
      access. Only complete components are matched, so the above
      example will match <code>foo.apache.org</code> but it will not
      match <code>fooapache.org</code>. This configuration will cause
      Apache to perform a double reverse DNS lookup on the client IP
      address, regardless of the setting of the <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> directive.  It will do
      a reverse DNS lookup on the IP address to find the associated
      hostname, and then do a forward lookup on the hostname to assure
      that it matches the original IP address.  Only if the forward
      and reverse DNS are consistent and the hostname matches will
      access be allowed.</p></dd>

      <dt>A full IP address</dt>

      <dd>
      <div class="example"><h3>Example:</h3><p><code>
        Allow from 10.1.2.3<br />
        Allow from 192.168.1.104 192.168.1.205
      </code></p></div>
      <p>An IP address of a host allowed access</p></dd>

      <dt>A partial IP address</dt>

      <dd>
      <div class="example"><h3>Example:</h3><p><code>
        Allow from 10.1<br />
        Allow from 10 172.20 192.168.2
      </code></p></div>
      <p>The first 1 to 3 bytes of an IP address, for subnet
      restriction.</p></dd>

      <dt>A network/netmask pair</dt>

      <dd>
      <div class="example"><h3>Example:</h3><p><code>
        Allow from 10.1.0.0/255.255.0.0
      </code></p></div>
      <p>A network a.b.c.d, and a netmask w.x.y.z. For more
      fine-grained subnet restriction.</p></dd>

      <dt>A network/nnn CIDR specification</dt>

      <dd>
      <div class="example"><h3>Example:</h3><p><code>
        Allow from 10.1.0.0/16
      </code></p></div>
      <p>Similar to the previous case, except the netmask consists of
      nnn high-order 1 bits.</p></dd>
    </dl>

    <p>Note that the last three examples above match exactly the
    same set of hosts.</p>

    <p>IPv6 addresses and IPv6 subnets can be specified as shown
    below:</p>

    <div class="example"><p><code>
       Allow from 2001:db8::a00:20ff:fea7:ccea<br />
       Allow from 2001:db8::a00:20ff:fea7:ccea/10
    </code></p></div>

    <p>The third format of the arguments to the
    <code class="directive">Allow</code> directive allows access to the server
    to be controlled based on the existence of an <a href="../env.html">environment variable</a>. When <code>Allow from
    env=<var>env-variable</var></code> is specified, then the request is
    allowed access if the environment variable <var>env-variable</var>
    exists. When <code>Allow from env=!<var>env-variable</var></code> is 
    specified, then the request is allowed access if the environment 
    variable <var>env-variable</var> doesn't exist.
    The server provides the ability to set environment
    variables in a flexible way based on characteristics of the client
    request using the directives provided by
    <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code>. Therefore, this directive can be
    used to allow access based on such factors as the clients
    <code>User-Agent</code> (browser type), <code>Referer</code>, or
    other HTTP request header fields.</p>

    <div class="example"><h3>Example:</h3><p><code>
      SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<br />
      &lt;Directory /docroot&gt;<br />
      <span class="indent">
        Order Deny,Allow<br />
        Deny from all<br />
        Allow from env=let_me_in<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>In this case, browsers with a user-agent string beginning
    with <code>KnockKnock/2.0</code> will be allowed access, and all
    others will be denied.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Deny" id="Deny">Deny</a> <a name="deny" id="deny">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls which hosts are denied access to the
server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Deny from all|<var>host</var>|env=[!]<var>env-variable</var>
[<var>host</var>|env=[!]<var>env-variable</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
</table>
    <p>This directive allows access to the server to be restricted
    based on hostname, IP address, or environment variables. The
    arguments for the <code class="directive">Deny</code> directive are
    identical to the arguments for the <code class="directive"><a href="#allow">Allow</a></code> directive.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Order" id="Order">Order</a> <a name="order" id="order">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls the default access state and the order in which
<code class="directive">Allow</code> and <code class="directive">Deny</code> are
evaluated.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Order <var>ordering</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Order Deny,Allow</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
</table>

    <p>The <code class="directive">Order</code> directive, along with the
    <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives, controls a
    three-pass access control system. The first pass processes either
    all <code class="directive"><a href="#allow">Allow</a></code> or all
    <code class="directive"><a href="#deny">Deny</a></code> directives, as
    specified by the <code class="directive">Order</code> directive. The second
    pass parses the rest of the directives (<code class="directive"><a href="#deny">Deny</a></code> or <code class="directive"><a href="#allow">Allow</a></code>). The third pass applies
    to all requests which do not match either of the first two.</p>

    <p>Note that all <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives are processed,
    unlike a typical firewall, where only the first match is used. The
    last match is effective (also unlike a typical firewall).
    Additionally, the order in which lines appear in the configuration
    files is not significant -- all <code class="directive"><a href="#allow">Allow</a></code> lines are processed as one
    group, all <code class="directive"><a href="#deny">Deny</a></code> lines
    are considered as another, and the default state is considered by
    itself.</p>

    <p><em>Ordering</em> is one of:</p>

    <dl>
      <dt><code>Allow,Deny</code></dt>

      <dd>First, all <code class="directive"><a href="#allow">Allow</a></code> directives are
      evaluated; at least one must match, or the request is rejected.
      Next, all <code class="directive"><a href="#deny">Deny</a></code>
      directives are evaluated. If any matches, the request is rejected.
      Last, any requests which do not match an <code class="directive"><a href="#allow">Allow</a></code> or a <code class="directive"><a href="#deny">Deny</a></code> directive are denied by
      default.</dd>

      <dt><code>Deny,Allow</code></dt>

      <dd>First, all <code class="directive"><a href="#deny">Deny</a></code>
      directives are evaluated; if any match, the request is denied
      <strong>unless</strong> it also matches an <code class="directive"><a href="#allow">Allow</a></code> directive. Any requests
      which do not match any <code class="directive"><a href="#allow">Allow</a></code> or <code class="directive"><a href="#deny">Deny</a></code> directives are
      permitted.</dd>

      <dt><code>Mutual-failure</code></dt>

      <dd>This order has the same effect as <code>Order
      Allow,Deny</code> and is deprecated in its favor.</dd>
    </dl>

    <p>Keywords may only be separated by a comma; <em>no whitespace</em>
    is allowed between them.</p>

    <table class="bordered">
      <tr>
        <th>Match</th>
        <th>Allow,Deny result</th>
        <th>Deny,Allow result</th>
      </tr><tr>
        <th>Match Allow only</th>
        <td>Request allowed</td>
        <td>Request allowed</td>
      </tr><tr>
        <th>Match Deny only</th>
        <td>Request denied</td>
        <td>Request denied</td>
      </tr><tr>
        <th>No match</th>
        <td>Default to second directive: Denied</td>
        <td>Default to second directive: Allowed</td>
      </tr><tr>
        <th>Match both Allow &amp; Deny</th>
        <td>Final match controls: Denied</td>
        <td>Final match controls: Allowed</td>
      </tr>
    </table>

    <p>In the following example, all hosts in the apache.org domain
    are allowed access; all other hosts are denied access.</p>

    <div class="example"><p><code>
      Order Deny,Allow<br />
      Deny from all<br />
      Allow from apache.org
    </code></p></div>

    <p>In the next example, all hosts in the apache.org domain are
    allowed access, except for the hosts which are in the foo.apache.org
    subdomain, who are denied access. All hosts not in the apache.org
    domain are denied access because the default state is to <code class="directive"><a href="#deny">Deny</a></code> access to the server.</p>

    <div class="example"><p><code>
      Order Allow,Deny<br />
      Allow from apache.org<br />
      Deny from foo.apache.org
    </code></p></div>

    <p>On the other hand, if the <code class="directive">Order</code> in the
    last example is changed to <code>Deny,Allow</code>, all hosts will
    be allowed access. This happens because, regardless of the actual
    ordering of the directives in the configuration file, the
    <code>Allow from apache.org</code> will be evaluated last and will
    override the <code>Deny from foo.apache.org</code>. All hosts not in
    the <code>apache.org</code> domain will also be allowed access
    because the default state is <code class="directive"><a href="#allow">Allow</a></code>.</p>

    <p>The presence of an <code class="directive">Order</code> directive can
    affect access to a part of the server even in the absence of
    accompanying <code class="directive"><a href="#allow">Allow</a></code>
    and <code class="directive"><a href="#deny">Deny</a></code> directives
    because of its effect on the default access state. For example,</p>

    <div class="example"><p><code>
      &lt;Directory /www&gt;<br />
      <span class="indent">
        Order Allow,Deny<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>will Deny all access to the <code>/www</code> directory
    because the default access state is set to
    <code class="directive"><a href="#deny">Deny</a></code>.</p>

    <p>The <code class="directive">Order</code> directive controls the order of
    access directive processing only within each phase of the server's
    configuration processing. This implies, for example, that an
    <code class="directive"><a href="#allow">Allow</a></code> or <code class="directive"><a href="#deny">Deny</a></code> directive occurring in a
    <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> section
    will always be evaluated after an <code class="directive"><a href="#allow">Allow</a></code> or <code class="directive"><a href="#deny">Deny</a></code> directive occurring in a
    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>
    section or <code>.htaccess</code> file, regardless of the setting of
    the <code class="directive">Order</code> directive. For details on the
    merging of configuration sections, see the documentation on <a href="../sections.html">How Directory, Location and Files sections
    work</a>.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                  mod/mod_authz_owner.html                                                                            100644       0       0        24076 11256641267  13121  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_owner - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_owner</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Authorization based on file ownership</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_owner_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_owner.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module authorizes access to files by comparing the userid used
    for HTTP authentication (the web userid) with the file-system owner or
    group of the requested file. The supplied username and password
    must be already properly verified by an authentication module,
    such as <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> or
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code>. <code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code>
    recognizes two arguments for the <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive, <code>file-owner</code> and
    <code>file-group</code>, as follows:</p>

    <dl>
      <dt><code>file-owner</code></dt>
      <dd>The supplied web-username must match the system's name for the
      owner of the file being requested. That is, if the operating system
      says the requested file is owned by <code>jones</code>, then the
      username used to access it through the web must be <code>jones</code>
      as well.</dd>

      <dt><code>file-group</code></dt>
      <dd>The name of the system group that owns the file must be present
      in a group database, which is provided, for example, by <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> or <code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code>,
      and the web-username must be a member of that group. For example, if
      the operating system says the requested file is owned by (system)
      group <code>accounts</code>, the group <code>accounts</code> must
      appear in the group database and the web-username used in the request
      must be a member of that group.</dd>
    </dl>

    <div class="note"><h3>Note</h3>
      <p>If <code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code> is used in order to authorize
      a resource that is not actually present in the filesystem
      (<em>i.e.</em> a virtual resource), it will deny the access.</p>

      <p>Particularly it will never authorize <a href="../content-negotiation.html#multiviews">content negotiated
      "MultiViews"</a> resources.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authzownerauthoritative">AuthzOwnerAuthoritative</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Configuration Examples</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Configuration Examples</a></h2>

    <h3><a name="examples.file-owner" id="examples.file-owner">Require file-owner</a></h3>
      <p>Consider a multi-user system running the Apache Web server, with
      each user having his or her own files in <code>~/public_html/private</code>. Assuming that there is a single
      <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code> database
      that lists all of their web-usernames, and that these usernames match
      the system's usernames that actually own the files on the server, then
      the following stanza would allow only the user himself access to his
      own files. User <code>jones</code> would not be allowed to access
      files in <code>/home/smith/public_html/private</code> unless they
      were owned by <code>jones</code> instead of <code>smith</code>.</p>

      <div class="example"><p><code>
        &lt;Directory /home/*/public_html/private&gt;<br />
        <span class="indent">
          AuthType Basic<br />
          AuthName MyPrivateFiles<br />
          AuthBasicProvider dbm<br />
          AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all<br />
          Satisfy All<br />
          Require file-owner<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>
    

    <h3><a name="examples.file-group" id="examples.file-group">Require file-group</a></h3>
      <p>Consider a system similar to the one described above, but with
      some users that share their project files in
      <code>~/public_html/project-foo</code>. The files are owned by the
      system group <code>foo</code> and there is a single <code class="directive"><a href="../mod/mod_authz_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></code> database that
      contains all of the web-usernames and their group membership,
      <em>i.e.</em> they must be at least member of a group named
      <code>foo</code>. So if <code>jones</code> and <code>smith</code>
      are both member of the group <code>foo</code>, then both will be
      authorized to access the <code>project-foo</code> directories of
      each other.</p>

      <div class="example"><p><code>
        &lt;Directory /home/*/public_html/project-foo&gt;<br />
        <span class="indent">
          AuthType Basic<br />
          AuthName "Project Foo Files"<br />
          AuthBasicProvider dbm<br />
          <br />
          # combined user/group database<br />
          AuthDBMUserFile  /usr/local/apache2/etc/.htdbm-all<br />
          AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all<br />
          <br />
          Satisfy All<br />
          Require file-group<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzOwnerAuthoritative" id="AuthzOwnerAuthoritative">AuthzOwnerAuthoritative</a> <a name="authzownerauthoritative" id="authzownerauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzOwnerAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzOwnerAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_owner</td></tr>
</table>
    <p>Setting the <code class="directive">AuthzOwnerAuthoritative</code>
    directive explicitly to <code>Off</code> allows for
    user authorization to be passed on to lower level modules (as defined
    in the <code>modules.c</code> files) if:</p>

    <ul>
    <li>in the case of <code>file-owner</code> the file-system owner does not
    match the supplied web-username or could not be determined, or</li>

    <li>in the case of <code>file-group</code> the file-system group does not
    contain the supplied web-username or could not be determined.</li>
    </ul>

    <p>Note that setting the value to <code>Off</code> also allows the
    combination of <code>file-owner</code> and <code>file-group</code>, so
    access will be allowed if either one or the other (or both) match.</p>

    <p>By default, control is not passed on and an authorization failure
    will result in an "Authentication Required" reply. Not
    setting it to <code>Off</code> thus keeps the system secure and forces
    an NCSA compliant behaviour.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  mod/mod_authz_user.html                                                                             100644       0       0        11450 11256641267  12735  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_authz_user - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_authz_user</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User Authorization</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>authz_user_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_authz_user.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides authorization capabilities so that
    authenticated users can be allowed or denied access to portions
    of the web site. <code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code> grants
    access if the authenticated user is listed in a <code>Require user</code>
    directive. Alternatively <code>Require valid-user</code> can be used to
    grant access to all successfully authenticated users.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#authzuserauthoritative">AuthzUserAuthoritative</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
<li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AuthzUserAuthoritative" id="AuthzUserAuthoritative">AuthzUserAuthoritative</a> <a name="authzuserauthoritative" id="authzuserauthoritative">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthzUserAuthoritative On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthzUserAuthoritative On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_user</td></tr>
</table>
    <p>Setting the <code class="directive">AuthzUserAuthoritative</code>
    directive explicitly to <code>Off</code> allows for
    user authorization to be passed on to lower level modules (as defined
    in the <code>modules.c</code> files) if there is <strong>no
    user</strong> matching the supplied userID.</p>

    <p>By default, control is not passed on and an unknown user
    will result in an Authentication Required reply. Not
    setting it to <code>Off</code> thus keeps the system secure and forces
    an NCSA compliant behaviour.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                        mod/mod_autoindex.html                                                                              100644       0       0       157246 11256641267  12602  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_autoindex - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_autoindex</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Unix <code>ls</code> veya Win32 <code>dir</code> kabuk komutunun
yaptığı gibi dizin içeriğini listeler.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>autoindex_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_autoindex.c</td></tr></table>
<h3>Özet</h3>

      <p>Bir dizin içerik dosyası iki kaynaktan gelebilir:</p>

    <ul>
      <li>Kullanıcı tarafından yazılmış ve genellikle <code>index.html</code>
        adında bir dosya olarak. Dosyanın ismi <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> yönergesi ile belirlenir ve
        <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> tarafından denetlenir.</li>

      <li>Kullanıcı tarafından böyle bir dosya sağlanmadığı takdirde dizin
        içerik listesini sunucu üretir. Diğer yönergeler bu listenin biçemini
        belirler. Listede gösterilen dosya türü simgeleri <code class="directive"><a href="#addicon">AddIcon</a></code>, <code class="directive"><a href="#addiconbyencoding">AddIconByEncoding</a></code> ve <code class="directive"><a href="#addiconbytype">AddIconByType</a></code> yönergeleri ile
        belirlenir. Bunlar <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> tarafından
        denetlenir.</li>
    </ul>

    <p>İki işlev birbirinden ayrı tutulmuştur, böylece kendiliğinden içerik
      listesi üretimi tamamen iptal edilebilir (veya değiştirilebilir).</p>

    <p>Kendiliğinden içerik listesi üretimi <code>Options +Indexes</code> ile
      etkin kılınabilir. Daha fazla bilgi için <code class="directive"><a href="../mod/core.html#options">Options</a></code> yönergesinin açıklamasına bakınız.</p>

    <p><code class="directive"><a href="#indexoptions">IndexOptions</a></code> yönergesi
      <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>
      seçeneği ile kullanılmışsa sütun başlıkları listenin sıralamasını
      sütundaki sıralamaya göre değiştirecek hiper bağlar haline getirilir
      (süslü liste). Aynı başlığa peşpeşe tıklamak suretiyle sıralamayı
      büyükten küçüğe veya tersine değiştirebilirsiniz. Bu sütun başlığı
      bağlarının oluşturulması <code class="directive"><a href="#indexoptions">IndexOptions</a></code> yönergesi <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code> seçeneği ile kullanılarak
      engellenebilir.</p>

    <p>Boyuta göre sıralamada daima dosyanın asıl boyutuna bakılır.
      Dolayısıyla ikisi de "1K" olarak gösterilen iki dosyadan 1010 baytlık
      olanı küçükten büyüğe sıralamada 1011 baytlıktan önce
      gösterilecektir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#addalt">AddAlt</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addaltbyencoding">AddAltByEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addaltbytype">AddAltByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#adddescription">AddDescription</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addicon">AddIcon</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addiconbyencoding">AddIconByEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addiconbytype">AddIconByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#defaulticon">DefaultIcon</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#headername">HeaderName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexheadinsert">IndexHeadInsert</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexignore">IndexIgnore</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexoptions">IndexOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexorderdefault">IndexOrderDefault</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexstylesheet">IndexStyleSheet</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#readmename">ReadmeName</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#query">Sütun Sıralamada Sorgu Seçenekleri</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="query" id="query">Sütun Sıralamada Sorgu Seçenekleri</a></h2>
    

    <p>Apache 2.0.23’te Sütun Sıralama için Sorgu Seçenekleri yeniden
      düzenlenip tamamen yeni bir sorgu seçenekleri grubu oluşturulmuştur.
      Çıktı üzerinde kullanıcı denetimini tamamen ortadan kaldırmak için
      <code class="directive"><a href="#indexoptions">IndexOptions</a></code> yönergesinin
      <code><a href="#indexoptions.ignoreclient">IgnoreClient</a></code>
      seçeneği kullanılabilir.</p>

    <p>Sütun sıralama başlıklarının her biri hedefi kendisi olan birer hiper
      bağ olup aşağıda sıralanan sorgu seçeneklerini kullanırlar. Bu
      seçeneklerin her biri her dizin içerik listesi isteğine eklenebilir.</p>

    <ul>
      <li><code>C=N</code> dizini dosya adına göre sıralar</li>

      <li><code>C=M</code> dizini son değişiklik zamanına ve ardından dosya
        ismine göre sıralar.</li>

      <li><code>C=S</code> dizini boyuta ve ardından dosya adına göre
        sıralar</li>

      <li class="separate"><code>C=D</code> dizini açıklamaya ve ardından
        dosya adına göre sıralar.</li>

      <li><code>O=A</code> artan sıralama uygulanır.</li>

      <li class="separate"><code>O=D</code>  azalan sıralama uygulanır.</li>

      <li><code>F=0</code> listeleme basit listeleme biçiminde yapılır
        (<code>FancyIndexing</code> seçeneği ile etkinleştirilen biçimde
        değil)</li>

      <li><code>F=1</code> listeleme <code>FancyIndexing</code> seçeneği ile
        etkinleştirilen biçimde yapılır</li>

      <li class="separate"><code>F=2</code> listeleme <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> ve
        <code><a href="#indexoptions.htmltable">HTMLTable</a></code> seçeneği
        ile etkinleştirilen biçimde yapılır.</li>

      <li><code>V=0</code> sürüme göre sıralama iptal edilir.</li>

      <li class="separate"><code>V=1</code> sürüme göre sıralama etkin
        kılınır.</li>

      <li><code>P=<var>kalıp</var></code> sadece belirtilen
        <code><em>kalıp</em></code> ile eşleşen dosyalar istelenir.</li>
    </ul>

    <p><code>P=<var>kalıp</var></code> sorgu seçeneğinin normalde <code class="directive"><a href="#indexignore">IndexIgnore</a></code> yönergesi işleme
      sokulduktan sonra değerlendirildiğine ve dosya isimlerinin diğer
      kendiliğinden içerik listeleme koşullarının konusu olmaya devam ettiğine
      dikkat ediniz. <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> modülündeki Sorgu
      Seçenekleri çözümleyicisi tanımadığı bir seçeneğe rastlar rastlamaz
      işlemi durdurur. Sorgu Seçenekleri yukarıda belirtilene uygun olarak iyi
      biçimli olmak zorundadır.</p>

    <p>Aşağıdaki basit örnekte sorgu seçeneklerinin kullanımı gösterilmiştir.
      Son satırda bulunan "submit" düğmesindeki tanınmayan "X" girdisine
      dikkat ediniz. "X=Göster" girdisi tüm seçenekler işlendikten sonra
      <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> tarafından son argüman olarak ele
      alınacak ve çözümleme işlemi o noktada duracaktır.</p>

    <div class="example"><pre>
&lt;form action="" method="get"&gt;
  &lt;input type="text" name="P" value="*" /&gt; ile eşleşen
  &lt;select name="C"&gt;
    &lt;option value="N" selected="selected"&gt;isme&lt;/option&gt;
    &lt;option value="M"&gt; değişiklik tarihine&lt;/option&gt;
    &lt;option value="S"&gt; boyuta&lt;/option&gt;
    &lt;option value="D"&gt; açıklamaya&lt;/option&gt;
  &lt;/select&gt; göre
  &lt;select name="O"&gt;
    &lt;option value="A" selected="selected"&gt; artan&lt;/option&gt;
    &lt;option value="D"&gt; azalan&lt;/option&gt;
  &lt;/select&gt;
  &lt;select name="V"&gt;
    &lt;option value="0" selected="selected"&gt;normal&lt;/option&gt;
    &lt;option value="1"&gt; sürümlü&lt;/option&gt;
  &lt;/select&gt; sıralamayla bir
  &lt;select name="F"&gt;
    &lt;option value="0"&gt; basit liste&lt;/option&gt;
    &lt;option value="1" selected="selected"&gt; süslü liste&lt;/option&gt;
    &lt;option value="2"&gt; tablolu liste&lt;/option&gt;
  &lt;/select&gt;
  &lt;input type="submit" name="X" value="Göster" /&gt;
&lt;/form&gt;</pre></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAlt" id="AddAlt">AddAlt</a> <a name="addalt" id="addalt">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosyaya göre seçilen simgenin yerinde gösterilecek metni belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddAlt <var>metin</var> <var>dosya</var> [<var>dosya</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAlt</code> yönergesi, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle
      üretilen dizin listesinde bir dosya simgesinin yerinde gösterilecek
      metni belirler. <code><em>dosya</em></code> olarak dosya türünü
      betimleyecek bir dosya uzantısı, dosya isminin bir kısmı, bir dosya ismi
      kalıbı veya tam yoluyla bir dosya ismi belirtilebilir. Eğer
      <code><em>metin</em></code> boşluk karakterleri içeriyorsa tırnak içine
      (<code>"</code> veya <code>'</code>) alınmalıdır. Simge metni, simge
      bulunamadığı veya istemci resim gösteremediği takdirde ya da kullanıcı
      resim yüklememeyi tercih etmişse gösterilir.</p>

    <div class="example"><h3>Örnekler</h3><p><code>
      AddAlt "PDF dosya" *.pdf<br />
      AddAlt Sıkıştırılmış *.gz *.zip *.Z
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAltByEncoding" id="AddAltByEncoding">AddAltByEncoding</a> <a name="addaltbyencoding" id="addaltbyencoding">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosyanın MIME kodlamasına göre seçilen simgenin yerinde
gösterilecek metni belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddAltByEncoding <var>metin</var> <var>MIME-kodlaması</var>
[<var>MIME-kodlaması</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAltByEncoding</code> yönergesi, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle
      üretilen dizin listesinde bir dosya simgesinin yerinde gösterilecek
      metni belirler. <code><em>MIME-kodlaması</em></code> olarak
      <code>x-compress</code> gibi geçerli bir içerik kodlaması
      belirtilmelidir. Eğer <code><em>metin</em></code> boşluk karakterleri
      içeriyorsa tırnak içine (<code>"</code> veya <code>'</code>)
      alınmalıdır. Simge metni simge bulunamadığı veya istemci resim
      gösteremediği takdirde ya da kullanıcı resim yüklememeyi tercih etmişse
      gösterilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      AddAltByEncoding gzip x-gzip
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAltByType" id="AddAltByType">AddAltByType</a> <a name="addaltbytype" id="addaltbytype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dosyanın MIME türüne göre seçilen simgenin yerinde gösterilecek
metni belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddAltByType <var>metin</var> <var>MIME-türü</var>
[<var>MIME-türü</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAltByType</code> yönergesi, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle
      üretilen dizin listesinde bir dosya simgesinin yerinde gösterilecek
      metni belirler. <code><em>MIME-türü</em></code> olarak
      <code>text/html</code> gibi geçerli bir içerik türü belirtilmelidir.
      Eğer <code><em>metin</em></code> boşluk karakterleri içeriyorsa tırnak
      içine (<code>"</code> veya <code>'</code>) alınmalıdır. Simge metni
      simge bulunamadığı veya istemci resim gösteremediği takdirde ya da
      kullanıcı resim yüklememeyi tercih etmişse gösterilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      AddAltByType 'salt metin' text/plain
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddDescription" id="AddDescription">AddDescription</a> <a name="adddescription" id="adddescription">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir dosya için gösterilecek açıklama belirtilir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddDescription <var>metin dosya</var> [<var>dosya</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>Yönerge, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle üretilen dizin listesinde bir
      dosya için gösterilecek açıklamayı belirler. <code><em>dosya</em></code>
      olarak dosya türünü betimleyecek bir dosya uzantısı, dosya isminin bir
      kısmı, bir dosya ismi kalıbı veya tam yoluyla bir dosya ismi
      belirtilebilir. Eğer dosya açıklamasını içeren
      <code><em>metin</em></code> boşluk karakterleri içeriyorsa çift tırnak
      (<code>"</code>) içine alınmalıdır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      AddDescription "Mars Gezegeni" /resimler/mars.gif
    </code></p></div>

    <p>Normalde öntanımlı açıklama alanının genişliği 23 bayttır. <code><a href="#indexoptions.suppressicon">IndexOptions SuppressIcon</a></code>
      seçeneği buna 6 bayt daha ekler; <code><a href="#indexoptions.suppresssize">IndexOptions SuppressSize</a></code>
      seçeneği 7 bayt, <code><a href="#indexoptions.suppresslastmodified">IndexOptions SuppressLastModified</a></code> seçeneği ise 19 bayt
      ekler. Böylece en fazla 55 karakterlik öntanımlı sütun genişliğine
      ulaşılabilir.</p>

    <p>Açıklama sütununun öntanımlı genişliği geçersiz kılınabilir hatta
      sınırsız açıklama uzunluğu atanabilir. Bu konu için <code class="directive"><a href="#indexoptions">IndexOptions</a></code> yönergesinin <a href="#indexoptions.descriptionwidth"><code>DescriptionWidth</code></a>
      seçeneğinin açıklamasına bakınız.</p>

    <div class="note"><h3>Önemli</h3>
      <p><code class="directive">AddDescription</code> ile tanımlanan açıklama metni
        HTML etiketleri ve karakter öğeleri içerebilir. Eğer açıklama
        sütununun genişlik sınırlamasından dolayı bir HTML etiketinin içeriği
        kırpılırsa bu durum dizin listesinin kalanını etkileyebilir (örneğin,
        kalın gösterim listenin kalanına yayılabilir).</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddIcon" id="AddIcon">AddIcon</a> <a name="addicon" id="addicon">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir dosya için gösterilecek simgeyi dosya adına göre belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddIcon <var>simge</var> <var>isim</var> [<var>isim</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>Yönerge, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle üretilen dizin listesinde adı
      <code><em>isim</em></code> ile biten bir dosya için gösterilecek simgeyi
      belirler. <code><em>simge</em></code> ya simgenin göreli URL’si (%
      öncelemeli) ya da <code>(<var>alt-metin</var>,<var>url</var>)</code>
      biçeminde olmalıdır; buradaki <code><em>alt-metin</em></code> simge
      gösterilemediği durumda tarayıcı tarafından simgenin yerinde
      gösterilecek metindir.</p>

    <p><code><em>isim</em></code> olarak ya (listeyi düzgün biçemlemek
      amacıyla) dizinler için <code>^^DIRECTORY^^</code>, boş satırlar için
      <code>^^BLANKICON^^</code> ya da dosya türünü betimleyecek bir dosya
      uzantısı, dosya isminin bir kısmı, bir dosya ismi kalıbı veya tam
      yoluyla bir dosya ismi belirtilebilir.</p>

    <div class="example"><h3>Örnekler</h3><p><code>
      AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm<br />
      AddIcon /icons/dir.xbm ^^DIRECTORY^^<br />
      AddIcon /icons/backup.xbm *~
    </code></p></div>

    <p>Mümkünse <code class="directive">AddIcon</code> yerine <code class="directive"><a href="#addiconbytype">AddIconByType</a></code> yönergesi tercih
      edilmelidir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddIconByEncoding" id="AddIconByEncoding">AddIconByEncoding</a> <a name="addiconbyencoding" id="addiconbyencoding">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir dosya için gösterilecek simgeyi dosyanın MIME kodlamasına
göre belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddIconByEncoding <var>simge</var> <var>MIME-kodlaması</var>
[<var>MIME-kodlaması</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>Yönerge, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle üretilen dizin listesinde bir
      dosya için gösterilecek simgeyi belirler. <code><em>simge</em></code> ya
      simgenin göreli URL’si (% öncelemeli) ya da
      <code>(<var>alt-metin</var>,<var>url</var>)</code> biçeminde olmalıdır;
      buradaki <code><em>alt-metin</em></code> simge gösterilemediği durumda
      tarayıcı tarafından simgenin yerinde gösterilecek metindir.</p>

    <p><code><em>MIME-kodlaması</em></code> olarak <code>x-compress</code>
      gibi geçerli bir içerik kodlaması belirtilmelidir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      AddIconByEncoding /icons/compress.xbm x-compress
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddIconByType" id="AddIconByType">AddIconByType</a> <a name="addiconbytype" id="addiconbytype">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir dosya için gösterilecek simgeyi dosyanın MIME türüne göre
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AddIconByType <var>simge</var> <var>MIME-türü</var>
[<var>MIME-türü</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>Yönerge, <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle üretilen dizin listesinde MIME
      türü <code><em>MIME-türü</em></code> olarak belirtilen bir dosya için
      gösterilecek simgeyi belirler. <code><em>simge</em></code> ya simgenin
      göreli URL’si (% öncelemeli) ya da
      <code>(<var>alt-metin</var>,<var>url</var>)</code> biçeminde olmalıdır;
      buradaki <code><em>alt-metin</em></code> simge gösterilemediği durumda
      tarayıcı tarafından simgenin yerinde gösterilecek metindir.</p>

    <p><var>MIME-türü</var> MIME türleri ile eşleşen bir dosya kalıbı ifadesi
      olabilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      AddIconByType (IMG,/icons/image.xbm) image/*
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DefaultIcon" id="DefaultIcon">DefaultIcon</a> <a name="defaulticon" id="defaulticon">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Özel bir simge atanmamış dosyalar için gösterilecek simgeyi
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>DefaultIcon <var>URL-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">DefaultIcon</code> yönergesi  <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğiyle
      üretilen dizin listesinde özel bir simge atanmamış dosyalar için
      gösterilecek simgeyi belirler. <code><em>URL-yolu</em></code> simgeye
      bir göreli URL (% öncelemeli) belirtir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      DefaultIcon /icon/unknown.xbm
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="HeaderName" id="HeaderName">HeaderName</a> <a name="headername" id="headername">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin listesinin tepesine yerleştirilecek dosyanın ismini
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>HeaderName <var>dosya-ismi</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">HeaderName</code> yönergesi, dizin listesinin tepesine
      yerleştirilecek dosyanın ismini belirler. Dosyanın ismi
      <code><em>dosya-ismi</em></code> ile belirtilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      HeaderName HEADER.html
    </code></p></div>

    <div class="note">
      <p><code>HeaderName</code> and <code class="directive"><a href="#readmename">ReadmeName</a></code> yönergelerinde
        <code><em>dosya-ismi</em></code> artık içeriği listelenecek dizine
        erişmek için kullanılan bir göreli URL yolu olarak ele alınmaktadır.
        Eğer <code><em>dosya-ismi</em></code> bir bölü çizgisi ("/") ile
        başlıyorsa <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
        yönergesinde belirtilen dizine göre belirtildiği varsayılır.</p>

      <div class="example"><h3>Örnek</h3><p><code>
        HeaderName /include/HEADER.html
      </code></p></div>

      <p><code><em>dosya-ismi</em></code>,  içerik türü <code>text/*</code>
        (<code>text/html</code>, <code>text/plain</code> gibi) olan bir belge
        olarak çözümlenmelidir. Yani, aşağıdaki örnekteki gibi betiğin asıl
        dosya türü <code>text/html</code> olarak imlenmişse
        <code><em>dosya-ismi</em></code> bir CGI betiğinin ismi bile
        olabilir:</p>

      <div class="example"><p><code>
        AddType text/html .cgi
      </code></p></div>

      <p><code class="directive"><a href="../mod/core.html#options">Options</a></code> ile
        <code>MultiViews</code> etkin kılınmışsa dosyaya <a href="../content-negotiation.html">içerik dili uzlaşımı</a> da
        uygulanabilir. <code><em>dosya-ismi</em></code> ile belirtilen dosya
        <code>text/html</code> türünde durağan bir belge (bir CGI betiği
        değil) ise ve <code class="directive"><a href="../mod/core.html#options">options</a></code> ile
        <code>Includes</code> ve <code>IncludesNOEXEC</code> seçeneklerinden
        biri belirtilmişse dosya bir SSI sayfası olarak ele alınır
        (<code class="module"><a href="../mod/mod_include.html">mod_include</a></code> belgesine bakınız).</p>
    </div>

    <p>Eğer yönergede belirtilen dosya bir HTML belge gibi başlıyorsa
      (&lt;html&gt;, &lt;head&gt;, vs.) ve bu etiketlerin yinelenmemesini
      istiyorsanız <a href="#indexoptions.suppresshtmlpreamble"><code>IndexOptions +SuppressHTMLPreamble</code></a> ataması yapmanız
      gerekecektir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexHeadInsert" id="IndexHeadInsert">IndexHeadInsert</a> <a name="indexheadinsert" id="indexheadinsert">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir dizin sayfasının HEAD bölümüne metin yerleştirir.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>IndexHeadInsert <var>"imlenim ..."</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.2.11 ve sonrasında kullanılabilmektedir.
</td></tr>
</table>
    <p><code class="directive">IndexHeadInsert</code> yönergesi, dizin listesi için
    üretilen HTML’nin <var>&lt;head&gt;</var> bölümüne yerleştirilecek bir
    dizge tanımlar.</p>
    <div class="example"><h3>Example</h3><p><code>
      
      IndexHeadInsert "&lt;link rel=\"sitemap\" href=\"/sitemap.html\"&gt;"
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexIgnore" id="IndexIgnore">IndexIgnore</a> <a name="indexignore" id="indexignore">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin içerik listesinden gizlenecek dosyaların listesi belirtilir.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>IndexIgnore <var>dosya</var> [<var>dosya</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">IndexIgnore</code> yönergesi, dizin içerik listesinden
      gizlenecek dosyaların listesini belirtmek için kullanılır.
      <code><em>dosya</em></code> olarak kabuk tarzı bir dosya ismi kalıbı
      veya tam yoluyla bir dosya ismi belirtilebilir. Evvelce yapılmış bir
      atamada değişiklik yapmak yerine birden fazla
      <code class="directive">IndexIgnore</code> ataması yapabilirsiniz. Liste
      öntanımlı olarak içinde bulunulan dizini (<code>./</code>) içerir.</p>

    <div class="example"><p><code>
      IndexIgnore README .htaccess *.bak *~
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexOptions" id="IndexOptions">IndexOptions</a> <a name="indexoptions" id="indexoptions">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin içerik listesini yapılandıracak seçenekler belirtilir.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>IndexOptions  [+|-]<var>seçenek</var> [[+|-]<var>seçenek</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">IndexOptions</code> yönergesi dizin içerik listesinin
      davranışını belirler. <code><em>seçenek</em></code> olarak şunlar
      belirtilebilir:</p>

    <dl>
      <dt><a name="indexoptions.charset" id="indexoptions.charset"><code>Charset=<em>karakter-kümesi</em></code></a> (<em>Apache 2.0.61
        ve sonrası</em>)</dt>

      <dd><code>Charset</code> seçeneği üretilen sayfa için bir karakter
        kümesi belirtebilmenizi sağlar. Dizinin bulunduğu dosya sisteminin
        karakter kodlamasına bağlı olarak öntanımlı değeri ya
        <var>ISO-8859-1</var> ya da <var>UTF-8</var>’dir.

      <div class="example"><h3>Örnek</h3><p><code>
        IndexOptions Charset=UTF-8
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.type" id="indexoptions.type"><code>Type=<em>MIME-türü</em></code></a> (<em>Apache 2.0.61 ve
        sonrası</em>)</dt>

      <dd><code>Type</code> seçeneği üretilen sayfa için bir MIME türü
        belirtebilmenizi sağlar. Öntanımlı değer <var>text/html</var>’dir.

      <div class="example"><h3>Örnek</h3><p><code>
        IndexOptions Type=text/plain
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.descriptionwidth" id="indexoptions.descriptionwidth"><code>DescriptionWidth=[<em>n</em> | *]</code></a>
            (<em>Apache 2.0.23 ve sonrası</em>)</dt>

      <dd><p><code>DescriptionWidth</code> seçeneği üretilen sayfada açıklama
        sütununun genişliğini sizin belirleyebilmenizi sağlar. Bu seçenek
        kullanılmadığında veya <code>-DescriptionWidth</code> olarak
        belirtildiğinde uygun genişliği <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>
        hesaplar.</p>

        <p><code>DescriptionWidth=<em>n</em></code> ile açıklama sütununun
          genişliği <code><em>n</em></code> baytla sınırlanır.</p>

        <p><code>DescriptionWidth=*</code> ile açıklama sütununun genişliği en
          uzun açıklama metni sığacak şekilde arttırılır.</p>

        <p><strong>Sütun genişliğinin sabitliği nedeniyle metnin
          kırpılmasından kaynaklanan sorunlar için <code class="directive"><a href="#adddescription">AddDescription</a></code> yönergesinin
          açıklamasına bakınız.</strong></p></dd>

      <dt><a name="indexoptions.fancyindexing" id="indexoptions.fancyindexing"><code>FancyIndexing</code></a></dt>

      <dd>Dizin içerik listesi süslü olur.</dd>

      <dt><a name="indexoptions.foldersfirst" id="indexoptions.foldersfirst"><code>FoldersFirst</code></a>
             (<em>Apache 2.0.23 ve sonrası</em>)</dt>

      <dd>Bu seçenek etkin kılındığında dizin içerik listesinde alt dizinler
        dosyalardan önce listelenir. Listelemede genel olarak iki bileşen
        vardır: Alt dizinler ve dosyalar. Her biri kendi arasında sıraya
        dizilir ve alt dizinlerin tamamı dosyalardan önce gösterilir. Örneğin
        sıralama isme göre azalan sırada yapılıyorsa ve
        <code>FoldersFirst</code> etkinse <code>Zed</code> dizini listede
        <code>Beta</code> dizininden ve <code>Gamma</code> ve
        <code>Alpha</code> dosyalarından önce yer alacaktır. <strong>Bu
        seçenek sadece <a href="#indexoptions.fancyindexing"><code>FancyIndexing</code></a>  seçeneği etkinse etkili
        olacaktır.</strong></dd>

      <dt><a name="indexoptions.htmltable" id="indexoptions.htmltable"><code>HTMLTable</code></a>
             (<em>Deneysel, Apache 2.0.23 ve sonrası</em>)</dt>

      <dd>Bu deneysel seçenek <a href="#indexoptions.fancyindexing"><code>FancyIndexing</code></a>  seçeneği ile birlikte süslü listeleme
        için basit bir tablo oluşturur. Fakat bu eski tarayıcıları yanıltır.
        Bununla birlikte, Linux, WinNT gibi sağdan sola veya soldan sağa yazım
        yönünün UTF-8 karakter koduna göre değiştiği platformlarda dosya
        isimleri ve açıklamalar için bu özellikle gerekli olabilir.</dd>

      <dt><a name="indexoptions.iconsarelinks" id="indexoptions.iconsarelinks"><code>IconsAreLinks</code></a></dt>

      <dd>Bu seçenek <a href="#indexoptions.fancyindexing"><code>FancyIndexing</code></a>  seçeneği ile birlikte süslü
        listelemede dosya simgesini dosyaya bir hiper bağ haline getirir.</dd>

      <dt><a name="indexoptions.iconheight" id="indexoptions.iconheight"><code>IconHeight[=<em>benek-sayısı</em>]</code></a></dt>

      <dd>Bu seçeneğin varlığı <code>IconWidth</code> seçeneği ile
        kullanıldığında dosya simgesinin <code>img</code> etiketinin
        <code>height</code> ve <code>width</code> özniteliklerini içermesine
        sebep olur. Böylece tarayıcının tüm simgelerin yüklenmesini beklemeden
        sayfa yerleşimi için bir ön hesaplama yapabilmesi mümkün olur. Seçenek
        bir değer belirtilmeksizin kullanıldığında Apache tarafından atanmış
        standart simge yüksekliği öntanımlıdır.</dd>

      <dt><a name="indexoptions.iconwidth" id="indexoptions.iconwidth"><code>IconWidth[=<em>benek-sayısı</em>]</code></a></dt>

      <dd>Bu seçeneğin varlığı <code>IconHeight</code> seçeneği ile
        kullanıldığında dosya simgesinin <code>img</code> etiketinin
        <code>height</code> ve <code>width</code> özniteliklerini içermesine
        sebep olur. Böylece tarayıcının tüm simgelerin yüklenmesini beklemeden
        sayfa yerleşimi için bir ön hesaplama yapabilmesi mümkün olur. Seçenek
        bir değer belirtilmeksizin kullanıldığında Apache tarafından atanmış
        standart simge genişliği öntanımlıdır.</dd>

      <dt><a name="indexoptions.ignorecase" id="indexoptions.ignorecase"><code>IgnoreCase</code></a></dt>

      <dd>Bu seçenek etkin kılındığında isimler harf büyüklüğüne duyarsız
        sıralanır. Örneğin, isme göre artan sıralamada <code>IgnoreCase</code>
        etkinse Zeta dosyası alfa dosyasından sonra listelenir (Dikkat: GAMMA
        daima gamma’dan önce listelenir.)</dd>

      <dt><a name="indexoptions.ignoreclient" id="indexoptions.ignoreclient"><code>IgnoreClient</code></a></dt>

      <dd>Bu seçenek <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>’in listenin sıralanmasına
        etki edenler dahil tüm sorgu değişkenlerini yoksaymasına sebep olur
        (örtük olarak <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code> uygulanır).</dd>

      <dt><a name="indexoptions.namewidth" id="indexoptions.namewidth"><code>NameWidth=[<em>n</em> | *]</code></a></dt>

      <dd><p><code>NameWidth</code> seçeneği dosya ismi sütunu için bir
        genişlik belirtebilmenizi mümkün kılar.</p>

      <p>Hiç belirtilmediğinde veya <code>-NameWidth</code> biçeminde
        belirtildiğinde <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> uygun genişliği kendisi
        hesaplayacaktır.</p>

      <p><code>NameWidth=<em>n</em></code> ile sütun genişliği
        <code><em>n</em></code> bayt genişlikte sabitlenir.</p>

      <p><code>NameWidth=*</code> olduğunda ise sütun genişliği en geniş
        satırın sığacağı kadar arttırılır.</p></dd>

      <dt><a name="indexoptions.scanhtmltitles" id="indexoptions.scanhtmltitles"><code>ScanHTMLTitles</code></a></dt>

      <dd>Bu seçenek süslü listeleme için HTML belgelerden sayfa başlığının
        okunmasını sağlar. Dosya için <code class="directive"><a href="#adddescription">AddDescription</a></code> ile bir açıklama tanımlanmımışsa httpd
        belgenin <code>title</code> etiketinin içeriğini okuyacaktır. Bu
        seçenek işlemciyi ve diski fazla meşgul eder.</dd>

      <dt><a name="indexoptions.showforbidden" id="indexoptions.showforbidden"><code>ShowForbidden</code></a></dt>

      <dd>Alt istek <code>HTTP_UNAUTHORIZED</code> veya
        <code>HTTP_FORBIDDEN</code> döndürdüğünden dolayı normalde gizli olan
        dosyalar bu seçenek belirtilmişse listede gösterilir.</dd>

      <dt><a name="indexoptions.suppresscolumnsorting" id="indexoptions.suppresscolumnsorting"><code>SuppressColumnSorting</code></a></dt>

      <dd>Bu seçenek belirtilmişse Apache, süslü dizin listesinde sütun
        başlıklarını sıralama için hiper bağ haline getirmeyecektir. Sütun
        başlıkları için öntanımlı davranış hiper bağ olmak olup bunlar
        seçilerek dizin listesinin o sütundaki değerlere göre sıralanması
        sağlanır. <strong>Apache 2.0.23 öncesinde, bu seçenek ayrıca, sıralama
        dizgesi için sorgu sözcüklerinin çözümlenmesini de iptal
        ederdi.</strong> Bu davranış Apache 2.0.23’ten beri <a href="#indexoptions.ignoreclient"><code>IndexOptions
        IgnoreClient</code></a> ile sağlanmaktadır.</dd>

      <dt><a name="indexoptions.suppressdescription" id="indexoptions.suppressdescription"><code>SuppressDescription</code></a></dt>

      <dd>Süslü listelemede dosya açıklamalarının gösterilmesini engeller.
        Öntanımlı olarak hiçbir dosya açıklaması tanımlı değildir, dolayısıyla
        bu seçenek kullanılarak ekran genişliğinden 23 karakterlik yer
        kazanılabilir. Dosya açıklamalarının nasıl belirlendiğini öğrenmek
        için <code class="directive"><a href="#adddescription">AddDescription</a></code>
        yönergesinin açıklamasına bakınız. Ayrıca, açıklama sütununun
        genişliğini ayarlayan <code><a href="#indexoptions.descriptionwidth">DescriptionWidth</a></code> dizin listeleme seçeneğine de
        bakınız.</dd>

      <dt><a name="indexoptions.suppresshtmlpreamble" id="indexoptions.suppresshtmlpreamble"><code>SuppressHTMLPreamble</code></a></dt>

      <dd>Eğer dizin aslında <code class="directive"><a href="#headername">HeaderName</a></code> yönergesi ile belirtilmiş bir dosya içeriyorsa
        modül normal olarak bu dosyanın içeriğinin öncesine HTML başlangıç
        etiketlerini (<code>&lt;html&gt;</code>, <code>&lt;head&gt;</code>,
        vs.) yerleştirir. Bu seçenek bu davranışı iptal ederek modülün dosya
        içeriğinin başlangıcına bir şey eklememesini sağlar. Bu durumda başlık
        dosyasının uygun HTML etiketlerini içermesi gerekir. Böyle bir başlık
        dosyası yoksa normal olarak HTML başlangıç etiketleri üretilir.</dd>

      <dt><a name="indexoptions.suppressicon" id="indexoptions.suppressicon"><code>SuppressIcon</code></a>
              (<em>Apache 2.0.23 ve sonrası</em>)</dt>

      <dd>Süslü dizin listesinde dosya simgelerinin gösterilmesini engeller.
        Son belirtim, süslü dizin listelemede kullanılan <code>pre</code>
        etiketinin içeriğinde <code>img</code> ve <code>hr</code>
        etiketlerinin bulunmasına izin vermediğinden <code>SuppressIcon</code>
        ve <code>SuppressRules</code> seçenekleri birlikte kullanılarak HTML
        3.2 belirtimine uyum sağlanır.</dd>

      <dt><a name="indexoptions.suppresslastmodified" id="indexoptions.suppresslastmodified"><code>SuppressLastModified</code></a></dt>

      <dd>Süslü dizin listelemede son değişiklik tarihinin gösterilmesi
        engellenir.</dd>

      <dt><a name="indexoptions.suppressrules" id="indexoptions.suppressrules"><code>SuppressRules</code></a>
              (<em>Apache 2.0.23 ve sonrası</em>)</dt>

      <dd>Dizin listelemede <code>hr</code> etiketinin kullanımını engeller.
        Son belirtim, süslü dizin listelemede kullanılan <code>pre</code>
        etiketinin içeriğinde <code>img</code> ve <code>hr</code>
        etiketlerinin bulunmasına izin vermediğinden <code>SuppressIcon</code>
        ve <code>SuppressRules</code> seçenekleri birlikte kullanılarak HTML
        3.2 belirtimine uyum sağlanır.</dd>

      <dt><a name="indexoptions.suppresssize" id="indexoptions.suppresssize"><code>SuppressSize</code></a></dt>

      <dd>Süslü dizin listelemede dosya boyutunun gösterilmesi engellenir.</dd>

      <dt><a name="indexoptions.trackmodified" id="indexoptions.trackmodified"><code>TrackModified</code></a>
               (<em>Apache 2.0.23 ve sonrası</em>)</dt>

      <dd>Bu seçenek listelenen dizin için HTTP başlığında
        <code>Last-Modified</code> ve <code>ETag</code> alanlarının dönmesini
        sağlar. Sadece işletim sistemi veya dosya sistemi uygun stat()
        sonuçlarını döndürüyorsa bu geçerlidir. Bazı Unix sistemleri, OS2’nin
        JFS’si ve Win32’nin NTFS’i böyledir. Ancak OS2 ve Win32 FAT dosya
        sistemleri böyle değildir. Bu özellik etkin kılındığında istemci veya
        vekil <code>HEAD</code> istekleriyle dosya listesindeki değişiklikleri
        izleyebilirler. Yalnız, bazı işletim sistemlerinin yeni ve silinmiş
        dosyaların izini iyi sürdüğü halde dizin içindeki dosyaların boyut ve
        tarih değişikliklerini izlemediklerine dikkat ediniz. <strong>Mevcut
        bir dosyanın boyut ve zaman damgasındaki değişiklikler
        <code>Last-Modified</code> başlığının  güncellenmesini tüm Unix
        sistemlerinde sağlamaz</strong>. Bu gibi durumlarda bu seçeneğin
        kapalı kalması daha iyidir.</dd>

      <dt><a name="indexoptions.versionsort" id="indexoptions.versionsort"><code>VersionSort</code></a>
              (<em>Apache 2.0a3 ve sonrası</em>)</dt>

      <dd><code>VersionSort</code> seçeneği isimlerinde sürüm numarası bulunan
        dosyaların sayısal sıralamaya uygun olarak sıralanmalarını sağlar.
        Normalde sıralama karakter sıralamasına göre yapılır, ardından sürüm
        numaralı dosyalar veya açıklamalar kendi aralarında sayısal sıralamaya
        tabi tutulur.

      <div class="example"><h3>Örnek:</h3><p><code>
        foo-1.7<br />
        foo-1.7.2<br />
        foo-1.7.12<br />
        foo-1.8.2<br />
        foo-1.8.2a<br />
        foo-1.12
      </code></p></div>

      <p>Sıfır ile başlalan numaralara ondalık sayı muamelesi yapılır:</p>

      <div class="example"><p><code>
        foo-1.001<br />
        foo-1.002<br />
        foo-1.030<br />
        foo-1.04
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.xhtml" id="indexoptions.xhtml"><code>XHTML</code></a>
          (<em>Apache 2.0.49 ve sonrası</em>)</dt>

      <dd><code>XHTML</code> seçeneği <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>’in kodu
        HTML 3.2’ye değil XHTML 1.0’a uygun üretmesini sağlar.</dd>
    </dl>

   
  <dl><dt><code>+</code> veya <code>-</code> Önekli Seçenekler</dt>
    <dd>
      <p>Apache 1.3.3’te <code class="directive">IndexOptions</code> yönergelerinin ele
        alınışıyla ilgili önemil değişiklikler yapılmıştır. Bunlar:</p>

      <ul>
      <li>Tek bir dizin için çok sayıda <code class="directive">IndexOptions</code>
        yönergesi belirtilmişse bunlar ayrı ayrı değil birlikte ele alınır.
        Yani,

      <div class="example"><p><code>
        &lt;Directory /foo&gt;
        <span class="indent">
          IndexOptions HTMLTable<br />
          IndexOptions SuppressColumnsorting
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>yapılandırmasındaki <code class="directive">IndexOptions</code>
        yönergeleri</p>

      <div class="example"><p><code>
        IndexOptions HTMLTable SuppressColumnsorting
      </code></p></div>

      <p>yönergesine eşdeğerdir.</p>
      </li>

      <li>Seçeneklerde <code>+</code> veya <code>-</code> önekleri
        kullanılabilmektedir.</li>
      </ul>

      <p><code>+</code> veya <code>-</code> önekli seçeneklere rastlandığında
        bunlar mevcut (üst dizinden miras alınanlar ve/veya önceki atamalar)
        <code class="directive">IndexOptions</code> yönergelerine uygulanır. Ancak,
        önek kullanılmamış bir seçeneğe raslandığında, o noktada önceki ve
        miras alınmış bu tür seçenekler iptal edilir. Şu örneği ele alalım:</p>

      <div class="example"><p><code>
        IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing<br />
        IndexOptions +SuppressSize
      </code></p></div>

      <p>Bunun net etkisi <code>IndexOptions FancyIndexing +SuppressSize</code>
        atamasına eşdeğerdir, çünkü öneksiz <code>FancyIndexing</code> seçeneği
        kendinden önceki önekli seçenekleri iptal etmiş fakat hemen ardından
        eklenmelerine izin vermiştir.</p>

      <p>Belli bir dizine önceki seçenekleri temizleyerek koşulsuz olarak
        tamamen yeni seçenekler atamak istiyorsanız
        <code class="directive">IndexOptions</code> yönergesinde seçenekleri
        <code>+</code> veya <code>-</code> öneklerini kullanmadan
        belirtiniz.</p>
    </dd>
  </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexOrderDefault" id="IndexOrderDefault">IndexOrderDefault</a> <a name="indexorderdefault" id="indexorderdefault">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin içerik listesinin öntanımlı sıralamasını belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>IndexOrderDefault Ascending|Descending
Name|Date|Size|Description</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>IndexOrderDefault Ascending Name</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">IndexOrderDefault</code> yönergesi <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> seçeneğinin
      etkin olduğu durumda işe yarar. Öntanımlı olarak süslü listelemede dizin
      içeriği dosya ismine göre artan sıralamayla listelenir.
      <code class="directive">IndexOrderDefault</code> yönergesi bu öntanımlı
      sıralamanın değiştirilmesini mümkün kılar.</p>

    <p><code class="directive">IndexOrderDefault</code> yönergesi iki değer alır. İlki
      sıralama yönünü belirtmek üzere <code>Ascending</code> (küçükten büyüğe)
      veya <code>Descending</code> (büyükten küçüğe) olmak zorundadır. İkinci
      değer ise birincil sıralama anahtarını belirtmek üzere <code>Name</code>,
      <code>Date</code>, <code>Size</code> ve <code>Description</code>
      sözcüklerinden biri olmalıdır (anlamları sırayla: İsim, Tarih, Boyut,
      Açıklama). İkincil sıralama anahtarı <em>daima</em> artan sıralamayla
      dosya ismidir.</p>

    <p>Dizin listesinin belli bir sırada gösterilmesini zorunlu kılmak için
      yönergeyi <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code> sıralama seçeneği ile birlikte
      belirtebilirsiniz; böylece, istemcinin farklı sıralamalara sahip içerik
      isteğini engellemiş olursunuz.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexStyleSheet" id="IndexStyleSheet">IndexStyleSheet</a> <a name="indexstylesheet" id="indexstylesheet">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin listesine bir biçembent ekler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>IndexStyleSheet <var>url-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">IndexStyleSheet</code> yönergesi dizin listelemesi için
      kullanılacak biçembent dosyasının ismini belirtmek için kullanılır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      IndexStyleSheet "/css/style.css"
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ReadmeName" id="ReadmeName">ReadmeName</a> <a name="readmename" id="readmename">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Dizin listesinin sonuna yerleştirilecek dosyanın ismini
belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ReadmeName <var>dosya-ismi</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">ReadmeName</code> yönergesi dizin listesinin sonuna
      eklenecek dosyanın ismini belirler. <code><em>dosya-ismi</em></code> ile
      listeye dahil edilecek dosyanın ismi listelenen dizine göreli olarak
      belirtilir. Eğer dosya ismi bir bölü çizgisi ile başlıyorsa <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>’a göreli belirtildiği
      varsayılır.</p>

    <div class="example"><h3>1. Örnek</h3><p><code>
      ReadmeName FOOTER.html
    </code></p></div>

    <div class="example"><h3>2. Örnek</h3><p><code>
      ReadmeName /include/FOOTER.html
    </code></p></div>

    <p>Ayrıca bu davranışın daha ayrıntılı ele alındığı <code class="directive"><a href="#headername">HeaderName</a></code> yönergesine de
      bakınız.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                          mod/mod_cache.html                                                                                  100644       0       0       101444 11256641267  11632  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_cache - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_cache</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Content cache keyed to URIs.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_cache.c</td></tr></table>
<h3>Summary</h3>

    <div class="warning">This module should be used with care and
    can be used to circumvent <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> and <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> directives. You 
    should not enable caching for any content to which you wish
    to limit access by client host name, address or environment
    variable.</div>  

    <p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> implements an <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> compliant HTTP
    content cache that can be used to cache either local or proxied content.
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> requires the services of one or more storage
    management modules. Two storage management modules are included in
    the base Apache distribution:</p>
    <dl>
    <dt><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></dt>
    <dd>implements a disk based storage manager.</dd>

    <dt><code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code></dt>
    <dd>implements a memory based storage manager. 
    <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> can be configured to operate in two
    modes: caching open file descriptors or caching objects in heap storage.
    <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> can be used to cache locally generated content
    or to cache backend server content for <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> when
    configured using <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
    (aka <dfn>reverse proxy</dfn>)</dd>
    </dl>

    <p>Content is stored in and retrieved from the cache using URI based keys. Content with
    access protection is not cached.</p>
    <p>Further details, discussion, and examples, are provided in the
    <a href="../caching.html">Caching Guide</a>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachedefaultexpire">CacheDefaultExpire</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachedisable">CacheDisable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheenable">CacheEnable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheignoreheaders">CacheIgnoreHeaders</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheignorequerystring">CacheIgnoreQueryString</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachemaxexpire">CacheMaxExpire</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachestorenostore">CacheStoreNoStore</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachestoreprivate">CacheStorePrivate</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#related">Related Modules and Directives</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sampleconf">Sample Configuration</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../caching.html">Caching Guide</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">Related Modules and Directives</a></h2>
    <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></li><li><code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_disk_cache.html#cacheroot">CacheRoot</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cacheminfilesize">CacheMinFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachemaxfilesize">CacheMaxFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachesize">MCacheSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxobjectcount">MCacheMaxObjectCount</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcacheminobjectsize">MCacheMinObjectSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxobjectsize">MCacheMaxObjectSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxstreamingbuffer">MCacheMaxStreamingBuffer</a></code></li></ul></td></tr></table>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="sampleconf" id="sampleconf">Sample Configuration</a></h2>
    <div class="example"><h3>Sample httpd.conf</h3><p><code>
      #<br />
      # Sample Cache Configuration<br />
      #<br />
      LoadModule cache_module modules/mod_cache.so<br />
      <br />
      &lt;IfModule mod_cache.c&gt;<br />
      <span class="indent">
        #LoadModule disk_cache_module modules/mod_disk_cache.so<br />
        # If you want to use mod_disk_cache instead of mod_mem_cache,<br />
        # uncomment the line above and comment out the LoadModule line below.<br />
        &lt;IfModule mod_disk_cache.c&gt;<br />
        <span class="indent">
          CacheRoot c:/cacheroot<br />
          CacheEnable disk  /<br />
          CacheDirLevels 5<br />
          CacheDirLength 3<br />
        </span>
        &lt;/IfModule&gt; <br />
        <br />
        LoadModule mem_cache_module modules/mod_mem_cache.so<br />
        &lt;IfModule mod_mem_cache.c&gt;<br />
        <span class="indent">
          CacheEnable mem  /<br />
          MCacheSize 4096<br />
          MCacheMaxObjectCount 100<br />
          MCacheMinObjectSize 1<br />
          MCacheMaxObjectSize 2048<br />
        </span>
        &lt;/IfModule&gt;<br />
        <br />
        # When acting as a proxy, don't cache the list of security updates<br />
        CacheDisable http://security.update.server/update-list/<br />
      </span>
      &lt;/IfModule&gt;
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheDefaultExpire" id="CacheDefaultExpire">CacheDefaultExpire</a> <a name="cachedefaultexpire" id="cachedefaultexpire">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The default duration to cache a document when no expiry date is specified.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDefaultExpire <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDefaultExpire 3600 (one hour)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>The <code class="directive">CacheDefaultExpire</code> directive specifies a default time,
    in seconds, to cache a document if neither an expiry date nor last-modified date are provided
    with the document. The value specified with the <code class="directive">CacheMaxExpire</code>
    directive does <em>not</em> override this setting.</p>

    <div class="example"><p><code>
      CacheDefaultExpire 86400
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheDisable" id="CacheDisable">CacheDisable</a> <a name="cachedisable" id="cachedisable">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Disable caching of specified URLs</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDisable <var> url-string</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>The <code class="directive">CacheDisable</code> directive instructs
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to <em>not</em> cache urls at or below
    <var>url-string</var>.</p>

    <div class="example"><h3>Example</h3><p><code>
      CacheDisable /local_files
    </code></p></div>

    <p> The <code>no-cache</code> environment variable can be set to 
    disable caching on a finer grained set of resources in versions
    2.2.12 and later.</p>


<h3>See also</h3>
<ul>
<li><a href="../env.html">Environment Variables in Apache</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheEnable" id="CacheEnable">CacheEnable</a> <a name="cacheenable" id="cacheenable">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable caching of specified URLs using a specified storage
manager</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheEnable <var>cache_type</var> <var>url-string</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>The <code class="directive">CacheEnable</code> directive instructs
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to cache urls at or below
    <var>url-string</var>. The cache storage manager is specified with the
    <var>cache_type</var> argument. <var>cache_type</var> <code> mem</code>
    instructs <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the memory based storage
    manager implemented by <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code>. 
    <var>cache_type</var> <code>disk</code> instructs
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the disk based storage manager
    implemented by <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>.
    <var>cache_type</var> <code>fd</code> instructs
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the file descriptor cache implemented
    by <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code>.</p>
    <p>In the event that the URL space overlaps between different
    <code class="directive">CacheEnable</code> directives (as in the example below),
    each possible storage manager will be run until the first one that
    actually processes the request. The order in which the storage managers are
    run is determined by the order of the <code class="directive">CacheEnable</code>
    directives in the configuration file.</p>

    <div class="example"><p><code>
      CacheEnable  mem   /manual<br />
      CacheEnable  fd    /images<br />
      CacheEnable  disk  /<br />
    </code></p></div>

    <p>When acting as a forward proxy server, <var>url-string</var> can
    also be used to specify remote sites and proxy protocols which 
    caching should be enabled for.</p>
 
    <div class="example"><p><code>
      # Cache proxied url's<br />
      CacheEnable  disk  /<br /><br />
      # Cache FTP-proxied url's<br />
      CacheEnable  disk  ftp://<br /><br />
      # Cache content from www.apache.org<br />
      CacheEnable  disk  http://www.apache.org/<br />
    </code></p></div>

    <p> The <code>no-cache</code> environment variable can be set to 
    disable caching on a finer grained set of resources in versions
    2.2.12 and later.</p>


<h3>See also</h3>
<ul>
<li><a href="../env.html">Environment Variables in Apache</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheIgnoreCacheControl" id="CacheIgnoreCacheControl">CacheIgnoreCacheControl</a> <a name="cacheignorecachecontrol" id="cacheignorecachecontrol">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore request to not serve cached content to client</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreCacheControl On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreCacheControl Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>Ordinarily, requests containing a Cache-Control: no-cache or
    Pragma: no-cache header value will not be served from the cache.  The
    <code class="directive">CacheIgnoreCacheControl</code> directive allows this
    behavior to be overridden.  <code class="directive">CacheIgnoreCacheControl</code>
    On tells the server to attempt to serve the resource from the cache even
    if the request contains no-cache header values.  Resources requiring
    authorization will <em>never</em> be cached.</p>

    <div class="example"><p><code>
      CacheIgnoreCacheControl On
    </code></p></div>

    <div class="warning"><h3>Warning:</h3>
       This directive will allow serving from the cache even if the client has
       requested that the document not be served from the cache.  This might
       result in stale content being served.
    </div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
<li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheIgnoreHeaders" id="CacheIgnoreHeaders">CacheIgnoreHeaders</a> <a name="cacheignoreheaders" id="cacheignoreheaders">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Do not store the given HTTP header(s) in the cache.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreHeaders <var>header-string</var> [<var>header-string</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreHeaders None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>According to RFC 2616, hop-by-hop HTTP headers are not stored in
    the cache.  The following HTTP headers are hop-by-hop headers and thus
    do not get stored in the cache in <em>any</em> case regardless of the
    setting of <code class="directive">CacheIgnoreHeaders</code>:</p>

    <ul>
      <li><code>Connection</code></li>
      <li><code>Keep-Alive</code></li>
      <li><code>Proxy-Authenticate</code></li>
      <li><code>Proxy-Authorization</code></li>
      <li><code>TE</code></li>
      <li><code>Trailers</code></li>
      <li><code>Transfer-Encoding</code></li>
      <li><code>Upgrade</code></li>
    </ul>

    <p><code class="directive">CacheIgnoreHeaders</code> specifies additional HTTP
    headers that should not to be stored in the cache.  For example, it makes
    sense in some cases to prevent cookies from being stored in the cache.</p>

    <p><code class="directive">CacheIgnoreHeaders</code> takes a space separated list
    of HTTP headers that should not be stored in the cache. If only hop-by-hop
    headers not should be stored in the cache (the RFC 2616 compliant
    behaviour), <code class="directive">CacheIgnoreHeaders</code> can be set to
    <code>None</code>.</p>

    <div class="example"><h3>Example 1</h3><p><code>
      CacheIgnoreHeaders Set-Cookie
    </code></p></div>

    <div class="example"><h3>Example 2</h3><p><code>
      CacheIgnoreHeaders None
    </code></p></div>

    <div class="warning"><h3>Warning:</h3>
      If headers like <code>Expires</code> which are needed for proper cache
      management are not stored due to a
      <code class="directive">CacheIgnoreHeaders</code> setting, the behaviour of
      mod_cache is undefined.
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheIgnoreNoLastMod" id="CacheIgnoreNoLastMod">CacheIgnoreNoLastMod</a> <a name="cacheignorenolastmod" id="cacheignorenolastmod">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore the fact that a response has no Last Modified
header.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreNoLastMod On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreNoLastMod Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>Ordinarily, documents without a last-modified date are not cached.
    Under some circumstances the last-modified date is removed (during
    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> processing for example) or not provided
    at all. The <code class="directive">CacheIgnoreNoLastMod</code> directive
    provides a way to specify that documents without last-modified dates
    should be considered for caching, even without a last-modified date.
    If neither a last-modified date nor an expiry date are provided with
    the document then the value specified by the
    <code class="directive">CacheDefaultExpire</code> directive will be used to
    generate an expiration date.</p>

    <div class="example"><p><code>
      CacheIgnoreNoLastMod On
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheIgnoreQueryString" id="CacheIgnoreQueryString">CacheIgnoreQueryString</a> <a name="cacheignorequerystring" id="cacheignorequerystring">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore query string when caching</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreQueryString On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreQueryString Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.6 and later</td></tr>
</table>
    <p>Ordinarily, requests with query string parameters are cached separately
    for each unique query string. This is according to RFC 2616/13.9 done only
    if an expiration time is specified. The 
    <code class="directive">CacheIgnoreQueryString</code> directive tells the cache to
    cache requests even if no expiration time is specified, and to reply with 
    a cached reply even if the query string differs. From a caching point of
    view the request is treated as if having no query string when this 
    directive is enabled.</p>

    <div class="example"><p><code>
      CacheIgnoreQueryString On
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheIgnoreURLSessionIdentifiers" id="CacheIgnoreURLSessionIdentifiers">CacheIgnoreURLSessionIdentifiers</a> <a name="cacheignoreurlsessionidentifiers" id="cacheignoreurlsessionidentifiers">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore defined session identifiers encoded in the URL when caching
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreURLSessionIdentifiers <var>identifier</var> [<var>identifier</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreURLSessionIdentifiers None</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>Sometimes applications encode the session identifier into the URL like in the following
    Examples:
    </p>
    <ul>
      <li><code>/someapplication/image.gif;jsessionid=123456789</code></li>
      <li><code>/someapplication/image.gif?PHPSESSIONID=12345678</code></li>
    </ul>
    <p>This causes cachable resources to be stored separately for each session, which
    is often not desired. <code class="directive">CacheIgnoreURLSessionIdentifiers</code> lets
    define a list of identifiers that are removed from the key that is used to identify
    an entity in the cache, such that cachable resources are not stored separately for
    each session.
    </p>
    <p><code>CacheIgnoreURLSessionIdentifiers None</code> clears the list of ignored
    identifiers. Otherwise, each identifier is added to the list.</p>

    <div class="example"><h3>Example 1</h3><p><code>
      CacheIgnoreURLSessionIdentifiers jsessionid
    </code></p></div>

    <div class="example"><h3>Example 2</h3><p><code>
      CacheIgnoreURLSessionIdentifiers None
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheLastModifiedFactor" id="CacheLastModifiedFactor">CacheLastModifiedFactor</a> <a name="cachelastmodifiedfactor" id="cachelastmodifiedfactor">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The factor used to compute an expiry date based on the
LastModified date.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheLastModifiedFactor <var>float</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheLastModifiedFactor 0.1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>In the event that a document does not provide an expiry date but does
    provide a last-modified date, an expiry date can be calculated based on
    the time since the document was last modified. The
    <code class="directive">CacheLastModifiedFactor</code> directive specifies a
    <var>factor</var> to be used in the generation of this expiry date
    according to the following formula:

    <code>expiry-period = time-since-last-modified-date * <var>factor</var>
    expiry-date = current-date + expiry-period</code>

    For example, if the document was last modified 10 hours ago, and
    <var>factor</var> is 0.1 then the expiry-period will be set to
    10*0.1 = 1 hour. If the current time was 3:00pm then the computed
    expiry-date would be 3:00pm + 1hour = 4:00pm.

    If the expiry-period would be longer than that set by
    <code class="directive">CacheMaxExpire</code>, then the latter takes
    precedence.</p>

    <div class="example"><p><code>
      CacheLastModifiedFactor 0.5
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheMaxExpire" id="CacheMaxExpire">CacheMaxExpire</a> <a name="cachemaxexpire" id="cachemaxexpire">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum time in seconds to cache a document</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMaxExpire <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMaxExpire 86400 (one day)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>The <code class="directive">CacheMaxExpire</code> directive specifies the maximum number of
    seconds for which cachable HTTP documents will be retained without checking the origin
    server. Thus, documents will be out of date at most this number of seconds. This maximum
    value is enforced even if an expiry date was supplied with the document.</p>

    <div class="example"><p><code>
      CacheMaxExpire 604800
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheStoreNoStore" id="CacheStoreNoStore">CacheStoreNoStore</a> <a name="cachestorenostore" id="cachestorenostore">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Attempt to cache requests or responses that have been marked as no-store.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheStoreNoStore On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheStoreNoStore Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>Ordinarily, requests or responses with Cache-Control: no-store header
       values will not be stored in the cache.  The
       <code class="directive">CacheStoreNoCache</code> directive allows this
       behavior to be overridden.  <code class="directive">CacheStoreNoCache</code> On
       tells the server to attempt to cache the resource even if it contains
       no-store header values.  Resources requiring authorization will
       <em>never</em> be cached.</p>

    <div class="example"><p><code>
      CacheStoreNoStore On
    </code></p></div>

    <div class="warning"><h3>Warning:</h3>
       As described in RFC 2616, the no-store directive is intended to
       "prevent the inadvertent release or retention of sensitive information
       (for example, on backup tapes)."  Enabling this option could store
       sensitive information in the cache.  You are hereby warned.
    </div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
<li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheStorePrivate" id="CacheStorePrivate">CacheStorePrivate</a> <a name="cachestoreprivate" id="cachestoreprivate">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Attempt to cache responses that the server has marked as private</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheStorePrivate On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheStorePrivate Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
</table>
    <p>Ordinarily, responses with Cache-Control: private header values will not
       be stored in the cache.  The <code class="directive">CacheStorePrivate</code>
       directive allows this behavior to be overridden.
       <code class="directive">CacheStorePrivate</code> On
       tells the server to attempt to cache the resource even if it contains
       private header values.  Resources requiring authorization will
       <em>never</em> be cached.</p>

    <div class="example"><p><code>
      CacheStorePrivate On
    </code></p></div>

    <div class="warning"><h3>Warning:</h3>
       This directive will allow caching even if the upstream server has
       requested that the resource not be cached.  This directive is only
       ideal for a 'private' cache.
    </div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
<li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                            mod/mod_cern_meta.html                                                                              100644       0       0        16652 11256641267  12512  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_cern_meta - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_cern_meta</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>CERN httpd metafile semantics</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>cern_meta_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_cern_meta.c</td></tr></table>
<h3>Summary</h3>

    <p>Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP
    headers that can be output in addition to the normal range of
    headers for each file accessed. They appear rather like the
    Apache .asis files, and are able to provide a crude way of
    influencing the Expires: header, as well as providing other
    curiosities. There are many ways to manage meta information,
    this one was chosen because there is already a large number of
    CERN users who can exploit this module.</p>

    <p>More information on the <a href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir">CERN metafile semantics</a> is available.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#metadir">MetaDir</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#metafiles">MetaFiles</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#metasuffix">MetaSuffix</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></li>
<li><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MetaDir" id="MetaDir">MetaDir</a> <a name="metadir" id="metadir">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Name of the directory to find CERN-style meta information
files</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MetaDir <var>directory</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MetaDir .web</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cern_meta</td></tr>
</table>
    <p>Specifies the name of the directory in which Apache can find
    meta information files. The directory is usually a 'hidden'
    subdirectory of the directory that contains the file being
    accessed. Set to "<code>.</code>" to look in the same directory
    as the file:</p>

    <div class="example"><p><code>MetaDir .</code></p></div>

    <p>Or, to set it to a subdirectory of the directory containing the
    files:</p>

    <div class="example"><p><code>MetaDir .meta</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MetaFiles" id="MetaFiles">MetaFiles</a> <a name="metafiles" id="metafiles">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activates CERN meta-file processing</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MetaFiles on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MetaFiles off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cern_meta</td></tr>
</table>
    <p>Turns on/off Meta file processing on a per-directory basis.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MetaSuffix" id="MetaSuffix">MetaSuffix</a> <a name="metasuffix" id="metasuffix">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File name suffix for the file containg CERN-style
meta information</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MetaSuffix <var>suffix</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MetaSuffix .meta</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cern_meta</td></tr>
</table>
    <p>Specifies the file name suffix for the file containing the
    meta information. For example, the default values for the two
    directives will cause a request to
    <code>DOCUMENT_ROOT/somedir/index.html</code> to look in
    <code>DOCUMENT_ROOT/somedir/.web/index.html.meta</code> and
    will use its contents to generate additional MIME header
    information.</p>

    <div class="example"><h3>Example:</h3><p><code>
      MetaSuffix .meta
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                      mod/mod_cgi.html                                                                                    100644       0       0        33040 11256641267  11305  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_cgi - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_cgi</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Execution of CGI scripts</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>cgi_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_cgi.c</td></tr></table>
<h3>Summary</h3>

    

    <p>Any file that has the handler
    <code>cgi-script</code> will be treated
    as a CGI script, and run by the server, with its output being
    returned to the client. Files acquire this handler either by
    having a name containing an extension defined by the
    <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> directive, or by being
    in a <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
    directory.</p>

    <p>For an introduction to using CGI scripts with Apache, see
    our tutorial on <a href="../howto/cgi.html">Dynamic Content
    With CGI</a>.</p>

    <p>When using a multi-threaded MPM under unix, the module
    <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> should be used in place of
    this module. At the user level, the two modules are essentially
    identical.</p>
    
    <p>For backward-compatibility, the cgi-script handler will also be activated
    for any file with the mime-type <code>application/x-httpd-cgi</code>. The
    use of the magic mime-type is deprecated.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#scriptlog">ScriptLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptlogbuffer">ScriptLogBuffer</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptloglength">ScriptLogLength</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#env">CGI Environment variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgi-debug">CGI Debugging</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
<li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li>
<li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li>
<li><a href="../suexec.html">Running CGI programs under different
    user IDs</a></li>
<li><a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI Specification</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="env" id="env">CGI Environment variables</a></h2>
    <p>The server will set the CGI environment variables as described
    in the <a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI
    specification</a>, with the following provisions:</p>

    <dl>
      <dt>PATH_INFO</dt>

      <dd>This will not be available if the <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> directive is explicitly set to
      <code>off</code>.  The default behavior, if <code class="directive">AcceptPathInfo</code> is not given, is that <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> will accept path info (trailing <code>
      /more/path/info</code> following the script filename in the URI),
      while the core server will return a 404 NOT FOUND error for requests
      with additional path info. Omitting the <code class="directive">AcceptPathInfo</code> directive has the same effect as setting
      it <code>On</code> for <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> requests.</dd>

      <dt>REMOTE_HOST</dt>

      <dd>This will only be set if <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> is set to <code>on</code> (it
      is off by default), and if a reverse DNS lookup of the accessing
      host's address indeed finds a host name.</dd>

      <dt>REMOTE_IDENT</dt>

      <dd>This will only be set if <code class="directive"><a href="../mod/core.html#identitycheck">IdentityCheck</a></code> is set to
      <code>on</code> and the accessing host supports the ident
      protocol. Note that the contents of this variable cannot be
      relied upon because it can easily be faked, and if there is a
      proxy between the client and the server, it is usually
      totally useless.</dd>

      <dt>REMOTE_USER</dt>

      <dd>This will only be set if the CGI script is subject to
      authentication.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi-debug" id="cgi-debug">CGI Debugging</a></h2>
    <p>Debugging CGI scripts has traditionally been difficult, mainly
    because it has not been possible to study the output (standard
    output and error) for scripts which are failing to run
    properly. These directives, included in Apache 1.2 and later,
    provide more detailed logging of errors when they occur.</p>

    <h3>CGI Logfile Format</h3>
      <p>When configured, the CGI error log logs any CGI which does not
      execute properly. Each CGI script which fails to operate causes
      several lines of information to be logged. The first two lines
      are always of the format:</p>

      <div class="example"><p><code>
        %% [<var>time</var>] <var>request-line</var><br />
        %% <var>HTTP-status</var> <var>CGI-script-filename</var>
      </code></p></div>

      <p>If the error is that CGI script cannot be run, the log file
      will contain an extra two lines:</p>

      <div class="example"><p><code>
        %%error<br />
        <var>error-message</var>
      </code></p></div>

      <p>Alternatively, if the error is the result of the script
      returning incorrect header information (often due to a bug in
      the script), the following information is logged:</p>

      <div class="example"><p><code>
        %request<br />
        <var>All HTTP request headers received</var><br />
        <var>POST or PUT entity (if any)</var><br />
        %response<br />
        <var>All headers output by the CGI script</var><br />
        %stdout<br />
        <var>CGI standard output</var><br />
        %stderr<br />
        <var>CGI standard error</var><br />
      </code></p></div>

      <p>(The %stdout and %stderr parts may be missing if the script did
      not output anything on standard output or standard error).</p>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptLog" id="ScriptLog">ScriptLog</a> <a name="scriptlog" id="scriptlog">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Location of the CGI script error logfile</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLog <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
</table>
    <p>The <code class="directive">ScriptLog</code> directive sets the CGI
    script error logfile. If no <code class="directive">ScriptLog</code> is given,
    no error log is created. If given, any CGI errors are logged into the
    filename given as argument. If this is a relative file or path it is
    taken relative to the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.
    </p>

    <div class="example"><h3>Example</h3><p><code>
      ScriptLog logs/cgi_log
    </code></p></div>

    <p>This log will be opened as the user the child processes run
    as, <em>i.e.</em> the user specified in the main <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> directive. This means that
    either the directory the script log is in needs to be writable
    by that user or the file needs to be manually created and set
    to be writable by that user. If you place the script log in
    your main logs directory, do <strong>NOT</strong> change the
    directory permissions to make it writable by the user the child
    processes run as.</p>

    <p>Note that script logging is meant to be a debugging feature
    when writing CGI scripts, and is not meant to be activated
    continuously on running servers. It is not optimized for speed
    or efficiency, and may have security problems if used in a
    manner other than that for which it was designed.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptLogBuffer" id="ScriptLogBuffer">ScriptLogBuffer</a> <a name="scriptlogbuffer" id="scriptlogbuffer">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum amount of PUT or POST requests that will be recorded
in the scriptlog</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLogBuffer <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScriptLogBuffer 1024</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
</table>
    <p>The size of any PUT or POST entity body that is logged to
    the file is limited, to prevent the log file growing too big
    too quickly if large bodies are being received. By default, up
    to 1024 bytes are logged, but this can be changed with this
    directive.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptLogLength" id="ScriptLogLength">ScriptLogLength</a> <a name="scriptloglength" id="scriptloglength">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Size limit of the CGI script logfile</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLogLength <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScriptLogLength 10385760</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
</table>
    <p><code class="directive">ScriptLogLength</code> can be used to limit the
    size of the CGI script logfile. Since the logfile logs a lot of
    information per CGI error (all request headers, all script output)
    it can grow to be a big file. To prevent problems due to unbounded
    growth, this directive can be used to set an maximum file-size for
    the CGI logfile. If the file exceeds this size, no more
    information will be written to it.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                mod/mod_cgid.html                                                                                   100644       0       0        14005 11256641267  11451  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_cgid - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_cgid</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Execution of CGI scripts using an
    external CGI daemon</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>cgid_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_cgid.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Unix threaded MPMs only</td></tr></table>
<h3>Summary</h3>

    <p>Except for the optimizations and the additional <code class="directive"><a href="#scriptsock">ScriptSock</a></code> directive noted below,
    <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> behaves similarly to <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>.
    <strong>See the <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> summary for additional details
    about Apache and CGI.</strong></p>

    <p>On certain unix operating systems, forking a process from a
    multi-threaded server is a very expensive operation because the
    new process will replicate all the threads of the parent
    process. In order to avoid incurring this expense on each CGI
    invocation, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> creates an external daemon that is
    responsible for forking child processes to run CGI scripts. The
    main server communicates with this daemon using a unix domain
    socket.</p>

    <p>This module is used by default instead of
    <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> whenever a multi-threaded MPM
    is selected during the compilation process. At the user level,
    this module is identical in configuration and operation to
    <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>. The only exception is the
    additional directive <code>ScriptSock</code> which gives the
    name of the socket to use for communication with the cgi
    daemon.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mod_cgi.html#scriptlog">ScriptLog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mod_cgi.html#scriptloglength">ScriptLogLength</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scriptsock">ScriptSock</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li>
<li><a href="../suexec.html">Running CGI programs under different
    user IDs</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScriptSock" id="ScriptSock">ScriptSock</a> <a name="scriptsock" id="scriptsock">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The filename prefix of the socket to use for communication with
the cgi daemon</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptSock <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScriptSock logs/cgisock</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cgid</td></tr>
</table>
    <p>This directive sets the filename prefix of the socket to use for
    communication with the CGI daemon, an extension corresponding to
    the process ID of the server will be appended. The socket will be opened
    using the permissions of the user who starts Apache (usually
    root). To maintain the security of communications with CGI
    scripts, it is important that no other user has permission to
    write in the directory where the socket is located.</p>

    <div class="example"><h3>Example</h3><p><code>
      ScriptSock /var/run/cgid.sock
    </code></p></div>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           mod/mod_charset_lite.html                                                                           100644       0       0        27371 11256641267  13223  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_charset_lite - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_charset_lite</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Specify character set translation or recoding</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>charset_lite_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_charset_lite.c</td></tr></table>
<h3>Summary</h3>

    <p><code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> allows the server to change
    the character set of responses before sending them to the client.
    In an EBCDIC environment, Apache always translates HTTP protocol
    content (e.g. response headers) from the code page of the Apache
    process locale to ISO-8859-1, but not the body of responses.  In
    any environment, <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> can be used to
    specify that response bodies should be translated.  For example,
    if files are stored in EBCDIC, then
    <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> can translate them to
    ISO-8859-1 before sending them to the client.</p>

    <p>This module provides a small subset of configuration
    mechanisms implemented by Russian Apache and its associated
    <code>mod_charset</code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#charsetdefault">CharsetDefault</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#charsetoptions">CharsetOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#charsetsourceenc">CharsetSourceEnc</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#problems">Common Problems</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="problems" id="problems">Common Problems</a></h2>

    <h3>Invalid character set names</h3>

      <p>The character set name parameters of <code class="directive"><a href="#charsetsourceenc">CharsetSourceEnc</a></code> and
      <code class="directive"><a href="#charsetdefault">CharsetDefault</a></code>
      must be acceptable to the translation mechanism used by
      <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> on the system where
      <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> is deployed.  These character
      set names are not standardized and are usually not the same as
      the corresponding values used in http headers.  Currently, APR
      can only use iconv(3), so you can easily test your character set
      names using the iconv(1) program, as follows:</p>

      <div class="example"><p><code>
        iconv -f charsetsourceenc-value -t charsetdefault-value
      </code></p></div>
    

    <h3>Mismatch between character set of content and translation
    rules</h3>

      <p>If the translation rules don't make sense for the content,
      translation can fail in various ways, including:</p>

      <ul>
      <li>The translation mechanism may return a bad return code,
      and the connection will be aborted.</li>

      <li>The translation mechanism may silently place special
      characters (e.g., question marks) in the output buffer when
      it cannot translate the input buffer.</li>
      </ul>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CharsetDefault" id="CharsetDefault">CharsetDefault</a> <a name="charsetdefault" id="charsetdefault">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Charset to translate into</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CharsetDefault <var>charset</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_charset_lite</td></tr>
</table>
    <p>The <code class="directive">CharsetDefault</code> directive specifies the
    charset that content in the associated container should be
    translated to.</p>

    <p>The value of the <var>charset</var> argument must be accepted
    as a valid character set name by the character set support in
    <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>. Generally, this means that it must be
    supported by iconv.</p>

    <div class="example"><h3>Example</h3><p><code>
      &lt;Directory /export/home/trawick/apacheinst/htdocs/convert&gt;<br />
      <span class="indent">
        CharsetSourceEnc  UTF-16BE<br />
        CharsetDefault    ISO-8859-1<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CharsetOptions" id="CharsetOptions">CharsetOptions</a> <a name="charsetoptions" id="charsetoptions">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configures charset translation behavior</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CharsetOptions <var>option</var> [<var>option</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CharsetOptions DebugLevel=0 NoImplicitAdd</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_charset_lite</td></tr>
</table>
    <p>The <code class="directive">CharsetOptions</code> directive configures certain
    behaviors of <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code>. <var>Option</var> can
    be one of</p>

    <dl>
      <dt><code>DebugLevel=<var>n</var></code></dt>

      <dd>The <code>DebugLevel</code> keyword allows you to specify
      the level of debug messages generated by
      <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code>. By default, no messages are
      generated. This is equivalent to <code>DebugLevel=0</code>.
      With higher numbers, more debug messages are generated, and
      server performance will be degraded. The actual meanings of
      the numeric values are described with the definitions of the
      DBGLVL_ constants near the beginning of
      <code>mod_charset_lite.c</code>.</dd>

      <dt><code>ImplicitAdd | NoImplicitAdd</code></dt>

      <dd>The <code>ImplicitAdd</code> keyword specifies that
      <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> should implicitly insert its
      filter when the configuration specifies that the character
      set of content should be translated. If the filter chain is
      explicitly configured using the <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code> directive, <code>NoImplicitAdd</code>
      should be specified so that <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code>
      doesn't add its filter.</dd>

      <dt><code>TranslateAllMimeTypes | NoTranslateAllMimeTypes</code></dt>
      <dd>Normally, <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> will only perform
      translation on a small subset of possible mimetypes.  When the
      <code>TranslateAllMimeTypes</code> keyword is specified for a given
      configuration section, translation is performed without regard for
      mimetype.</dd>

    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CharsetSourceEnc" id="CharsetSourceEnc">CharsetSourceEnc</a> <a name="charsetsourceenc" id="charsetsourceenc">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Source charset of files</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CharsetSourceEnc <var>charset</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_charset_lite</td></tr>
</table>
    <p>The <code class="directive">CharsetSourceEnc</code> directive specifies the
    source charset of files in the associated container.</p>

    <p>The value of the <var>charset</var> argument must be accepted
    as a valid character set name by the character set support in
    <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>. Generally, this means that it must be
    supported by iconv.</p>
    
    <div class="example"><h3>Example</h3><p><code>
      &lt;Directory /export/home/trawick/apacheinst/htdocs/convert&gt;<br />
      <span class="indent">
        CharsetSourceEnc  UTF-16BE<br />
        CharsetDefault    ISO-8859-1<br />
      </span>
      &lt;/Directory&gt;
    </code></p></div>

    <p>The character set names in this example work with the iconv
    translation support in Solaris 8.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                       mod/mod_dav.html                                                                                    100644       0       0        35564 11256641267  11332  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_dav - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_dav</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Distributed Authoring and Versioning
(<a href="http://www.webdav.org/">WebDAV</a>) functionality</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>dav_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_dav.c</td></tr></table>
<h3>Summary</h3>

    <p>This module provides class 1 and class 2 <a href="http://www.webdav.org">WebDAV</a> ('Web-based Distributed
    Authoring and Versioning') functionality for Apache. This
    extension to the HTTP protocol allows creating, moving,
    copying, and deleting resources and collections on a remote web
    server.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#dav">Dav</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#davdepthinfinity">DavDepthInfinity</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#davmintimeout">DavMinTimeout</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#example">Enabling WebDAV</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Security Issues</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#complex">Complex Configurations</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/mod_dav_fs.html#davlockdb">DavLockDB</a></code></li>
<li><code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code></li>
<li><a href="http://www.webdav.org">WebDAV Resources</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Enabling WebDAV</a></h2>
    <p>To enable <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>, add the following to a
    container in your <code>httpd.conf</code> file:</p>

    <div class="example"><p><code>Dav On</code></p></div>

    <p>This enables the DAV file system provider, which is implemented
    by the <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> module. Therefore, that module
    must be compiled into the server or loaded at runtime using the
    <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> directive.</p>
    
    <p>In addition, a location for the DAV lock database must be
    specified in the global section of your <code>httpd.conf</code>
    file using the <code class="directive"><a href="../mod/mod_dav_fs.html#davlockdb">DavLockDB</a></code>
    directive:</p>

    <div class="example"><p><code>
      DavLockDB /usr/local/apache2/var/DavLock
    </code></p></div>

    <p>The directory containing the lock database file must be
    writable by the <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>
    and <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> under which
    Apache is running.</p>

    <p>You may wish to add a <code class="directive"><a href="../mod/core.html#limit">&lt;Limit&gt;</a></code> clause inside the <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> directive to limit access to
    DAV-enabled locations. If you want to set the maximum amount of
    bytes that a DAV client can send at one request, you have to use
    the <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code>
    directive. The "normal" <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code> directive has no effect on DAV
    requests.</p>

    <div class="example"><h3>Full Example</h3><p><code>
      DavLockDB /usr/local/apache2/var/DavLock<br />
      <br />
       &lt;Location /foo&gt;<br />
       <span class="indent">
         Order Allow,Deny<br />
         Allow from all<br />
         Dav On<br />
         <br />
         AuthType Basic<br />
         AuthName DAV<br />
         AuthUserFile user.passwd<br />
         <br />
         &lt;LimitExcept GET OPTIONS&gt;<br />
         <span class="indent">
           Require user admin<br />
         </span>
         &lt;/LimitExcept&gt;<br />
       </span>
       &lt;/Location&gt;<br />
    </code></p></div>

   <p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> is a descendent of Greg Stein's <a href="http://www.webdav.org/mod_dav/">mod_dav for Apache 1.3</a>.  More
   information about the module is available from that site.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Security Issues</a></h2>

    <p>Since DAV access methods allow remote clients to manipulate
    files on the server, you must take particular care to assure that
    your server is secure before enabling <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>.</p>

    <p>Any location on the server where DAV is enabled should be
    protected by authentication.  The use of HTTP Basic Authentication
    is not recommended. You should use at least HTTP Digest
    Authentication, which is provided by the
    <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> module. Nearly all WebDAV clients
    support this authentication method. An alternative is Basic
    Authentication over an <a href="../ssl/index.html">SSL</a> enabled
    connection.</p>

    <p>In order for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> to manage files, it must
    be able to write to the directories and files under its control
    using the <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> and
    <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> under which
    Apache is running.  New files created will also be owned by this
    <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> and <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code>.  For this reason, it is
    important to control access to this account.  The DAV repository
    is considered private to Apache; modifying files outside of Apache
    (for example using FTP or filesystem-level tools) should not be
    allowed.</p>

    <p><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> may be subject to various kinds of
    denial-of-service attacks.  The <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> directive can be
    used to limit the amount of memory consumed in parsing large DAV
    requests.  The <code class="directive"><a href="#davdepthinfinity">DavDepthInfinity</a></code> directive can be
    used to prevent <code>PROPFIND</code> requests on a very large
    repository from consuming large amounts of memory.  Another
    possible denial-of-service attack involves a client simply filling
    up all available disk space with many large files.  There is no
    direct way to prevent this in Apache, so you should avoid giving
    DAV access to untrusted users.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="complex" id="complex">Complex Configurations</a></h2>

    <p>One common request is to use <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> to
    manipulate dynamic files (PHP scripts, CGI scripts, etc).  This is
    difficult because a <code>GET</code> request will always run the
    script, rather than downloading its contents.  One way to avoid
    this is to map two different URLs to the content, one of which
    will run the script, and one of which will allow it to be
    downloaded and manipulated with DAV.</p>

<div class="example"><p><code>
Alias /phparea /home/gstein/php_files<br />
Alias /php-source /home/gstein/php_files<br />
&lt;Location /php-source&gt;
<span class="indent">
    DAV On<br />
    ForceType text/plain<br />
</span>
&lt;/Location&gt;
</code></p></div>

    <p>With this setup, <code>http://example.com/phparea</code> can be
    used to access the output of the PHP scripts, and
    <code>http://example.com/php-source</code> can be used with a DAV
    client to manipulate them.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Dav" id="Dav">Dav</a> <a name="dav" id="dav">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable WebDAV HTTP methods</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Dav On|Off|<var>provider-name</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Dav Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dav</td></tr>
</table>
    <p>Use the <code class="directive">Dav</code> directive to enable the
    WebDAV HTTP methods for the given container:</p>

    <div class="example"><p><code>
      &lt;Location /foo&gt;<br />
      <span class="indent">
        Dav On<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>The value <code>On</code> is actually an alias for the default
    provider <code>filesystem</code> which is served by the <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> module. Note, that once you have DAV enabled
    for some location, it <em>cannot</em> be disabled for sublocations.
    For a complete configuration example have a look at the <a href="#example">section above</a>.</p>

    <div class="warning">
      Do not enable WebDAV until you have secured your server. Otherwise
      everyone will be able to distribute files on your system.
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavDepthInfinity" id="DavDepthInfinity">DavDepthInfinity</a> <a name="davdepthinfinity" id="davdepthinfinity">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Allow PROPFIND, Depth: Infinity requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DavDepthInfinity on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DavDepthInfinity off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dav</td></tr>
</table>
    <p>Use the <code class="directive">DavDepthInfinity</code> directive to
    allow the processing of <code>PROPFIND</code> requests containing the
    header 'Depth: Infinity'. Because this type of request could constitute
    a denial-of-service attack, by default it is not allowed.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavMinTimeout" id="DavMinTimeout">DavMinTimeout</a> <a name="davmintimeout" id="davmintimeout">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Minimum amount of time the server holds a lock on
a DAV resource</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DavMinTimeout <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DavMinTimeout 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dav</td></tr>
</table>
    <p>When a client requests a DAV resource lock, it can also
    specify a time when the lock will be automatically removed by
    the server. This value is only a request, and the server can
    ignore it or inform the client of an arbitrary value.</p>

    <p>Use the <code class="directive">DavMinTimeout</code> directive to specify, in
    seconds, the minimum lock timeout to return to a client.
    Microsoft Web Folders defaults to a timeout of 120 seconds; the
    <code class="directive">DavMinTimeout</code> can override this to a higher value
    (like 600 seconds) to reduce the chance of the client losing
    the lock due to network latency.</p>

    <div class="example"><h3>Example</h3><p><code>
      &lt;Location /MSWord&gt;<br />
      <span class="indent">
        DavMinTimeout 600<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                            mod/mod_dav_fs.html                                                                                 100644       0       0        12647 11256641267  12017  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_dav_fs - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_dav_fs</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>filesystem provider for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>dav_fs_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_dav_fs.c</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>. It acts as a support module for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> and provides access to resources located in the
    server's file system. The formal name of this provider is
    <code>filesystem</code>. <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> backend providers
    will be invoked by using the <code class="directive"><a href="../mod/mod_dav.html#dav">Dav</a></code>
    directive:</p>

    <div class="example"><h3>Example</h3><p><code>
      Dav filesystem
    </code></p></div>

    <p>Since <code>filesystem</code> is the default provider for
    <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>, you may simply use the value
    <code>On</code> instead.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#davlockdb">DavLockDB</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavLockDB" id="DavLockDB">DavLockDB</a> <a name="davlockdb" id="davlockdb">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Location of the DAV lock database</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DavLockDB <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dav_fs</td></tr>
</table>
    <p>Use the <code class="directive">DavLockDB</code> directive to specify
    the full path to the lock database, excluding an extension. If
    the path is not absolute, it will be taken relative to <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>. The implementation of
    <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> uses a SDBM database to track user
    locks.</p>

    

    <div class="example"><h3>Example</h3><p><code>
      DavLockDB var/DavLock
    </code></p></div>

    <p>The directory containing the lock database file must be
    writable by the <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>
    and <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> under which
    Apache is running.  For security reasons, you should create a
    directory for this purpose rather than changing the permissions on
    an existing directory.  In the above example, Apache will create
    files in the <code>var/</code> directory under the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> with the base filename
    <code>DavLock</code> and extension name chosen by the server.</p>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                         mod/mod_dav_lock.html                                                                               100644       0       0        14266 11256641267  12336  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_dav_lock - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_dav_lock</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>generic locking module for <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>dav_lock_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_dav_lock.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module implements a generic locking API which can be used by any
    backend provider of <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>. It <em>requires</em> at least
    the service of <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>. But without a backend provider
    which makes use of it, it's useless and should not be loaded into the
    server. A sample backend module which actually utilizes
    <code class="module"><a href="../mod/mod_dav_lock.html">mod_dav_lock</a></code> is <a href="http://subversion.tigris.org/">mod_dav_svn</a>, the subversion provider module.</p>

    <p>Note that <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> does <em>not</em> need this
    generic locking module, because it uses its own more specialized
    version.</p>

    <p>In order to make <code class="module"><a href="../mod/mod_dav_lock.html">mod_dav_lock</a></code> functional, you just have
    to specify the location of the lock database using the <code class="directive"><a href="#davgenericlockdb">DavGenericLockDB</a></code> directive described
    below.</p>

    <div class="note"><h3>Developer's Note</h3>
      <p>In order to retrieve the pointer to the locking provider function, you
      have to use the <code>ap_lookup_provider</code> API with the arguments
      <code>dav-lock</code>, <code>generic</code>, and <code>0</code>.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#davgenericlockdb">DavGenericLockDB</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DavGenericLockDB" id="DavGenericLockDB">DavGenericLockDB</a> <a name="davgenericlockdb" id="davgenericlockdb">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Location of the DAV lock database</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DavGenericLockDB <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dav_lock</td></tr>
</table>
    <p>Use the <code class="directive">DavGenericLockDB</code> directive to specify
    the full path to the lock database, excluding an extension. If
    the path is not absolute, it will be interpreted relative to <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>. The implementation of
    <code class="module"><a href="../mod/mod_dav_lock.html">mod_dav_lock</a></code> uses a SDBM database to track user
    locks.</p>

    <div class="example"><h3>Example</h3><p><code>
      DavGenericLockDB var/DavLock
    </code></p></div>

    <p>The directory containing the lock database file must be
    writable by the <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>
    and <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> under which
    Apache is running.  For security reasons, you should create a
    directory for this purpose rather than changing the permissions on
    an existing directory.  In the above example, Apache will create
    files in the <code>var/</code> directory under the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> with the base filename
    <code>DavLock</code> and an extension added by the server.</p>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                          mod/mod_dbd.html                                                                                    100644       0       0        45352 11256641267  11305  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_dbd - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_dbd</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Manages SQL database connections</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>dbd_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_dbd.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p><code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code> manages SQL database connections using
    <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>.  It provides database connections on request
    to modules requiring SQL database functions, and takes care of
    managing databases with optimal efficiency and scalability
    for both threaded and non-threaded MPMs.  For details, see the
    <a href="http://apr.apache.org/">APR</a> website and this overview of the
    <a href="http://people.apache.org/~niq/dbd.html">Apache DBD Framework</a>
    by its original developer.
</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#dbdexptime">DBDExptime</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdkeep">DBDKeep</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdmax">DBDMax</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdmin">DBDMin</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdparams">DBDParams</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdpersist">DBDPersist</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdpreparesql">DBDPrepareSQL</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dbdriver">DBDriver</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#pooling">Connection Pooling</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#API">Apache DBD API</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#prepared">SQL Prepared Statements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">SECURITY WARNING</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../misc/password_encryptions.html">Password Formats</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="pooling" id="pooling">Connection Pooling</a></h2>
    <p>This module manages database connections, in a manner
    optimised for the platform.  On non-threaded platforms,
    it provides a persistent connection in the manner of
    classic LAMP (Linux, Apache, Mysql, Perl/PHP/Python).
    On threaded platform, it provides an altogether more
    scalable and efficient <em>connection pool</em>, as
    described in <a href="http://www.apachetutor.org/dev/reslist">this
    article at ApacheTutor</a>.  Note that <code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code>
    supersedes the modules presented in that article.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="API" id="API">Apache DBD API</a></h2>
    <p><code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code> exports five functions for other modules
    to use. The API is as follows:</p>

    <div class="example"><pre><code>typedef struct {
    apr_dbd_t *handle;
    apr_dbd_driver_t *driver;
    apr_hash_t *prepared;
} ap_dbd_t;

/* Export functions to access the database */

/* acquire a connection that MUST be explicitly closed.
 * Returns NULL on error
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_open(apr_pool_t*, server_rec*);

/* release a connection acquired with ap_dbd_open */
AP_DECLARE(void) ap_dbd_close(server_rec*, ap_dbd_t*);

/* acquire a connection that will have the lifetime of a request
 * and MUST NOT be explicitly closed.  Return NULL on error.
 * This is the preferred function for most applications.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_acquire(request_rec*);

/* acquire a connection that will have the lifetime of a connection
 * and MUST NOT be explicitly closed.  Return NULL on error.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_cacquire(request_rec*);

/* Prepare a statement for use by a client module */
AP_DECLARE(void) ap_dbd_prepare(server_rec*, const char*, const char*);

/* Also export them as optional functions for modules that prefer it */
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_open, (apr_pool_t*, server_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_close, (server_rec*, ap_dbd_t*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_acquire, (request_rec*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_cacquire, (conn_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_prepare, (server_rec*, const char*, const char*));
</code></pre></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="prepared" id="prepared">SQL Prepared Statements</a></h2>
    <p><code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code> supports SQL prepared statements on behalf
    of modules that may wish to use them.  Each prepared statement
    must be assigned a name (label), and they are stored in a hash:
    the <code>prepared</code> field of an <code>ap_dbd_t</code>.
    Hash entries are of type <code>apr_dbd_prepared_t</code>
    and can be used in any of the apr_dbd prepared statement
    SQL query or select commands.</p>

    <p>It is up to dbd user modules to use the prepared statements
    and document what statements can be specified in httpd.conf,
    or to provide their own directives and use <code>ap_dbd_prepare</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">SECURITY WARNING</a></h2>

    <p>Any web/database application needs to secure itself against SQL
    injection attacks.  In most cases, Apache DBD is safe, because
    applications use prepared statements, and untrusted inputs are
    only ever used as data.  Of course, if you use it via third-party
    modules, you should ascertain what precautions they may require.</p>
    <p>However, the <var>FreeTDS</var> driver is inherently
    <strong>unsafe</strong>.  The underlying library doesn't support
    prepared statements, so the driver emulates them, and the
    untrusted input is merged into the SQL statement.</p>
    <p>It can be made safe by <em>untainting</em> all inputs:
    a process inspired by Perl's taint checking.  Each input
    is matched against a regexp, and only the match is used,
    according to the Perl idiom:</p>
    <div class="example"><pre><code>  $untrusted =~ /([a-z]+)/;
  $trusted = $1;</code></pre></div>
    <p>To use this, the untainting regexps must be included in the
    prepared statements configured.  The regexp follows immediately
    after the % in the prepared statement, and is enclosed in
    curly brackets {}.  For example, if your application expects
    alphanumeric input, you can use:</p>
    <div class="example"><p><code>
       <code>"SELECT foo FROM bar WHERE input = %s"</code>
    </code></p></div>
    <p>with other drivers, and suffer nothing worse than a failed query.
    But with FreeTDS you'd need:</p>
    <div class="example"><p><code>
       <code>"SELECT foo FROM bar WHERE input = %{([A-Za-z0-9]+)}s"</code>
    </code></p></div>
    <p>Now anything that doesn't match the regexp's $1 match is
    discarded, so the statement is safe.</p>
    <p>An alternative to this may be the third-party ODBC driver,
    which offers the security of genuine prepared statements.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDExptime" id="DBDExptime">DBDExptime</a> <a name="dbdexptime" id="dbdexptime">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Keepalive time for idle connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDExptime <var>time-in-seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DBDExptime 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>Set the time to keep idle connections alive when the number
    of connections specified in DBDKeep has been exceeded (threaded
    platforms only).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDKeep" id="DBDKeep">DBDKeep</a> <a name="dbdkeep" id="dbdkeep">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum sustained number of connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDKeep <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DBDKeep 2</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>Set the maximum number of connections per process to be
    sustained, other than for handling peak demand (threaded
    platforms only).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDMax" id="DBDMax">DBDMax</a> <a name="dbdmax" id="dbdmax">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum number of connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDMax <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DBDMax 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>Set the hard maximum number of connections per process
    (threaded platforms only).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDMin" id="DBDMin">DBDMin</a> <a name="dbdmin" id="dbdmin">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Minimum number of connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDMin <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DBDMin 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>Set the minimum number of connections per process (threaded
    platforms only).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDParams" id="DBDParams">DBDParams</a> <a name="dbdparams" id="dbdparams">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Parameters for database connection</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDParams
<var>param1</var>=<var>value1</var>[,<var>param2</var>=<var>value2</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>As required by the underlying driver.  Typically this will be
    used to pass whatever cannot be defaulted amongst username,
    password, database name, hostname and port number for connection.</p>
    <p>Connection string parameters for current drivers include:</p>
    <dl>
    <dt>FreeTDS (for MSSQL and SyBase - see SECURITY note)</dt>
    <dd>username, password, appname, dbname, host, charset, lang, server</dd>
    <dt>MySQL</dt>
    <dd>host, port, user, pass, dbname, sock, flags, fldsz, group, reconnect</dd> 
    <dt>ODBC</dt>
    <dd>datasource, user, password, connect, ctimeout, stimeout, access, txmode, bufsize</dd>
    <dt>Oracle</dt>
    <dd>user, pass, dbname, server</dd> 
    <dt>PostgreSQL</dt>
    <dd>The connection string is passed straight through to <code>PQconnectdb</code></dd>
    <dt>SQLite2</dt>
    <dd>The connection string is split on a colon, and <code>part1:part2</code> is used as <code>sqlite_open(part1, atoi(part2), NULL)</code></dd>
    <dt>SQLite3</dt>
    <dd>The connection string is passed straight through to <code>sqlite3_open</code></dd>
    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDPersist" id="DBDPersist">DBDPersist</a> <a name="dbdpersist" id="dbdpersist">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether to use persistent connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDPersist On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>If set to Off, persistent and pooled connections are disabled.
    A new database connection is opened when requested by a client,
    and closed immediately on release.  This option is for debugging
    and low-usage servers.</p>

    <p>The default is to enable a pool of persistent connections
    (or a single LAMP-style persistent connection in the case of a
    non-threaded server), and should almost always be used in operation.</p>

    <p>Prior to version 2.2.2, this directive accepted only the values
    <code>0</code> and <code>1</code> instead of <code>Off</code> and
    <code>On</code>, respectively.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDPrepareSQL" id="DBDPrepareSQL">DBDPrepareSQL</a> <a name="dbdpreparesql" id="dbdpreparesql">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define an SQL prepared statement</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDPrepareSQL <var>"SQL statement"</var> <var>label</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>For modules such as authentication that repeatedly use a
    single SQL statement, optimum performance is achieved by preparing
    the statement at startup rather than every time it is used.
    This directive prepares an SQL statement and assigns it a label.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DBDriver" id="DBDriver">DBDriver</a> <a name="dbdriver" id="dbdriver">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specify an SQL driver</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DBDriver <var>name</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dbd</td></tr>
</table>
    <p>Selects an apr_dbd driver by name.  The driver must be installed
    on your system (on most systems, it will be a shared object or dll).
    For example, <code>DBDriver mysql</code> will select the MySQL
    driver in apr_dbd_mysql.so.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                      mod/mod_deflate.html                                                                                100644       0       0        50237 11256641267  12156  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_deflate - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_deflate</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Compress content before it is delivered to the
client</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>deflate_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_deflate.c</td></tr></table>
<h3>Summary</h3>

    <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module provides
    the <code>DEFLATE</code> output filter that allows output from
    your server to be compressed before being sent to the client over
    the network.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#deflatebuffersize">DeflateBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatecompressionlevel">DeflateCompressionLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatefilternote">DeflateFilterNote</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatememlevel">DeflateMemLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatewindowsize">DeflateWindowSize</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#recommended">Sample Configurations</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling Compression</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxies">Dealing with proxy servers</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../filter.html">Filters</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="recommended" id="recommended">Sample Configurations</a></h2>
    <p>This is a simple sample configuration for the impatient.</p>

    <div class="example"><h3>Compress only a few types</h3><p><code>
      AddOutputFilterByType DEFLATE text/html text/plain text/xml
    </code></p></div>

    <p>The following configuration, while resulting in more compressed content,
    is also much more complicated.  Do not use this unless you fully understand
    all the configuration details.</p>

    <div class="example"><h3>Compress everything except images</h3><p><code>
      &lt;Location /&gt;<br />
      <span class="indent">
        # Insert filter<br />
        SetOutputFilter DEFLATE<br />
        <br />
        # Netscape 4.x has some problems...<br />
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        <br />
        # Netscape 4.06-4.08 have some more problems<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        <br />
        # MSIE masquerades as Netscape, but it is fine<br />
        BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html<br />
        # Don't compress images<br />
        SetEnvIfNoCase Request_URI \<br />
        <span class="indent">
          \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
        </span>
        <br />
        # Make sure proxies don't deliver the wrong content<br />
        Header append Vary User-Agent env=!dont-vary<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Enabling Compression</a></h2>

    <h3><a name="output" id="output">Output Compression</a></h3>
      <p>Compression is implemented by the <code>DEFLATE</code>
      <a href="../filter.html">filter</a>. The following directive
      will enable compression for documents in the container where it
      is placed:</p>

      <div class="example"><p><code>
        SetOutputFilter DEFLATE
      </code></p></div>

      <p>Some popular browsers cannot handle compression of all content
      so you may want to set the <code>gzip-only-text/html</code> note to
      <code>1</code> to only allow html files to be compressed (see
      below). If you set this to <em>anything but <code>1</code></em> it
      will be ignored.</p>
      
      <p>If you want to restrict the compression to particular MIME types
      in general, you may use the <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> directive. Here is an example of
      enabling compression only for the html files of the Apache
      documentation:</p>

      <div class="example"><p><code>
        &lt;Directory "/your-server-root/manual"&gt;<br />
        <span class="indent">
          AddOutputFilterByType DEFLATE text/html<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>For browsers that have problems even with compression of all file
      types, use the <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code> directive to set the <code>no-gzip</code>
      note for that particular browser so that no compression will be
      performed. You may combine <code>no-gzip</code> with <code>gzip-only-text/html</code> to get the best results. In that case
      the former overrides the latter. Take a look at the following
      excerpt from the <a href="#recommended">configuration example</a>
      defined in the section above:</p>

      <div class="example"><p><code>
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
      </code></p></div>

      <p>At first we probe for a <code>User-Agent</code> string that
      indicates a Netscape Navigator version of 4.x. These versions
      cannot handle compression of types other than
      <code>text/html</code>. The versions 4.06, 4.07 and 4.08 also
      have problems with decompressing html files. Thus, we completely
      turn off the deflate filter for them.</p>

      <p>The third <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
      directive fixes the guessed identity of the user agent, because
      the Microsoft Internet Explorer identifies itself also as "Mozilla/4"
      but is actually able to handle requested compression. Therefore we
      match against the additional string "MSIE" (<code>\b</code> means
      "word boundary") in the <code>User-Agent</code> Header and turn off
      the restrictions defined before.</p>

      <div class="note"><h3>Note</h3>
        The <code>DEFLATE</code> filter is always inserted after RESOURCE
        filters like PHP or SSI. It never touches internal subrequests.
      </div>
      <div class="note"><h3>Note</h3>
        There is a environment variable <code>force-gzip</code>,
        set via <code class="directive"><a href="../mod/core.html#setenv">SetEnv</a></code>, which
        will ignore the accept-encoding setting of your browser and will
        send compressed output.
      </div>

    
    <h3><a name="inflate" id="inflate">Output Decompression</a></h3>
      <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
      inflating/uncompressing a gzip compressed response body. In order to activate
      this feature you have to insert the <code>INFLATE</code> filter into
      the outputfilter chain using <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code>, for example:</p>

      <div class="example"><p><code>
        &lt;Location /dav-area&gt;<br />
        <span class="indent">
          ProxyPass http://example.com/<br />
          SetOutputFilter INFLATE<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>

      <p>This Example will uncompress gzip'ed output from example.com, so other
      filters can do further processing with it.
      </p>
      
    
    <h3><a name="input" id="input">Input Decompression</a></h3>
      <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
      decompressing a gzip compressed request body . In order to activate
      this feature you have to insert the <code>DEFLATE</code> filter into
      the input filter chain using <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addinputfilter">AddInputFilter</a></code>, for example:</p>

      <div class="example"><p><code>
        &lt;Location /dav-area&gt;<br />
        <span class="indent">
          SetInputFilter DEFLATE<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
      
      <p>Now if a request contains a <code>Content-Encoding:
      gzip</code> header, the body will be automatically decompressed.
      Few browsers have the ability to gzip request bodies. However,
      some special applications actually do support request
      compression, for instance some <a href="http://www.webdav.org">WebDAV</a> clients.</p>

      <div class="warning"><h3>Note on Content-Length</h3>
        <p>If you evaluate the request body yourself, <em>don't trust
        the <code>Content-Length</code> header!</em>
        The Content-Length header reflects the length of the
        incoming data from the client and <em>not</em> the byte count of
        the decompressed data stream.</p>
      </div>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxies" id="proxies">Dealing with proxy servers</a></h2>

    <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module sends a <code>Vary:
    Accept-Encoding</code> HTTP response header to alert proxies that
    a cached response should be sent only to clients that send the
    appropriate <code>Accept-Encoding</code> request header.  This
    prevents compressed content from being sent to a client that will
    not understand it.</p>

    <p>If you use some special exclusions dependent
    on, for example, the <code>User-Agent</code> header, you must 
    manually configure an addition to the <code>Vary</code> header
    to alert proxies of the additional restrictions.  For example,
    in a typical configuration where the addition of the <code>DEFLATE</code>
    filter depends on the <code>User-Agent</code>, you should add:</p>

    <div class="example"><p><code>
      Header append Vary User-Agent
    </code></p></div>
    
    <p>If your decision about compression depends on other information
    than request headers (<em>e.g.</em> HTTP version), you have to set the
    <code>Vary</code> header to the value <code>*</code>. This prevents
    compliant proxies from caching entirely.</p>

    <div class="example"><h3>Example</h3><p><code>
      Header set Vary *
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateBufferSize" id="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize" id="deflatebuffersize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fragment size to be compressed at one time by zlib</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateBufferSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateBufferSize 8096</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateBufferSize</code> directive specifies
    the size in bytes of the fragments that zlib should compress at one
    time.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateCompressionLevel" id="DeflateCompressionLevel">DeflateCompressionLevel</a> <a name="deflatecompressionlevel" id="deflatecompressionlevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much compression do we apply to the output</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateCompressionLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Zlib's default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>This directive is available since Apache 2.0.45</td></tr>
</table>
    <p>The <code class="directive">DeflateCompressionLevel</code> directive specifies
        what level of compression should be used, the higher the value, 
        the better the compression, but the more CPU time is required to
        achieve this.</p>
    <p>The value must between 1 (less compression) and 9 (more compression).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateFilterNote" id="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote" id="deflatefilternote">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Places the compression ratio in a note for logging</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateFilterNote [<var>type</var>] <var>notename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td><var>type</var> is available since Apache 2.0.45</td></tr>
</table>
    <p>The <code class="directive">DeflateFilterNote</code> directive
    specifies that a note about compression ratios should be attached
    to the request. The name of the note is the value specified for
    the directive. You can use that note for statistical purposes by
    adding the value to your <a href="../logs.html#accesslog">access log</a>.</p>

    <div class="example"><h3>Example</h3><p><code>
      DeflateFilterNote ratio<br />
      <br />
      LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

    <p>If you want to extract more accurate values from your logs, you
    can use the <var>type</var> argument to specify the type of data
    left as note for logging. <var>type</var> can be one of:</p>

    <dl>
      <dt><code>Input</code></dt>
      <dd>Store the byte count of the filter's input stream in the note.</dd>

      <dt><code>Output</code></dt>
      <dd>Store the byte count of the filter's output stream in the note.</dd>

      <dt><code>Ratio</code></dt>
      <dd>Store the compression ratio (<code>output/input * 100</code>)
      in the note. This is the default, if the <var>type</var> argument
      is omitted.</dd>
    </dl>

    <p>Thus you may log it this way:</p>

    <div class="example"><h3>Accurate Logging</h3><p><code>
      DeflateFilterNote Input instream<br />
      DeflateFilterNote Output outstream<br />
      DeflateFilterNote Ratio ratio<br />
      <br />
      LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateMemLevel" id="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel" id="deflatememlevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much memory should be used by zlib for compression</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateMemLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateMemLevel 9</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateMemLevel</code> directive specifies
    how much memory should be used by zlib for compression
    (a value between 1 and 9).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateWindowSize" id="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize" id="deflatewindowsize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Zlib compression window size</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateWindowSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateWindowSize 15</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateWindowSize</code> directive specifies the
    zlib compression window size (a value between 1 and 15). Generally, the
    higher the window size, the higher can the compression ratio be expected.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                 mod/mod_dir.html                                                                                    100644       0       0        23507 11256641267  11330  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_dir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_dir</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Bölü çizgisiyle biten yönlendirmeleri yapar ve dizin içeriği dosyalarını sunar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>dir_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_dir.c</td></tr></table>
<h3>Özet</h3>

    <p>Bir dizin içerik dosyası şu iki kaynaktan birinden gelebilir:</p>

    <ul>
      <li>Kullanıcı tarafından yazılmış ve ismi genellikle
        <code>index.html</code> olan bir dosya. Dosya ismi <code class="directive"><a href="#directoryindex">DirectoryIndex</a></code> yönergesi ile belirlenir.
        Bu, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> modülü tarafından denetlenir.</li>

      <li>Aksi takdirde içerik listesi sunucu tarafından üretilir. Bu,
        <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> modülü tarafından sağlanır.</li>
    </ul>
    <p>Bu iki işlev tamamen birbirinden ayrıdır, dolayısıyla eğer isterseniz
      kendiliğinden dizin içerik listesi üretimini tamamen iptal
      edebilirsiniz.</p>

    <p>Sunucu <code>http://sunucum/filanca/birdizin</code> şeklinde bir istek
      aldığında <code>birdizin</code> bir dizinin ismiyse ‘bölü çizgisiyle
      biten’ bir yönlendirme söz konusudur. Dizinler URL sonuna bir bölü
      çizgisi eklenmesini gerektirir, bu bakımdan <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>
      modülü isteği <code>http://sunucum/filanca/birdizin/</code> şeklinde
      yönlendirir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#directoryindex">DirectoryIndex</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directoryslash">DirectorySlash</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DirectoryIndex" id="DirectoryIndex">DirectoryIndex</a> <a name="directoryindex" id="directoryindex">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemci bir dizin istediğinde dizin içeriğini listeler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>DirectoryIndex
    <var>yerel-url</var> [<var>yerel-url</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>DirectoryIndex index.html</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_dir</td></tr>
</table>
    <p><code class="directive">DirectoryIndex</code> yönergesi, istemci, dizinin
      sonuna bir bölü çizgisi ekleyerek dizin içeriğinin listelenmesini
      istediğinde bakılmak üzere özkaynakları listeler.
      <code><em>yerel-url</em></code>, sunucu üstünde istenen dizine göreli
      bir belgenin URL’sidir; normal olarak dizin içindeki bir dosyanın
      ismidir. Çeşitli URL’ler verilebilirse de sunucu daima ilk bulduğuyla
      dönecektir. Eğer özkaynakların hiçbiri yoksa ve <code>Indexes</code>
      seçeneği atanmışsa sunucu dizin içeriğinden bir liste üretecektir.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      DirectoryIndex index.html
    </code></p></div>

    <p>Bu yapılandırmadan sonra yapılan bir
      <code>http://sunucum/belgeler/</code> isteğine karşılık, sunucu,
      mevcutsa <code>http://sunucum/belgeler/index.html</code> dosyasını
      döndürecek, değilse ürettiği dizin içerik listesini gönderecektir.</p>

    <p>Belgelerin dizine göreli olmasının gerekmediğine dikkat ediniz.</p>

    <div class="example"><p><code>
      DirectoryIndex index.html index.txt  /cgi-bin/index.pl
    </code></p></div>

    <p>Bu örnekte ise dizin içinde ne <code>index.html</code> ne de
      <code>index.txt</code> mevcut olduğunda <code>/cgi-bin/index.pl</code>
      CGI betiği çalıştırılacaktır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DirectorySlash" id="DirectorySlash">DirectorySlash</a> <a name="directoryslash" id="directoryslash">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bölü çizgisi ile biten yönlendirmeleri açar/kapar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>DirectorySlash On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>DirectorySlash On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_dir</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0.51 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">DirectorySlash</code> yönergesi, bir dizin isteğinde
      bulunan URL’lerin sonuna <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> modülü tarafından bir
      bölü çizgisi eklenip eklenmeyeceğini belirler.</p>

    <p>Normalde, bir kullanıcı sona bir bölü çizgisi eklemeden bir dizin için
      istekte bulunursa <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> zaten onu aynı özkaynağa
      yönlendirir, fakat isteğin sonuna bir bölü çizgisi eklenmesinin bazı iyi
      sebepleri vardır:</p>

    <ul>
    <li>Kullanıcı bunun sonucunda meşru bir URL ile istekte bulunmuş olur.</li>
    <li><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> gerektiği gibi çalışır. Yoksa
      bağlantıdaki yolu sunamayacağından yanlış yolu gösterirdi.</li>
    <li><code class="directive"><a href="#directoryindex">DirectoryIndex</a></code> yönergesi
      sadece bölü çizgisi ile biten dizin istekleri için değerlendirilir.</li>
    <li>HTML sayfa içindeki göreli URL başvuruları gerektiği gibi
      çalışacaktır.</li>
    </ul>

    <p>Siz yine de bu etkiyi istemezseniz ve yukarıdaki sebepler de size uygun
      değilse yönlendirmeyi şöyle kapatabilirsiniz:</p>

    <div class="example"><p><code>
        # Aşağıdaki güvenlik uyarısına bakınız!<br />
        &lt;Location /bir/yol&gt;<br />
        <span class="indent">
            DirectorySlash Off<br />
            SetHandler bir-eylemci<br />
        </span>
        &lt;/Location&gt;
    </code></p></div>

    <div class="warning"><h3>Güvenlik Uyarı</h3>
    <p>Bölü çizgisi ile biten yönlendirmelerin kapatılması bir bilginin
      istemeyek açığa çıkmasına sebep olabilir. <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>
      modülünün etkin olduğunu (<code>Options +Indexes</code>) ve <code class="directive"><a href="#directoryindex">DirectoryIndex</a></code> ile geçerli bir özkaynağın
      (<code>index.html</code> olsun) atandığını ama bu URL için başka hiçbir
      özel eylemci tanımlanmadığını varsayalım. Bu durumda bölü çizgisi ile
      biten bir istek olduğunda <code>index.html</code> dosyası sunulurdu.
      <strong>Fakat bölü çizgisi ile bitmeyen bir istek dizin içeriğinin
      listelenmesi ile sonuçlanırdı.</strong></p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                         mod/mod_disk_cache.html                                                                             100644       0       0        26225 11256641267  12627  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_disk_cache - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_disk_cache</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Content cache storage manager keyed to URIs</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>disk_cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_disk_cache.c</td></tr></table>
<h3>Summary</h3>

    <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> implements a disk based storage
    manager. It is primarily of use in conjunction with
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>

    <p>Content is stored in and retrieved from the cache using URI based
    keys. Content with access protection is not cached.</p>

    <p><code class="program"><a href="../programs/htcacheclean.html">htcacheclean</a></code> can be used to maintain the cache
       size at a maximum level.</p>

    <div class="note"><h3>Note:</h3>
      <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> requires the services of
      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
    </div>
    <div class="note"><h3>Note:</h3>
      <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> uses the sendfile feature to
      serve files from the cache when supported by the platform, and
      when enabled with <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code>.
      However, per-directory and .htaccess configuration of
      <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code> are ignored by
      <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> as the corresponding settings are not
      available to the module when a request is being served from the
      cache.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachedirlength">CacheDirLength</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachedirlevels">CacheDirLevels</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cachemaxfilesize">CacheMaxFileSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheminfilesize">CacheMinFileSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cacheroot">CacheRoot</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheDirLength" id="CacheDirLength">CacheDirLength</a> <a name="cachedirlength" id="cachedirlength">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The number of characters in subdirectory names</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDirLength <var>length</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDirLength 2</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_disk_cache</td></tr>
</table>
    <p>The <code class="directive">CacheDirLength</code> directive sets the number
    of characters for each subdirectory name in the cache hierarchy.</p>

    <div class="note">
      <p>The result of <code class="directive"><a href="#cachedirlevels">CacheDirLevels</a></code>* <code class="directive">CacheDirLength</code>
      must not be higher than 20.</p>
    </div>

    <div class="example"><p><code>
      CacheDirLength  4
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheDirLevels" id="CacheDirLevels">CacheDirLevels</a> <a name="cachedirlevels" id="cachedirlevels">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The number of levels of subdirectories in the
cache.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDirLevels <var>levels</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDirLevels 3</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_disk_cache</td></tr>
</table>
    <p>The <code class="directive">CacheDirLevels</code> directive sets the number
    of subdirectory levels in the cache. Cached data will be saved this
    many directory levels below the <code class="directive"><a href="#cacheroot">CacheRoot</a></code> directory.</p>

    <div class="note">
      <p>The result of <code class="directive">CacheDirLevels</code>*
      <code class="directive"><a href="#cachedirlength">CacheDirLength</a></code> must
      not be higher than 20.</p>
    </div>

    <div class="example"><p><code>
      CacheDirLevels  5
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheMaxFileSize" id="CacheMaxFileSize">CacheMaxFileSize</a> <a name="cachemaxfilesize" id="cachemaxfilesize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum size (in bytes) of a document to be placed in the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMaxFileSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMaxFileSize 1000000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_disk_cache</td></tr>
</table>
    <p>The <code class="directive">CacheMaxFileSize</code> directive sets the
    maximum size, in bytes, for a document to be considered for storage in
    the cache.</p>

    <div class="example"><p><code>
      CacheMaxFileSize 64000
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheMinFileSize" id="CacheMinFileSize">CacheMinFileSize</a> <a name="cacheminfilesize" id="cacheminfilesize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The minimum size (in bytes) of a document to be placed in the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMinFileSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMinFileSize 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_disk_cache</td></tr>
</table>
    <p>The <code class="directive">CacheMinFileSize</code> directive sets the
    minimum size, in bytes, for a document to be considered for storage
    in the cache.</p>

    <div class="example"><p><code>
      CacheMinFileSize 64
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheRoot" id="CacheRoot">CacheRoot</a> <a name="cacheroot" id="cacheroot">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The directory root under which cache files are
stored</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheRoot <var>directory</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_disk_cache</td></tr>
</table>
    <p>The <code class="directive">CacheRoot</code> directive defines the name of
    the directory on the disk to contain cache files. If the <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> module has been loaded or compiled in to the
    Apache server, this directive <em>must</em> be defined. Failing to
    provide a value for <code class="directive">CacheRoot</code> will result in
    a configuration file processing error. The <code class="directive"><a href="#cachedirlevels">CacheDirLevels</a></code> and <code class="directive"><a href="#cachedirlength">CacheDirLength</a></code> directives define
    the structure of the directories under the specified root directory.</p>

    <div class="example"><p><code>
      CacheRoot c:/cacheroot
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                           mod/mod_dumpio.html                                                                                 100644       0       0        16527 11256641267  12053  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_dumpio - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_dumpio</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Dumps all I/O to error log as desired.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>dumpio_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_dumpio.c</td></tr></table>
<h3>Summary</h3>

    <p><code>mod_dumpio</code> allows for the logging of
    all input received by Apache and/or all output sent by
    Apache to be logged (dumped) to the error.log file.
    </p>

    <p>The data logging is done right after SSL decoding (for
    input) and right before SSL encoding (for output). As can
    be expected, this can produce extreme volumes of data,
    and should only be used when debugging problems.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#dumpioinput">DumpIOInput</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dumpiologlevel">DumpIOLogLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dumpiooutput">DumpIOOutput</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling dumpio Support</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Enabling dumpio Support</a></h2>
    

    <p>To enable the module, it should be compiled and
    loaded in to your running Apache configuration. Logging
    can then be enabled or disabled via the below directives.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DumpIOInput" id="DumpIOInput">DumpIOInput</a> <a name="dumpioinput" id="dumpioinput">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dump all input data to the error log</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DumpIOInput On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DumpIOInput Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dumpio</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>DumpIOInput is only available in Apache 2.1.3 and 
later.</td></tr>
</table>
    <p>Enable dumping of all input.</p>

    <div class="example"><h3>Example</h3><p><code>
      DumpIOInput On
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DumpIOLogLevel" id="DumpIOLogLevel">DumpIOLogLevel</a> <a name="dumpiologlevel" id="dumpiologlevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls the logging level of the DumpIO output</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DumpIOLogLevel <var>level</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DumpIOLogLevel debug</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dumpio</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>DumpIOLogLevel is only available in Apache 2.2.4 and 
later.</td></tr>
</table>
    <p>Enable dumping of all output at a specific <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> level.</p>

    <div class="example"><h3>Example</h3><p><code>
      DumpIOLogLevel notice
    </code></p></div>
    
    <div class="note"><h3>Compatibility</h3>Prior to 2.2.4 <code class="module"><a href="../mod/mod_dumpio.html">mod_dumpio</a></code>
    would only dump to the log when <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> was set to <code>debug</code></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DumpIOOutput" id="DumpIOOutput">DumpIOOutput</a> <a name="dumpiooutput" id="dumpiooutput">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dump all output data to the error log</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DumpIOOutput On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DumpIOOutput Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_dumpio</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>DumpIOOutput is only available in Apache 2.1.3 and 
later.</td></tr>
</table>
    <p>Enable dumping of all output.</p>

    <div class="example"><h3>Example</h3><p><code>
      DumpIOOutput On
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                         mod/mod_echo.html                                                                                   100644       0       0         7647 11256641267  11457  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_echo - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_echo</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>A simple echo server to illustrate protocol 
modules</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>echo_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_echo.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module provides an example protocol module to illustrate the
    concept. It provides a simple echo server. Telnet to it and type
    stuff, and it will echo it.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#protocolecho">ProtocolEcho</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProtocolEcho" id="ProtocolEcho">ProtocolEcho</a> <a name="protocolecho" id="protocolecho">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Turn the echo server on or off</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProtocolEcho On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProtocolEcho Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_echo</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>ProtocolEcho is only available in 2.0 and
later.</td></tr>
</table>
    <p>The <code class="directive">ProtocolEcho</code> directive enables or
    disables the echo server.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProtocolEcho On
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                         mod/mod_env.html                                                                                    100644       0       0        15062 11256641270  11331  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_env - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_env</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>CGI betiklerine ve SSI sayfalarına aktarılan değişkenlere
müdahale etmek için kullanılır.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>env_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_env.c</td></tr></table>
<h3>Özet</h3>

    <p>Bu modül CGI betiklerine ve SSI sayfalarına aktarılan ortama müdahale
      etmeyi mümkün kılar. Ortam değişkenleri <code class="program"><a href="../programs/httpd.html">httpd</a></code> süreci
      başlatılırken kabuktan aktarılabilir. Bundan başka, yapılandırma
      sürecinde tanımlı veya tanımsız yapılabilirler.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#passenv">PassEnv</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenv">SetEnv</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#unsetenv">UnsetEnv</a></li>
</ul>
<h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../env.html">Ortam Değişkenleri</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="PassEnv" id="PassEnv">PassEnv</a> <a name="passenv" id="passenv">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini kabuktan aktarır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>PassEnv <var>ortam-değişkeni</var> [<var>ortam-değişkeni</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_env</td></tr>
</table>
    <p><code class="program"><a href="../programs/httpd.html">httpd</a></code> süreci başlatılırken CGI betiklerine ve SSI
      sayfalarına kabuktan aktarılabilecek ortam değişkenleri belirtilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      PassEnv LD_LIBRARY_PATH
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnv" id="SetEnv">SetEnv</a> <a name="setenv" id="setenv">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini tanımlar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetEnv <var>ortam-değişkeni</var> <var>değer</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_env</td></tr>
</table>
    <p>CGI betiklerine ve SSI sayfalarına aktarılmak üzere bir ortam değişkeni
      tanımlanmasını sağlar.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      SetEnv SPECIAL_PATH /foo/bin
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="UnsetEnv" id="UnsetEnv">UnsetEnv</a> <a name="unsetenv" id="unsetenv">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortamdaki değişkenleri tanımsız hale getirir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>UnsetEnv <var>ortam-değişkeni</var> [<var>ortam-değişkeni</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_env</td></tr>
</table>
    <p>CGI betiklerine ve SSI sayfalarına bir daha aktarılmamak üzere bir ortam
      değişkenini ortamdan siler.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      UnsetEnv LD_LIBRARY_PATH
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              mod/mod_example.html                                                                                100644       0       0        16735 11256641270  12204  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_example - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_example</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Illustrates the Apache module API</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>example_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_example.c</td></tr></table>
<h3>Summary</h3>

    <p>Some files in the <code>modules/experimental</code> directory
    under the Apache distribution directory tree are provided as an
    example to those that wish to write modules that use the Apache
    API.</p>

    <p>The main file is <code>mod_example.c</code>, which
    illustrates all the different callback mechanisms and call
    syntaxes. By no means does an add-on module need to include
    routines for all of the callbacks - quite the contrary!</p>

    <p>The example module is an actual working module. If you link
    it into your server, enable the "example-handler" handler for a
    location, and then browse to that location, you will see a
    display of some of the tracing the example module did as the
    various callbacks were made.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#example">Example</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#compiling">Compiling the example module</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#using">Using the <code>mod_example</code> Module</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compiling" id="compiling">Compiling the example module</a></h2>

    <p>To include the example module in your server, follow the
    steps below:</p>

    <ol>
      <li>
        Run <code class="program"><a href="../programs/configure.html">configure</a></code> with <code>--enable-example</code>
        option.</li>

      <li>Make the server (run "<code>make</code>").</li>
    </ol>

    <p>To add another module of your own:</p>

    <ol class="up-A">
      <li><code>cp modules/experimental/mod_example.c
      modules/new_module/<em>mod_myexample.c</em></code></li>

      <li>Modify the file.</li>

      <li>Create <code>modules/new_module/config.m4</code>.
        <ol>
          <li>Add <code>APACHE_MODPATH_INIT(new_module)</code>.</li>
          <li>Copy APACHE_MODULE line with "example" from
            <code>modules/experimental/config.m4</code>.</li>
          <li>Replace the first argument "example" with <em>myexample</em>.</li>
          <li>Replace the second argument with brief description of your module.
            It will be used in <code>configure --help</code>.</li>
          <li>If your module needs additional C compiler flags, linker flags or
            libraries, add them to CFLAGS, LDFLAGS and LIBS accordingly.
            See other <code>config.m4</code> files in modules directory for
            examples.</li>
          <li>Add <code>APACHE_MODPATH_FINISH</code>.</li>
        </ol>
      </li>

      <li>Create <code>module/new_module/Makefile.in</code>.
      If your module doesn't need special build instructions,
      all you need to have in that file is
      <code>include $(top_srcdir)/build/special.mk</code>.</li>

      <li>Run ./buildconf from the top-level directory.</li>

      <li>Build the server with --enable-myexample</li>

    </ol>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">Using the <code>mod_example</code> Module</a></h2>

    <p>To activate the example module, include a block similar to
    the following in your <code>httpd.conf</code> file:</p>
<div class="example"><p><code>
   &lt;Location /example-info&gt;<br />
       SetHandler example-handler<br />
   &lt;/Location&gt;
</code></p></div>

    <p>As an alternative, you can put the following into a <a href="core.html#accessfilename"><code>.htaccess</code></a> file
    and then request the file "test.example" from that location:</p>
<div class="example"><p><code>
   AddHandler example-handler .example
</code></p></div>

    <p>After reloading/restarting your server, you should be able
    to browse to this location and see the brief display mentioned
    earlier.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Example" id="Example">Example</a> <a name="example" id="example">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Demonstration directive to illustrate the Apache module
API</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Example</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_example</td></tr>
</table>
    <p>The <code class="directive">Example</code> directive just sets a demonstration
    flag which the example module's content handler displays. It
    takes no arguments. If you browse to an URL to which the
    example content-handler applies, you will get a display of the
    routines within the module and how and in what order they were
    called to service the document request. The effect of this
    directive one can observe under the point "<code>Example
    directive declared here: YES/NO</code>".</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                   mod/mod_expires.html                                                                                100644       0       0        31133 11256641270  12215  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_expires - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_expires</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Generation of <code>Expires</code> and
<code>Cache-Control</code> HTTP headers according to user-specified
criteria</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>expires_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_expires.c</td></tr></table>
<h3>Summary</h3>

    <p>This module controls the setting of the <code>Expires</code>
    HTTP header and the <code>max-age</code> directive of the
    <code>Cache-Control</code> HTTP header in server responses. The
    expiration date can set to be relative to either the time the
    source file was last modified, or to the time of the client
    access.</p>

    <p>These HTTP headers are an instruction to the client about the
    document's validity and persistence. If cached, the document may
    be fetched from the cache rather than from the source until this
    time has passed. After that, the cache copy is considered
    "expired" and invalid, and a new copy must be obtained from the
    source.</p> 

    <p>To modify <code>Cache-Control</code> directives other than
    <code>max-age</code> (see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC
    2616 section 14.9</a>), you can use the <code class="directive"><a href="../mod/mod_headers.html#header">Header</a></code> directive.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#expiresactive">ExpiresActive</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#expiresbytype">ExpiresByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#expiresdefault">ExpiresDefault</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#AltSyn">Alternate Interval Syntax</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="AltSyn" id="AltSyn">Alternate Interval Syntax</a></h2>
    <p>The <code class="directive"><a href="#expiresdefault">ExpiresDefault</a></code> and
    <code class="directive"><a href="#expiresbytype">ExpiresByType</a></code> directives
    can also be defined in a more readable syntax of the form:</p>

    <div class="example"><p><code>
      ExpiresDefault "&lt;base&gt; [plus] {&lt;num&gt;
      &lt;type&gt;}*"<br />
      ExpiresByType type/encoding "&lt;base&gt; [plus]
      {&lt;num&gt; &lt;type&gt;}*"
    </code></p></div>

    <p>where &lt;base&gt; is one of:</p>

    <ul>
      <li><code>access</code></li>

      <li><code>now</code> (equivalent to
      '<code>access</code>')</li>

      <li><code>modification</code></li>
    </ul>

    <p>The <code>plus</code> keyword is optional. &lt;num&gt;
    should be an integer value [acceptable to <code>atoi()</code>],
    and &lt;type&gt; is one of:</p>

    <ul>
      <li><code>years</code></li>
      <li><code>months</code></li>
      <li><code>weeks</code></li>
      <li><code>days</code></li>
      <li><code>hours</code></li>
      <li><code>minutes</code></li>
      <li><code>seconds</code></li>
    </ul>

    <p>For example, any of the following directives can be used to
    make documents expire 1 month after being accessed, by
    default:</p>

    <div class="example"><p><code>
      ExpiresDefault "access plus 1 month"<br />
      ExpiresDefault "access plus 4 weeks"<br />
      ExpiresDefault "access plus 30 days"
    </code></p></div>

    <p>The expiry time can be fine-tuned by adding several
    '&lt;num&gt; &lt;type&gt;' clauses:</p>

    <div class="example"><p><code>
      ExpiresByType text/html "access plus 1 month 15
      days 2 hours"<br />
      ExpiresByType image/gif "modification plus 5 hours 3
      minutes"
    </code></p></div>

    <p>Note that if you use a modification date based setting, the
    Expires header will <strong>not</strong> be added to content
    that does not come from a file on disk. This is due to the fact
    that there is no modification time for such content.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExpiresActive" id="ExpiresActive">ExpiresActive</a> <a name="expiresactive" id="expiresactive">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables generation of <code>Expires</code>
headers</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExpiresActive On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_expires</td></tr>
</table>
    <p>This directive enables or disables the generation of the
    <code>Expires</code> and <code>Cache-Control</code> headers for
    the document realm in question.  (That is, if found in an
    <code>.htaccess</code> file, for instance, it applies only to
    documents generated from that directory.) If set to
    <code>Off</code>, the headers will not be generated for any
    document in the realm (unless overridden at a lower level, such as
    an <code>.htaccess</code> file overriding a server config
    file). If set to <code>On</code>, the headers will be added to
    served documents according to the criteria defined by the
    <code class="directive"><a href="#expiresbytype">ExpiresByType</a></code> and
    <code class="directive"><a href="#expiresdefault">ExpiresDefault</a></code>
    directives (<em>q.v.</em>).</p>

    <p>Note that this directive does not guarantee that an
    <code>Expires</code> or <code>Cache-Control</code> header will be
    generated. If the criteria aren't met, no header will be sent, and
    the effect will be as though this directive wasn't even
    specified.</p>
 
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExpiresByType" id="ExpiresByType">ExpiresByType</a> <a name="expiresbytype" id="expiresbytype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Value of the <code>Expires</code> header configured
by MIME type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExpiresByType <var>MIME-type</var>
<var>&lt;code&gt;seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_expires</td></tr>
</table>
    <p>This directive defines the value of the <code>Expires</code>
    header and the <code>max-age</code> directive of the
    <code>Cache-Control</code> header generated for documents of the
    specified type (<em>e.g.</em>, <code>text/html</code>). The second
    argument sets the number of seconds that will be added to a base
    time to construct the expiration date.  The <code>Cache-Control:
    max-age</code> is calculated by subtracting the request time from
    the expiration date and expressing the result in seconds.</p>

    <p>The base time is either the last modification time of the
    file, or the time of the client's access to the document. Which
    should be used is specified by the
    <code><var>&lt;code&gt;</var></code> field; <code>M</code>
    means that the file's last modification time should be used as
    the base time, and <code>A</code> means the client's access
    time should be used.</p>

    <p>The difference in effect is subtle. If <code>M</code> is used,
    all current copies of the document in all caches will expire at
    the same time, which can be good for something like a weekly
    notice that's always found at the same URL. If <code>A</code> is
    used, the date of expiration is different for each client; this
    can be good for image files that don't change very often,
    particularly for a set of related documents that all refer to
    the same images (<em>i.e.</em>, the images will be accessed
    repeatedly within a relatively short timespan).</p>

    <div class="example"><h3>Example:</h3><p><code>
      # enable expirations<br />
      ExpiresActive On<br />
      # expire GIF images after a month in the client's cache<br />
      ExpiresByType image/gif A2592000<br />
      # HTML documents are good for a week from the<br />
      # time they were changed<br />
      ExpiresByType text/html M604800
    </code></p></div>

    <p>Note that this directive only has effect if
    <code>ExpiresActive On</code> has been specified. It overrides,
    for the specified MIME type <em>only</em>, any expiration date
    set by the <code class="directive"><a href="#expiresdefault">ExpiresDefault</a></code>
    directive.</p>

    <p>You can also specify the expiration time calculation using
    an <a href="#AltSyn">alternate syntax</a>, described earlier in
    this document.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExpiresDefault" id="ExpiresDefault">ExpiresDefault</a> <a name="expiresdefault" id="expiresdefault">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Default algorithm for calculating expiration time</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExpiresDefault <var>&lt;code&gt;seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_expires</td></tr>
</table>
    <p>This directive sets the default algorithm for calculating the
    expiration time for all documents in the affected realm. It can be
    overridden on a type-by-type basis by the <code class="directive"><a href="#expiresbytype">ExpiresByType</a></code> directive. See the
    description of that directive for details about the syntax of the
    argument, and the <a href="#AltSyn">alternate syntax</a>
    description as well.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                     mod/mod_ext_filter.html                                                                             100644       0       0        42354 11256641270  12712  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_ext_filter - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_ext_filter</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Pass the response body through an external program before
delivery to the client</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>ext_filter_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_ext_filter.c</td></tr></table>
<h3>Summary</h3>

    <p><code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> presents a simple and familiar
    programming model for <a href="../filter.html">filters</a>. With
    this module, a program which reads from stdin and writes to stdout
    (i.e., a Unix-style filter command) can be a filter for
    Apache. This filtering mechanism is much slower than using a
    filter which is specially written for the Apache API and runs
    inside of the Apache server process, but it does have the
    following benefits:</p>

    <ul>
      <li>the programming model is much simpler</li>

      <li>any programming/scripting language can be used, provided
      that it allows the program to read from standard input and
      write to standard output</li>

      <li>existing programs can be used unmodified as Apache
      filters</li>
    </ul>

    <p>Even when the performance characteristics are not suitable
    for production use, <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> can be used as
    a prototype environment for filters.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#extfilterdefine">ExtFilterDefine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#extfilteroptions">ExtFilterOptions</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../filter.html">Filters</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>

    <h3>Generating HTML from some other type of response</h3>
      <div class="example"><p><code>
        # mod_ext_filter directive to define a filter<br />
        # to HTML-ize text/c files using the external<br />
        # program /usr/bin/enscript, with the type of<br />
        # the result set to text/html<br />
        ExtFilterDefine c-to-html mode=output \<br />
        <span class="indent">
          intype=text/c outtype=text/html \<br />
          cmd="/usr/bin/enscript --color -W html -Ec -o - -"<br />
        </span>
        <br />
        &lt;Directory "/export/home/trawick/apacheinst/htdocs/c"&gt;<br />
        <span class="indent">
          # core directive to cause the new filter to<br />
          # be run on output<br />
          SetOutputFilter c-to-html<br />
          <br />
          # mod_mime directive to set the type of .c<br />
          # files to text/c<br />
          AddType text/c .c<br />
          <br />
          # mod_ext_filter directive to set the debug<br />
          # level just high enough to see a log message<br />
          # per request showing the configuration in force<br />
          ExtFilterOptions DebugLevel=1<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>
    

    <h3>Implementing a content encoding filter</h3>
      <p>Note: this gzip example is just for the purposes of illustration.
      Please refer to <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> for a practical
      implementation.</p>

      <div class="example"><p><code>
        # mod_ext_filter directive to define the external filter<br />
        ExtFilterDefine gzip mode=output cmd=/bin/gzip<br />
        <br />
        &lt;Location /gzipped&gt;<br />
        <span class="indent">
          # core directive to cause the gzip filter to be<br />
          # run on output<br />
          SetOutputFilter gzip<br />
          <br />
          # mod_header directive to add<br />
          # "Content-Encoding: gzip" header field<br />
          Header set Content-Encoding gzip<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
    

    <h3>Slowing down the server</h3>
      <div class="example"><p><code>
        # mod_ext_filter directive to define a filter<br />
        # which runs everything through cat; cat doesn't<br />
        # modify anything; it just introduces extra pathlength<br />
        # and consumes more resources<br />
        ExtFilterDefine slowdown mode=output cmd=/bin/cat \<br />
        <span class="indent">
          preservescontentlength<br />
        </span>
        <br />
        &lt;Location /&gt;<br />
        <span class="indent">
          # core directive to cause the slowdown filter to<br />
          # be run several times on output<br />
          #<br />
          SetOutputFilter slowdown;slowdown;slowdown<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
    

    <h3>Using sed to replace text in the response</h3>
      <div class="example"><p><code>
        # mod_ext_filter directive to define a filter which<br />
        # replaces text in the response<br />
        #<br />
        ExtFilterDefine fixtext mode=output intype=text/html \<br />
        <span class="indent">
          cmd="/bin/sed s/verdana/arial/g"<br />
        </span>
        <br />
        &lt;Location /&gt;<br />
        <span class="indent">
          # core directive to cause the fixtext filter to<br />
          # be run on output<br />
          SetOutputFilter fixtext<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
    

    <h3>Tracing another filter</h3>
      <div class="example"><p><code>
        # Trace the data read and written by mod_deflate<br />
        # for a particular client (IP 192.168.1.31)<br />
        # experiencing compression problems.<br />
        # This filter will trace what goes into mod_deflate.<br />
        ExtFilterDefine tracebefore \<br />
        <span class="indent">
          cmd="/bin/tracefilter.pl /tmp/tracebefore" \<br />
          EnableEnv=trace_this_client<br />
        </span>
        <br />
        # This filter will trace what goes after mod_deflate.<br />
        # Note that without the ftype parameter, the default<br />
        # filter type of AP_FTYPE_RESOURCE would cause the<br />
        # filter to be placed *before* mod_deflate in the filter<br />
        # chain.  Giving it a numeric value slightly higher than<br />
        # AP_FTYPE_CONTENT_SET will ensure that it is placed<br />
        # after mod_deflate.<br />
        ExtFilterDefine traceafter \<br />
        <span class="indent">
          cmd="/bin/tracefilter.pl /tmp/traceafter" \<br />
          EnableEnv=trace_this_client ftype=21<br />
        </span>
        <br />
        &lt;Directory /usr/local/docs&gt;<br />
        <span class="indent">
          SetEnvIf Remote_Addr 192.168.1.31 trace_this_client<br />
          SetOutputFilter tracebefore;deflate;traceafter<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <div class="example"><h3>Here is the filter which traces the data:</h3><p><code>
        #!/usr/local/bin/perl -w<br />
        use strict;<br />
        <br />
        open(SAVE, "&gt;$ARGV[0]")<br />
        <span class="indent">
          or die "can't open $ARGV[0]: $?";<br />
        </span>
        <br />
        while (&lt;STDIN&gt;) {<br />
        <span class="indent">
          print SAVE $_;<br />
          print $_;<br />
        </span>
        }<br />
        <br />
        close(SAVE);
      </code></p></div>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExtFilterDefine" id="ExtFilterDefine">ExtFilterDefine</a> <a name="extfilterdefine" id="extfilterdefine">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define an external filter</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExtFilterDefine <var>filtername</var> <var>parameters</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
</table>
    <p>The <code class="directive">ExtFilterDefine</code> directive defines the
    characteristics of an external filter, including the program to
    run and its arguments.</p>

    <p><var>filtername</var> specifies the name of the filter being
    defined. This name can then be used in <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code>
    directives. It must be unique among all registered filters.
    <em>At the present time, no error is reported by the
    register-filter API, so a problem with duplicate names isn't
    reported to the user.</em></p>

    <p>Subsequent parameters can appear in any order and define the
    external command to run and certain other characteristics. The
    only required parameter is <code>cmd=</code>. These parameters
    are:</p>

    <dl>
      <dt><code>cmd=<var>cmdline</var></code></dt>

      <dd>The <code>cmd=</code> keyword allows you to specify the
      external command to run. If there are arguments after the
      program name, the command line should be surrounded in
      quotation marks (<em>e.g.</em>, <code>cmd="<var>/bin/mypgm</var>
      <var>arg1</var> <var>arg2</var>"</code>.) Normal shell quoting is
      not necessary since the program is run directly, bypassing the shell.
      Program arguments are blank-delimited. A backslash can be used to
      escape blanks which should be part of a program argument. Any
      backslashes which are part of the argument must be escaped with
      backslash themselves.  In addition to the standard CGI environment
      variables, DOCUMENT_URI, DOCUMENT_PATH_INFO, and 
      QUERY_STRING_UNESCAPED will also be set for the program.</dd>

      <dt><code>mode=<var>mode</var></code></dt>

      <dd>Use <code>mode=output</code> (the default) for filters which
      process the response.  Use <code>mode=input</code> for filters
      which process the request.  <code>mode=input</code> is available
      in Apache 2.1 and later.</dd>

      <dt><code>intype=<var>imt</var></code></dt>

      <dd>This parameter specifies the internet media type (<em>i.e.</em>,
      MIME type) of documents which should be filtered. By default,
      all documents are filtered. If <code>intype=</code> is
      specified, the filter will be disabled for documents of other
      types.</dd>

      <dt><code>outtype=<var>imt</var></code></dt>

      <dd>This parameter specifies the internet media type (<em>i.e.</em>,
      MIME type) of filtered documents. It is useful when the
      filter changes the internet media type as part of the
      filtering operation. By default, the internet media type is
      unchanged.</dd>

      <dt><code>PreservesContentLength</code></dt>

      <dd>The <code>PreservesContentLength</code> keyword specifies
      that the filter preserves the content length. This is not the
      default, as most filters change the content length. In the
      event that the filter doesn't modify the length, this keyword
      should be specified.</dd>

      <dt><code>ftype=<var>filtertype</var></code></dt>

      <dd>This parameter specifies the numeric value for filter type
      that the filter should be registered as.  The default value,
      AP_FTYPE_RESOURCE, is sufficient in most cases.  If the filter
      needs to operate at a different point in the filter chain than
      resource filters, then this parameter will be necessary.  See
      the AP_FTYPE_foo definitions in util_filter.h for appropriate
      values.</dd>

      <dt><code>disableenv=<var>env</var></code></dt>

      <dd>This parameter specifies the name of an environment variable
      which, if set, will disable the filter.</dd>

      <dt><code>enableenv=<var>env</var></code></dt>

      <dd>This parameter specifies the name of an environment variable
      which must be set, or the filter will be disabled.</dd>
    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExtFilterOptions" id="ExtFilterOptions">ExtFilterOptions</a> <a name="extfilteroptions" id="extfilteroptions">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> options</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExtFilterOptions <var>option</var> [<var>option</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ExtFilterOptions DebugLevel=0 NoLogStderr</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
</table>
    <p>The <code class="directive">ExtFilterOptions</code> directive specifies
    special processing options for <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code>.
    <var>Option</var> can be one of</p>

    <dl>
      <dt><code>DebugLevel=<var>n</var></code></dt>

      <dd>
        The <code>DebugLevel</code> keyword allows you to specify
        the level of debug messages generated by
        <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code>. By default, no debug messages
        are generated. This is equivalent to
        <code>DebugLevel=0</code>. With higher numbers, more debug
        messages are generated, and server performance will be
        degraded. The actual meanings of the numeric values are
        described with the definitions of the DBGLVL_ constants
        near the beginning of <code>mod_ext_filter.c</code>. 

        <p>Note: The core directive <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> should be used to cause debug messages to
        be stored in the Apache error log.</p>
      </dd>

      <dt><code>LogStderr | NoLogStderr</code></dt>

      <dd>The <code>LogStderr</code> keyword specifies that
      messages written to standard error by the external filter
      program will be saved in the Apache error log.
      <code>NoLogStderr</code> disables this feature.</dd>

      <dt><code>Onfail=[abort|remove]</code> (new in httpd version 2.2.12).</dt>
      <dd>Determines how to proceed if the external filter program
      cannot be started.  With <code>abort</code> (the default value)
      the request will be aborted.  With <code>remove</code>, the
      filter is removed and the request continues without it.</dd>
    </dl>

    <div class="example"><h3>Example</h3><p><code>
      ExtFilterOptions LogStderr DebugLevel=0
    </code></p></div>

    <p>Messages written to the filter's standard error will be stored
    in the Apache error log. No debug messages will be generated by
    <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code>. </p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                    mod/mod_file_cache.html                                                                             100644       0       0        27402 11256641270  12604  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_file_cache - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_file_cache</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Caches a static list of files in memory</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>file_cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_file_cache.c</td></tr></table>
<h3>Summary</h3>


    <div class="warning">
      This module should be used with care. You can easily create a broken
      site using <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>, so read this document
      carefully.
    </div>

    <p><em>Caching</em> frequently requested files that change very
    infrequently is a technique for reducing server load.
    <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> provides two techniques for caching
    frequently requested <em>static</em> files. Through configuration
    directives, you can direct <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> to either
    open then <code>mmap()</code> a file, or to pre-open a file and save
    the file's open <em>file handle</em>. Both techniques reduce server
    load when processing requests for these files by doing part of the work
    (specifically, the file I/O) for serving the file when the
    server is started rather than during each request.</p>

    <p>Notice: You cannot use this for speeding up CGI programs or
    other files which are served by special content handlers. It
    can only be used for regular files which are usually served by
    the Apache core content handler.</p>

    <p>This module is an extension of and borrows heavily from the
    <code>mod_mmap_static</code> module in Apache 1.3.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachefile">CacheFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mmapfile">MMapFile</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#using">Using mod_file_cache</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">Using mod_file_cache</a></h2>

    <p><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> caches a list of statically
    configured files via <code class="directive"><a href="#mmapfile">MMapFile</a></code> or <code class="directive"><a href="#cachefile">CacheFile</a></code> directives in the main server configuration.</p>

    <p>Not all platforms support both directives. You will receive an error
    message in the server error log if you attempt to use an
    unsupported directive. If given an unsupported directive, the
    server will start but the file will not be cached. On platforms
    that support both directives, you should experiment with both to
    see which works best for you.</p>

    <h3>MMapFile Directive</h3>

      <p>The <code class="directive"><a href="#mmapfile">MMapFile</a></code>
      directive of <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> maps a list of
      statically configured files into memory through the system call
      <code>mmap()</code>. This system call is available on most modern
      Unix derivates, but not on all. There are sometimes system-specific
      limits on the size and number of files that can be
      <code>mmap()</code>ed, experimentation is probably the easiest way
      to find out.</p>

      <p>This <code>mmap()</code>ing is done once at server start or
      restart, only. So whenever one of the mapped files changes on the
      filesystem you <em>have</em> to restart the server (see the <a href="../stopping.html">Stopping and Restarting</a> documentation).
      To reiterate that point: if the files are modified <em>in place</em>
      without restarting the server you may end up serving requests that
      are completely bogus. You should update files by unlinking the old
      copy and putting a new copy in place. Most tools such as
      <code>rdist</code> and <code>mv</code> do this. The reason why this
      modules doesn't take care of changes to the files is that this check
      would need an extra <code>stat()</code> every time which is a waste
      and against the intent of I/O reduction.</p>
    

    <h3>CacheFile Directive</h3>

      <p>The <code class="directive"><a href="#cachefile">CacheFile</a></code>
      directive of <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> opens an active
      <em>handle</em> or <em>file descriptor</em> to the file (or files)
      listed in the configuration directive and places these open file
      handles in the cache. When the file is requested, the server
      retrieves the handle from the cache and passes it to the
      <code>sendfile()</code> (or <code>TransmitFile()</code> on Windows),
      socket API.</p>

      

      <p>This file handle caching is done once at server start or
      restart, only. So whenever one of the cached files changes on
      the filesystem you <em>have</em> to restart the server (see the
      <a href="../stopping.html">Stopping and Restarting</a>
      documentation). To reiterate that point: if the files are
      modified <em>in place</em> without restarting the server you
      may end up serving requests that are completely bogus. You
      should update files by unlinking the old copy and putting a new
      copy in place. Most tools such as <code>rdist</code> and
      <code>mv</code> do this.</p>
    

    <div class="note"><h3>Note</h3>
      <p>Don't bother asking for a directive which recursively
      caches all the files in a directory. Try this instead... See the 
      <code class="directive"><a href="../mod/core.html#include">Include</a></code> directive, and consider
      this command:</p>

      <div class="example"><p><code>
        find /www/htdocs -type f -print \<br />
        | sed -e 's/.*/mmapfile &amp;/' &gt; /www/conf/mmap.conf
      </code></p></div>
    </div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheFile" id="CacheFile">CacheFile</a> <a name="cachefile" id="cachefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Cache a list of file handles at startup time</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_file_cache</td></tr>
</table>
    <p>The <code class="directive">CacheFile</code> directive opens handles to
    one or more files (given as whitespace separated arguments) and
    places these handles into the cache at server startup
    time. Handles to cached files are automatically closed on a server
    shutdown.  When the files have changed on the filesystem, the
    server should be restarted to re-cache them.</p>

    <p>Be careful with the <var>file-path</var> arguments: They have
    to literally match the filesystem path Apache's URL-to-filename
    translation handlers create. We cannot compare inodes or other
    stuff to match paths through symbolic links <em>etc.</em>
    because that again would cost extra <code>stat()</code> system
    calls which is not acceptable. This module may or may not work
    with filenames rewritten by <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> or
    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

    <div class="example"><h3>Example</h3><p><code>
      CacheFile /usr/local/apache/htdocs/index.html
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MMapFile" id="MMapFile">MMapFile</a> <a name="mmapfile" id="mmapfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Map a list of files into memory at startup time</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MMapFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_file_cache</td></tr>
</table>
    <p>The <code class="directive">MMapFile</code> directive maps one or more files
    (given as whitespace separated arguments) into memory at server
    startup time. They are automatically unmapped on a server
    shutdown. When the files have changed on the filesystem at
    least a <code>HUP</code> or <code>USR1</code> signal should be send to
    the server to re-<code>mmap()</code> them.</p>

    <p>Be careful with the <var>file-path</var> arguments: They have
    to literally match the filesystem path Apache's URL-to-filename
    translation handlers create. We cannot compare inodes or other
    stuff to match paths through symbolic links <em>etc.</em>
    because that again would cost extra <code>stat()</code> system
    calls which is not acceptable. This module may or may not work
    with filenames rewritten by <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> or
    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

    <div class="example"><h3>Example</h3><p><code>
      MMapFile /usr/local/apache/htdocs/index.html
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                              mod/mod_filter.html                                                                                 100644       0       0        61465 11256641270  12036  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_filter - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_filter</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Context-sensitive smart filter configuration module</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>filter_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_filter.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module enables smart, context-sensitive configuration of
    output content filters.  For example, apache can be configured to
    process different content-types through different filters, even
    when the content-type is not known in advance (e.g. in a proxy).</p>

    <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> works by introducing indirection into
    the filter chain.  Instead of inserting filters in the chain, we insert
    a filter harness which in turn dispatches conditionally
    to a filter provider.  Any content filter may be used as a provider
    to <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>; no change to existing filter modules is
    required (although it may be possible to simplify them).</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#filterchain">FilterChain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filterdeclare">FilterDeclare</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filterprotocol">FilterProtocol</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filterprovider">FilterProvider</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filtertrace">FilterTrace</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#smart">Smart Filtering</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#terms">Filter Declarations, Providers and Chains</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#config">Configuring the Chain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#protocol">Protocol Handling</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="smart" id="smart">Smart Filtering</a></h2>
    <p>In the traditional filtering model, filters are inserted unconditionally
    using <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code> and family.
    Each filter then needs to determine whether to run, and there is little
    flexibility available for server admins to allow the chain to be
    configured dynamically.</p>

    <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> by contrast gives server administrators a
    great deal of flexibility in configuring the filter chain.  In fact,
    filters can be inserted based on any Request Header, Response Header
    or Environment Variable.  This generalises the limited flexibility offered
    by <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code>, and fixes
    it to work correctly with dynamic content, regardless of the
    content generator.  The ability to dispatch based on Environment
    Variables offers the full flexibility of configuration with
    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> to anyone who needs it.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="terms" id="terms">Filter Declarations, Providers and Chains</a></h2>
    <p class="figure">
    <img src="../images/mod_filter_old.gif" width="160" height="310" alt="[This image displays the traditional filter model]" /><br />
    <dfn>Figure 1:</dfn> The traditional filter model</p>

    <p>In the traditional model, output filters are a simple chain
    from the content generator (handler) to the client.  This works well
    provided the filter chain can be correctly configured, but presents
    problems when the filters need to be configured dynamically based on
    the outcome of the handler.</p>

    <p class="figure">
    <img src="../images/mod_filter_new.gif" width="423" height="331" alt="[This image shows the mod_filter model]" /><br />
    <dfn>Figure 2:</dfn> The <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> model</p>

    <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> works by introducing indirection into
    the filter chain.  Instead of inserting filters in the chain, we insert
    a filter harness which in turn dispatches conditionally
    to a filter provider.  Any content filter may be used as a provider
    to <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>; no change to existing filter modules
    is required (although it may be possible to simplify them).  There can be
    multiple providers for one filter, but no more than one provider will
    run for any single request.</p>

    <p>A filter chain comprises any number of instances of the filter
    harness, each of which may have any number of providers.  A special
    case is that of a single provider with unconditional dispatch: this
    is equivalent to inserting the provider filter directly into the chain.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="config" id="config">Configuring the Chain</a></h2>
    <p>There are three stages to configuring a filter chain with
    <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>. For details of the directives, see below.</p>

    <dl>
    <dt>Declare Filters</dt>
    <dd>The <code class="directive"><a href="#filterdeclare">FilterDeclare</a></code> directive
    declares a filter, assigning it a name and filter type.  Required
    only if the filter is not the default type AP_FTYPE_RESOURCE.</dd>

    <dt>Register Providers</dt>
    <dd>The <code class="directive"><a href="#filterprovider">FilterProvider</a></code>
    directive registers a provider with a filter. The filter may have
    been declared with <code class="directive"><a href="#filterdeclare">FilterDeclare</a></code>; if not, FilterProvider will implicitly
    declare it with the default type AP_FTYPE_RESOURCE. The provider
    must have been
    registered with <code>ap_register_output_filter</code> by some module.
    The remaining arguments to <code class="directive"><a href="#filterprovider">FilterProvider</a></code> are a dispatch criterion and a match string.
    The former may be an HTTP request or response header, an environment
    variable, or the Handler used by this request.  The latter is matched
    to it for each request, to determine whether this provider will be
    used to implement the filter for this request.</dd>

    <dt>Configure the Chain</dt>
    <dd>The above directives build components of a smart filter chain,
    but do not configure it to run.  The <code class="directive"><a href="#filterchain">FilterChain</a></code> directive builds a filter chain from smart
    filters declared, offering the flexibility to insert filters at the
    beginning or end of the chain, remove a filter, or clear the chain.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>
    <dl>
    <dt>Server side Includes (SSI)</dt>
    <dd>A simple case of using <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> in place of
    <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code>
    <div class="example"><p><code>
      FilterDeclare SSI<br />
      FilterProvider SSI INCLUDES resp=Content-Type $text/html<br />
      FilterChain SSI
    </code></p></div>
    </dd>

    <dt>Server side Includes (SSI)</dt>
    <dd>The same as the above but dispatching on handler (classic
    SSI behaviour; .shtml files get processed).
    <div class="example"><p><code>
      FilterProvider SSI INCLUDES Handler server-parsed<br />
      FilterChain SSI
    </code></p></div>
    </dd>

    <dt>Emulating mod_gzip with mod_deflate</dt>
    <dd>Insert INFLATE filter only if "gzip" is NOT in the
    Accept-Encoding header.  This filter runs with ftype CONTENT_SET.
    <div class="example"><p><code>
      FilterDeclare gzip CONTENT_SET<br />
      FilterProvider gzip inflate req=Accept-Encoding !$gzip<br />
      FilterChain gzip
    </code></p></div>
    </dd>

    <dt>Image Downsampling</dt>
    <dd>Suppose we want to downsample all web images, and have filters
    for GIF, JPEG and PNG.
    <div class="example"><p><code>
      FilterProvider unpack jpeg_unpack Content-Type $image/jpeg<br />
      FilterProvider unpack gif_unpack Content-Type $image/gif<br />
      FilterProvider unpack png_unpack Content-Type $image/png<br />
      <br />
      FilterProvider downsample downsample_filter Content-Type $image<br />
      FilterProtocol downsample "change=yes"<br />
      <br />
      FilterProvider repack jpeg_pack Content-Type $image/jpeg<br />
      FilterProvider repack gif_pack Content-Type $image/gif<br />
      FilterProvider repack png_pack Content-Type $image/png<br />
      &lt;Location /image-filter&gt;<br />
      <span class="indent">
        FilterChain unpack downsample repack<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>
    </dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="protocol" id="protocol">Protocol Handling</a></h2>
    <p>Historically, each filter is responsible for ensuring that whatever
    changes it makes are correctly represented in the HTTP response headers,
    and that it does not run when it would make an illegal change.  This
    imposes a burden on filter authors to re-implement some common
    functionality in every filter:</p>

    <ul>
    <li>Many filters will change the content, invalidating existing content
    tags, checksums, hashes, and lengths.</li>

    <li>Filters that require an entire, unbroken response in input need to
    ensure they don't get byteranges from a backend.</li>

    <li>Filters that transform output in a filter need to ensure they don't
    violate a <code>Cache-Control: no-transform</code> header from the
    backend.</li>

    <li>Filters may make responses uncacheable.</li>
    </ul>

    <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> aims to offer generic handling of these
    details of filter implementation, reducing the complexity required of
    content filter modules. This is work-in-progress; the
    <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code> implements
    some of this functionality for back-compatibility with Apache 2.0
    modules.  For httpd 2.1 and later, the
    <code>ap_register_output_filter_protocol</code> and
    <code>ap_filter_protocol</code> API enables filter modules to
    declare their own behaviour.</p>

    <p>At the same time, <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> should not interfere
    with a filter that wants to handle all aspects of the protocol.  By
    default (i.e. in the absence of any <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code> directives), <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>
    will leave the headers untouched.</p>

    <p>At the time of writing, this feature is largely untested,
    as modules in common use are designed to work with 2.0.
    Modules using it should test it carefully.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilterChain" id="FilterChain">FilterChain</a> <a name="filterchain" id="filterchain">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure the filter chain</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FilterChain [+=-@!]<var>filter-name</var> <var>...</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
</table>
    <p>This configures an actual filter chain, from declared filters.
    <code class="directive">FilterChain</code> takes any number of arguments,
    each optionally preceded with a single-character control that
    determines what to do:</p>

    <dl>
    <dt><code>+<var>filter-name</var></code></dt>
    <dd>Add <var>filter-name</var> to the end of the filter chain</dd>

    <dt><code>@<var>filter-name</var></code></dt>
    <dd>Insert <var>filter-name</var> at the start of the filter chain</dd>

    <dt><code>-<var>filter-name</var></code></dt>
    <dd>Remove <var>filter-name</var> from the filter chain</dd>

    <dt><code>=<var>filter-name</var></code></dt>
    <dd>Empty the filter chain and insert <var>filter-name</var></dd>

    <dt><code>!</code></dt>
    <dd>Empty the filter chain</dd>

    <dt><code><var>filter-name</var></code></dt>
    <dd>Equivalent to <code>+<var>filter-name</var></code></dd>
    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilterDeclare" id="FilterDeclare">FilterDeclare</a> <a name="filterdeclare" id="filterdeclare">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Declare a smart filter</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FilterDeclare <var>filter-name</var> <var>[type]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
</table>
    <p>This directive declares an output filter together with a
    header or environment variable that will determine runtime
    configuration.  The first argument is a <var>filter-name</var>
    for use in <code class="directive"><a href="#filterprovider">FilterProvider</a></code>,
    <code class="directive"><a href="#filterchain">FilterChain</a></code> and
    <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code> directives.</p>

    <p>The final (optional) argument
    is the type of filter, and takes values of <code>ap_filter_type</code>
    - namely <code>RESOURCE</code> (the default), <code>CONTENT_SET</code>,
    <code>PROTOCOL</code>, <code>TRANSCODE</code>, <code>CONNECTION</code>
    or <code>NETWORK</code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilterProtocol" id="FilterProtocol">FilterProtocol</a> <a name="filterprotocol" id="filterprotocol">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Deal with correct HTTP protocol handling</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FilterProtocol <var>filter-name</var> [<var>provider-name</var>]
    <var>proto-flags</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
</table>
    <p>This directs <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> to deal with ensuring the
    filter doesn't run when it shouldn't, and that the HTTP response
    headers are correctly set taking into account the effects of the
    filter.</p>

    <p>There are two forms of this directive.  With three arguments, it
    applies specifically to a <var>filter-name</var> and a
    <var>provider-name</var> for that filter.
    With two arguments it applies to a <var>filter-name</var> whenever the
    filter runs <em>any</em> provider.</p>

    <p><var>proto-flags</var> is one or more of</p>

    <dl>
    <dt><code>change=yes</code></dt>
    <dd>The filter changes the content, including possibly the content
    length</dd>

    <dt><code>change=1:1</code></dt>
    <dd>The filter changes the content, but will not change the content
    length</dd>

    <dt><code>byteranges=no</code></dt>
    <dd>The filter cannot work on byteranges and requires complete input</dd>

    <dt><code>proxy=no</code></dt>
    <dd>The filter should not run in a proxy context</dd>

    <dt><code>proxy=transform</code></dt>
    <dd>The filter transforms the response in a manner incompatible with
    the HTTP <code>Cache-Control: no-transform</code> header.</dd>

    <dt><code>cache=no</code></dt>
    <dd>The filter renders the output uncacheable (eg by introducing randomised
    content changes)</dd>
    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilterProvider" id="FilterProvider">FilterProvider</a> <a name="filterprovider" id="filterprovider">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Register a content filter</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FilterProvider <var>filter-name</var> <var>provider-name</var>
 [req|resp|env]=<var>dispatch</var> <var>match</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
</table>
    <p>This directive registers a <em>provider</em> for the smart filter.
    The provider will be called if and only if the <var>match</var> declared
    here matches the value of the header or environment variable declared
    as <var>dispatch</var>.</p>

    <p>
    <var>provider-name</var> must have been registered by loading
    a module that registers the name with
    <code>ap_register_output_filter</code>.

    </p>

    <p>The <var>dispatch</var> argument is a string with optional
    <code>req=</code>, <code>resp=</code> or <code>env=</code> prefix
    causing it to dispatch on (respectively) the request header, response
    header, or environment variable named.  In the absence of a
    prefix, it defaults to a response header.  A special case is the
    word <code>handler</code>, which causes <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>
    to dispatch on the content handler.</p>

    <p>The <var>match</var> argument specifies a match that will be applied to
    the filter's <var>dispatch</var> criterion.  The <var>match</var> may be
    a string match (exact match or substring), a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regex</a>, an integer (greater, lessthan or equals), or
    unconditional.  The first characters of the <var>match</var> argument
    determines this:</p>

    <p><strong>First</strong>, if the first character is an exclamation mark
    (<code>!</code>), this reverses the rule, so the provider will be used
    if and only if the match <em>fails</em>.</p>

    <p><strong>Second</strong>, it interprets the first character excluding
    any leading <code>!</code> as follows:</p>

    <table class="bordered"><tr class="header"><th>Character</th><th>Description</th></tr>
<tr><td><em>(none)</em></td><td>exact match</td></tr>
<tr class="odd"><td><code>$</code></td><td>substring match</td></tr>
<tr><td><code>/</code></td><td>regex match (delimited by a second <code>/</code>)</td></tr>
<tr class="odd"><td><code>=</code></td><td>integer equality</td></tr>
<tr><td><code>&lt;</code></td><td>integer less-than</td></tr>
<tr class="odd"><td><code>&lt;=</code></td><td>integer less-than or equal</td></tr>
<tr><td><code>&gt;</code></td><td>integer greater-than</td></tr>
<tr class="odd"><td><code>&gt;=</code></td><td>integer greater-than or equal</td></tr>
<tr><td><code>*</code></td><td>Unconditional match</td></tr>
</table>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="FilterTrace" id="FilterTrace">FilterTrace</a> <a name="filtertrace" id="filtertrace">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Get debug/diagnostic information from
    <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code></td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FilterTrace <var>filter-name</var> <var>level</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
</table>
    <p>This directive generates debug information from
    <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>.
    It is designed to help test and debug providers (filter modules), although
    it may also help with <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> itself.</p>

    <p>The debug output depends on the <var>level</var> set:</p>
    <dl>
    <dt><code>0</code> (default)</dt>
    <dd>No debug information is generated.</dd>

    <dt><code>1</code></dt>
    <dd><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> will record buckets and brigades
    passing through the filter to the error log, before the provider has
    processed them. This is similar to the information generated by
    <a href="http://apache.webthing.com/mod_diagnostics/">mod_diagnostics</a>.
    </dd>

    <dt><code>2</code> (not yet implemented)</dt>
    <dd>Will dump the full data passing through to a tempfile before the
    provider. <strong>For single-user debug only</strong>; this will not
    support concurrent hits.</dd>
    </dl>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                           mod/mod_headers.html                                                                                100644       0       0        55320 11256641270  12155  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_headers - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_headers</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Customization of HTTP request and response
headers</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>headers_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_headers.c</td></tr></table>
<h3>Summary</h3>

    <p>This module provides directives to control and modify HTTP
    request and response headers. Headers can be merged, replaced
    or removed.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#header">Header</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#requestheader">RequestHeader</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#order">Order of Processing</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#early">Early and Late Processing</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="order" id="order">Order of Processing</a></h2>

    <p>The directives provided by <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> can
    occur almost anywhere within the server configuration, and can be
    limited in scope by enclosing them in <a href="../sections.html">configuration sections</a>.</p>

    <p>Order of processing is important and is affected both by the
    order in the configuration file and by placement in <a href="../sections.html#mergin">configuration sections</a>. These
    two directives have a different effect if reversed:</p>

    <div class="example"><p><code>
      RequestHeader append MirrorID "mirror 12"<br />
      RequestHeader unset MirrorID
    </code></p></div>

    <p>This way round, the <code>MirrorID</code> header is not set. If
    reversed, the MirrorID header is set to "mirror 12".</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="early" id="early">Early and Late Processing</a></h2>
    <p><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> can be applied either early or late
    in the request.  The normal mode is late, when Request Headers are
    set immediately before running the content generator and Response
    Headers just as the response is sent down the wire.  Always use
    Late mode in an operational server.</p>

    <p>Early mode is designed as a test/debugging aid for developers.
    Directives defined using the <code>early</code> keyword are set
    right at the beginning of processing the request.  This means
    they can be used to simulate different requests and set up test
    cases, but it also means that headers may be changed at any time
    by other modules before generating a Response.</p>

    <p>Because early directives are processed before the request path's
    configuration is traversed, early headers can only be set in a
    main server or virtual host context.  Early directives cannot depend
    on a request path, so they will fail in contexts such as
    <code>&lt;Directory&gt;</code> or <code>&lt;Location&gt;</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>

    <ol>
      <li>
        Copy all request headers that begin with "TS" to the
        response headers:

        <div class="example"><p><code>
          Header echo ^TS
        </code></p></div>
      </li>

      <li>
        Add a header, <code>MyHeader</code>, to the response including a
        timestamp for when the request was received and how long it
        took to begin serving the request. This header can be used by
        the client to intuit load on the server or in isolating
        bottlenecks between the client and the server.

        <div class="example"><p><code>
          Header set MyHeader "%D %t"
        </code></p></div>

        <p>results in this header being added to the response:</p>

        <div class="example"><p><code>
          MyHeader: D=3775428 t=991424704447256
        </code></p></div>
      </li>

      <li>
        Say hello to Joe

        <div class="example"><p><code>
          Header set MyHeader "Hello Joe. It took %D microseconds \<br />
          for Apache to serve this request."
        </code></p></div>

        <p>results in this header being added to the response:</p>

        <div class="example"><p><code>
          MyHeader: Hello Joe. It took D=3775428 microseconds for Apache
          to serve this request.
        </code></p></div>
      </li>

      <li>
        Conditionally send <code>MyHeader</code> on the response if and
        only if header <code>MyRequestHeader</code> is present on the request.
        This is useful for constructing headers in response to some client
        stimulus. Note that this example requires the services of the
        <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> module.

        <div class="example"><p><code>
          SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader<br />
          Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
        </code></p></div>

        <p>If the header <code>MyRequestHeader: myvalue</code> is present on
        the HTTP request, the response will contain the following header:</p>

        <div class="example"><p><code>
          MyHeader: D=3775428 t=991424704447256 mytext
        </code></p></div>
      </li>

      <li>
        Enable DAV to work with Apache running HTTP through SSL hardware
        (<a href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">problem
        description</a>) by replacing <var>https:</var> with
        <var>http:</var> in the <var>Destination</var> header:

        <div class="example"><p><code>
          RequestHeader edit Destination ^https: http: early
        </code></p></div>
      </li>

      <li>
        Set the same header value under multiple non-exclusive conditions,
        but do not duplicate the value in the final header.
        If all of the following conditions applied to a request (i.e.,
        if the <code>CGI</code>, <code>NO_CACHE</code> and
        <code>NO_STORE</code> environment variables all existed for the
        request):

        <div class="example"><p><code>
          Header merge Cache-Control no-cache env=CGI<br />
          Header merge Cache-Control no-cache env=NO_CACHE<br />
          Header merge Cache-Control no-store env=NO_STORE
        </code></p></div>

        <p>then the response would contain the following header:</p>

        <div class="example"><p><code>
          Cache-Control: no-cache, no-store
        </code></p></div>

        <p>If <code>append</code> was used instead of <code>merge</code>,
        then the response would contain the following header:</p>

        <div class="example"><p><code>
          Cache-Control: no-cache, no-cache, no-store
        </code></p></div>
      </li>
    </ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP response headers</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Header [<var>condition</var>] set|append|merge|add|unset|echo|edit
<var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version
2.2.9 and later. The <code>edit</code> argument is available in version
2.2.4 and later.</td></tr>
</table>
    <p>This directive can replace, merge or remove HTTP response
    headers. The header is modified just after the content handler
    and output filters are run, allowing outgoing headers to be
    modified.</p>

    <p>The optional <var>condition</var> can be either <code>onsuccess</code>
    or <code>always</code>. It determines, which internal header table should be
    operated on. <code>onsuccess</code> stands for <code>2<var>xx</var></code>
    status codes and <code>always</code> for all status codes (including
    <code>2<var>xx</var></code>). Especially if you want to unset headers
    set by certain modules, you should try out, which table is affected.</p>

    <p>The action it performs is determined by the second
    argument. This can be one of the following values:</p>

    <dl>
    <dt><code>set</code></dt>
    <dd>The response header is set, replacing any previous header
    with this name. The <var>value</var> may be a format string.</dd>

    <dt><code>append</code></dt>
    <dd>The response header is appended to any existing header of
    the same name. When a new value is merged onto an existing
    header it is separated from the existing header with a comma.
    This is the HTTP standard way of giving a header multiple values.</dd>

    <dt><code>merge</code></dt>
    <dd>The response header is appended to any existing header of
    the same name, unless the value to be appended already appears in the
    header's comma-delimited list of values.  When a new value is merged onto
    an existing header it is separated from the existing header with a comma.
    This is the HTTP standard way of giving a header multiple values.
    Values are compared in a case sensitive manner, and after
    all format specifiers have been processed.  Values in double quotes
    are considered different from otherwise identical unquoted values.
    <em>Available in version 2.2.9 and later.</em></dd>

    <dt><code>add</code></dt>
    <dd>The response header is added to the existing set of headers,
    even if this header already exists. This can result in two
    (or more) headers having the same name. This can lead to
    unforeseen consequences, and in general <code>set</code>,
    <code>append</code> or <code>merge</code> should be used instead.</dd>

    <dt><code>unset</code></dt>
    <dd>The response header of this name is removed, if it exists.
    If there are multiple headers of the same name, all will be
    removed. <var>value</var> must be omitted.</dd>

    <dt><code>echo</code></dt>
    <dd>Request headers with this name are echoed back in the
    response headers. <var>header</var> may be a
    <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>.
    <var>value</var> must be omitted.</dd>

    <dt><code>edit</code></dt>
    <dd>If this request header exists, its value is transformed
    according to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
    search-and-replace.  The <var>value</var> argument is
    a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and
    the <var>replacement</var> is a replacement string, which may
    contain backreferences. <em>Available in version 2.2.4 and
    later.</em></dd>
    </dl>

    <p>This argument is followed by a <var>header</var> name, which
    can include the final colon, but it is not required. Case is
    ignored for <code>set</code>, <code>append</code>, <code>merge</code>,
    <code>add</code>, <code>unset</code> and <code>edit</code>.
    The <var>header</var> name for <code>echo</code>
    is case sensitive and may be a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular
    expression</a>.</p>

    <p>For <code>set</code>, <code>append</code>, <code>merge</code> and
    <code>add</code> a <var>value</var> is specified as the third argument.
    If <var>value</var>
    contains spaces, it should be surrounded by double quotes.
    <var>value</var> may be a character string, a string containing format
    specifiers or a combination of both. The following format specifiers
    are supported in <var>value</var>:</p>

    <table class="bordered"><tr class="header"><th>Format</th><th>Description</th></tr>
<tr><td><code>%%</code></td>
        <td>The percent sign</td></tr>
<tr class="odd"><td><code>%t</code></td>
        <td>The time the request was received in Universal Coordinated Time
        since the epoch (Jan. 1, 1970) measured in microseconds. The value
        is preceded by <code>t=</code>.</td></tr>
<tr><td><code>%D</code></td>
        <td>The time from when the request was received to the time the
        headers are sent on the wire. This is a measure of the duration
        of the request. The value is preceded by <code>D=</code>.
        The value is measured in microseconds.</td></tr>
<tr class="odd"><td><code>%{FOOBAR}e</code></td>
        <td>The contents of the <a href="../env.html">environment
        variable</a> <code>FOOBAR</code>.</td></tr>
<tr><td><code>%{FOOBAR}s</code></td>
        <td>The contents of the <a href="mod_ssl.html#envvars">SSL environment
        variable</a> <code>FOOBAR</code>, if <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is enabled.</td></tr>
</table>

    <div class="note"><h3>Note</h3>
      <p>The <code>%s</code> format specifier is only available in
      Apache 2.1 and later; it can be used instead of <code>%e</code>
      to avoid the overhead of enabling <code>SSLOptions
      +StdEnvVars</code>.  If <code>SSLOptions +StdEnvVars</code> must
      be enabled anyway for some other reason, <code>%e</code> will be
      more efficient than <code>%s</code>.</p>
    </div>

    <p>For <code>edit</code> there is both a <var>value</var> argument
    which is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>,
    and an additional <var>replacement</var> string.</p>

    <p>The <code class="directive">Header</code> directive may be followed by an
    an additional argument, which may be used to specify conditions under
    which the action will be taken, or may be the keyword <code>early</code>
    to specify <a href="#early">early processing</a>. If the
    <a href="../env.html">environment variable</a> specified in the
    <code>env=<var>...</var></code> argument exists (or if the environment
    variable does not exist and <code>env=!<var>...</var></code> is specified)
    then the action specified by the <code class="directive">Header</code> directive
    will take effect. Otherwise, the directive will have no effect
    on the request.</p>

    <p>Except in <a href="#early">early</a> mode, the
    <code class="directive">Header</code> directives are processed just
    before the response is sent to the network. These means that it is
    possible to set and/or override most headers, except for those headers
    added by the header filter.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP request headers</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RequestHeader set|append|merge|add|unset|edit <var>header</var>
[<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version
2.2.9 and later. The <code>edit</code> argument is available in version
2.2.4 and later.</td></tr>
</table>
    <p>This directive can replace, merge, change or remove HTTP request
    headers. The header is modified just before the content handler
    is run, allowing incoming headers to be modified. The action it
    performs is determined by the first argument. This can be one
    of the following values:</p>

    <dl>
    <dt><code>set</code></dt>
    <dd>The request header is set, replacing any previous header
    with this name</dd>

    <dt><code>append</code></dt>
    <dd>The request header is appended to any existing header of the
    same name. When a new value is merged onto an existing header
    it is separated from the existing header with a comma. This
    is the HTTP standard way of giving a header multiple
    values.</dd>

    <dt><code>merge</code></dt>
    <dd>The response header is appended to any existing header of
    the same name, unless the value to be appended already appears in the
    existing header's comma-delimited list of values.  When a new value is
    merged onto an existing header it is separated from the existing header
    with a comma.  This is the HTTP standard way of giving a header multiple
    values.  Values are compared in a case sensitive manner, and after
    all format specifiers have been processed.  Values in double quotes
    are considered different from otherwise identical unquoted values.
    <em>Available in version 2.2.9 and later.</em></dd>

    <dt><code>add</code></dt>
    <dd>The request header is added to the existing set of headers,
    even if this header already exists. This can result in two
    (or more) headers having the same name. This can lead to
    unforeseen consequences, and in general <code>set</code>,
    <code>append</code> or <code>merge</code> should be used instead.</dd>

    <dt><code>unset</code></dt>
    <dd>The request header of this name is removed, if it exists. If
    there are multiple headers of the same name, all will be removed.
    <var>value</var> must be omitted.</dd>

    <dt><code>edit</code></dt>
    <dd>If this request header exists, its value is transformed
    according to a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
    search-and-replace.  The <var>value</var> argument is
    a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>, and
    the <var>replacement</var> is a replacement string, which may
    contain backreferences. <em>Available in version 2.2.4 and
    later</em>.</dd>
    </dl>

    <p>This argument is followed by a header name, which can
    include the final colon, but it is not required. Case is
    ignored. For <code>set</code>, <code>append</code>, <code>merge</code> and
    <code>add</code> a <var>value</var> is given as the third argument. If a
    <var>value</var> contains spaces, it should be surrounded by double
    quotes. For <code>unset</code>, no <var>value</var> should be given.
    <var>value</var> may be a character string, a string containing format
    specifiers or a combination of both. The supported format specifiers
    are the same as for the <code class="directive"><a href="#header">Header</a></code>,
    please have a look there for details.  For <code>edit</code> both
    a <var>value</var> and a <var>replacement</var> are required, and are
    a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a> and a
    replacement string respectively.</p>

    <p>The <code class="directive">RequestHeader</code> directive may be followed by
    an additional argument, which may be used to specify conditions under
    which the action will be taken, or may be the keyword <code>early</code>
    to specify <a href="#early">early processing</a>. If the
    <a href="../env.html">environment
    variable</a> specified in the <code>env=<var>...</var></code> argument
    exists (or if the environment variable does not exist and
    <code>env=!<var>...</var></code> is specified) then the action specified
    by the <code class="directive">RequestHeader</code> directive will take effect.
    Otherwise, the directive will have no effect on the request.</p>

    <p>Except in <a href="#early">early</a> mode, the
    <code class="directive">RequestHeader</code> directive is processed
    just before the request is run by its handler in the fixup phase.
    This should allow headers generated by the browser, or by Apache
    input filters to be overridden or modified.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                mod/mod_ident.html                                                                                  100644       0       0        14315 11256641270  11644  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_ident - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_ident</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>RFC 1413 ident lookups</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>ident_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_ident.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module queries an <a href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a> compatible daemon on a remote host to look up the owner of
    a connection.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#identitycheck">IdentityCheck</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#identitychecktimeout">IdentityCheckTimeout</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IdentityCheck" id="IdentityCheck">IdentityCheck</a> <a name="identitycheck" id="identitycheck">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables logging of the RFC 1413 identity of the remote
user</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IdentityCheck On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>IdentityCheck Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ident</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Moved out of core in Apache 2.1</td></tr>
</table>
    <p>This directive enables <a href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a>-compliant logging of the remote user name for each
    connection, where the client machine runs identd or something similar.
    This information is logged in the access log using the <code>%...l</code>
    <a href="mod_log_config.html#formats">format string</a>.</p>

    <div class="note">
      The information should not be trusted in any way except for
      rudimentary usage tracking.
    </div>

    <p>Note that this can cause serious latency problems accessing
    your server since every request requires one of these lookups
    to be performed. When firewalls or proxy servers are involved,
    each lookup might possibly fail and add a latency duration as
    defined by the <code class="directive"><a href="#identitychecktimeout">IdentityCheckTimeout</a></code> directive to each hit. So in
    general this is not very useful on public servers accessible from
    the Internet.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IdentityCheckTimeout" id="IdentityCheckTimeout">IdentityCheckTimeout</a> <a name="identitychecktimeout" id="identitychecktimeout">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the timeout duration for ident requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IdentityCheckTimeout <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>IdentityCheckTimeout 30</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ident</td></tr>
</table>
    <p>This directive specifies the timeout duration of an ident
    request. The default value of 30 seconds is recommended by <a href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a>, mainly because
    of possible network latency. However, you may want to adjust the
    timeout value according to your local network speed.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                   mod/mod_imagemap.html                                                                               100644       0       0        43020 11256641270  12314  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_imagemap - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_imagemap</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Server-side imagemap processing</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>imagemap_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_imagemap.c</td></tr></table>
<h3>Summary</h3>

    <p>This module processes <code>.map</code> files, thereby
    replacing the functionality of the <code>imagemap</code> CGI
    program. Any directory or document type configured to use the
    handler <code>imap-file</code> (using either 
    <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> or
    <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>)
    will be processed by this module.</p>

    <p>The following directive will activate files ending with
    <code>.map</code> as imagemap files:</p>

    <div class="example"><p><code>AddHandler imap-file map</code></p></div>

    <p>Note that the following is still supported:</p>

    <div class="example"><p><code>AddType application/x-httpd-imap map</code></p></div>

    <p>However, we are trying to phase out "magic MIME types" so we
    are deprecating this method.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#imapbase">ImapBase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#imapdefault">ImapDefault</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#imapmenu">ImapMenu</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#features">New Features</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#imapfile">Imagemap File</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#example">Example Mapfile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#referencing">Referencing your mapfile</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="features" id="features">New Features</a></h2>

    <p>The imagemap module adds some new features that were not
    possible with previously distributed imagemap programs.</p>

    <ul>
      <li>URL references relative to the Referer: information.</li>

      <li>Default <code>&lt;base&gt;</code> assignment through a new map
      directive <code>base</code>.</li>

      <li>No need for <code>imagemap.conf</code> file.</li>

      <li>Point references.</li>

      <li>Configurable generation of imagemap menus.</li>
    </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="imapfile" id="imapfile">Imagemap File</a></h2>

    <p>The lines in the imagemap files can have one of several
    formats:</p>

    <div class="example"><p><code>
      directive value [<var>x</var>,<var>y</var> ...]<br />
      directive value "<var>Menu text</var>" [<var>x</var>,<var>y</var>
      ...]<br />
      directive value <var>x</var>,<var>y</var> ... "<var>Menu text</var>"
    </code></p></div>

    <p>The directive is one of <code>base</code>,
    <code>default</code>, <code>poly</code>, <code>circle</code>,
    <code>rect</code>, or <code>point</code>. The value is an
    absolute or relative URL, or one of the special values listed
    below. The coordinates are <code><var>x</var>,<var>y</var></code>
    pairs separated by whitespace. The quoted text is used as the text of
    the link if a imagemap menu is generated. Lines beginning with '#' are
    comments.</p>

    <h3><a name="imapfile.directives" id="imapfile.directives">Imagemap File Directives</a></h3>
      <p>There are six directives allowed in the imagemap file. The
      directives can come in any order, but are processed in the
      order they are found in the imagemap file.</p>

      <dl>
      <dt><code>base</code> Directive</dt>

      <dd><p>Has the effect of <code>&lt;base href="<var>value</var>"&gt;
      </code>. The non-absolute URLs of the map-file are taken relative
      to this value. The <code>base</code> directive overrides
      <code class="directive"><a href="#imapbase">ImapBase</a></code> as set in a
      <code>.htaccess</code> file or in the server configuration files.
      In the absence of an <code class="directive">ImapBase</code> configuration
      directive, <code>base</code> defaults to
      <code>http://server_name/</code>.</p>
      <p><code>base_uri</code> is synonymous with <code>base</code>.
      Note that a trailing slash on the URL is significant.</p></dd>

      <dt><code>default</code> Directive</dt>

      <dd>The action taken if the coordinates given do not fit any
      of the <code>poly</code>, <code>circle</code> or
      <code>rect</code> directives, and there are no
      <code>point</code> directives. Defaults to <code>nocontent</code>
      in the absence of an <code class="directive"><a href="#imapdefault">ImapDefault</a></code> configuration setting, causing a status
      code of <code>204 No Content</code> to be returned. The client
      should keep the same page displayed.</dd>

      <dt><code>poly</code> Directive</dt>

      <dd>Takes three to one-hundred points, and is obeyed if the
      user selected coordinates fall within the polygon defined by
      these points.</dd>

      <dt><code>circle</code></dt>

      <dd>Takes the center coordinates of a circle and a point on
      the circle. Is obeyed if the user selected point is with the
      circle.</dd>

      <dt><code>rect</code> Directive</dt>

      <dd>Takes the coordinates of two opposing corners of a
      rectangle. Obeyed if the point selected is within this
      rectangle.</dd>

      <dt><code>point</code> Directive</dt>

      <dd>Takes a single point. The point directive closest to the
      user selected point is obeyed if no other directives are
      satisfied. Note that <code>default</code> will not be
      followed if a <code>point</code> directive is present and
      valid coordinates are given.</dd>
      </dl>
    

    <h3><a name="imapfile.values" id="imapfile.values">Values</a></h3>

      <p>The values for each of the directives can be any of the
      following:</p>

      <dl>
      <dt>a URL</dt>

      <dd><p>The URL can be relative or absolute URL. Relative URLs
      can contain '..' syntax and will be resolved relative to the
      <code>base</code> value.</p>
      <p><code>base</code> itself will not be resolved according to the
      current value. A statement <code>base mailto:</code> will
      work properly, though.</p></dd>

      <dt><code>map</code></dt>

      <dd>Equivalent to the URL of the imagemap file itself. No
      coordinates are sent with this, so a menu will be generated
      unless <code class="directive"><a href="#imapmenu">ImapMenu</a></code> is set to
      <code>none</code>.</dd>

      <dt><code>menu</code></dt>
      <dd>Synonymous with <code>map</code>.</dd>

      <dt><code>referer</code></dt>

      <dd>Equivalent to the URL of the referring document. Defaults
      to <code>http://servername/</code> if no <code>Referer:</code>
      header was present.</dd>

      <dt><code>nocontent</code></dt>

      <dd>Sends a status code of <code>204 No Content</code>,
      telling the client to keep the same page displayed. Valid for
      all but <code>base</code>.</dd>

      <dt><code>error</code></dt>

      <dd>Fails with a <code>500 Server Error</code>. Valid for all
      but <code>base</code>, but sort of silly for anything but
      <code>default</code>.</dd>
      </dl>
    

    <h3><a name="imapfile.coords" id="imapfile.coords">Coordinates</a></h3>

      <dl>
      <dt><code>0,0 200,200</code></dt>

      <dd>A coordinate consists of an <var>x</var> and a <var>y</var>
      value separated by a comma. The coordinates are separated
      from each other by whitespace. To accommodate the way Lynx
      handles imagemaps, should a user select the coordinate
      <code>0,0</code>, it is as if no coordinate had been
      selected.</dd>
      </dl>

    

    <h3><a name="imapfile.quotedtext" id="imapfile.quotedtext">Quoted Text</a></h3>

      <dl>
      <dt><code>"<var>Menu Text</var>"</code></dt>

      <dd><p>After the value or after the coordinates, the line
      optionally may contain text within double quotes. This string
      is used as the text for the link if a menu is
      generated:</p>

      <div class="example"><p><code>
        &lt;a href="http://example.com/"&gt;<var>Menu text</var>&lt;/a&gt;
      </code></p></div>

      <p>If no quoted text is present, the name of the link will be
      used as the text:</p>

      <div class="example"><p><code>
        &lt;a href="http://example.com/"&gt;http://example.com&lt;/a&gt;
      </code></p></div>

      <p>If you want to use double quotes within this text, you have to
      write them as <code>&amp;quot;</code>.</p></dd>
      </dl>

    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Example Mapfile</a></h2>

    <div class="example"><p><code>
      #Comments are printed in a 'formatted' or 'semiformatted' menu.<br />
      #And can contain html tags. &lt;hr&gt;<br />
      base referer<br />
      poly map "Could I have a menu, please?" 0,0 0,10 10,10 10,0<br />
      rect .. 0,0 77,27 "the directory of the referer"<br />
      circle http://www.inetnebr.example.com/lincoln/feedback/ 195,0 305,27<br />
      rect another_file "in same directory as referer" 306,0 419,27<br />
      point http://www.zyzzyva.example.com/ 100,100<br />
      point http://www.tripod.example.com/ 200,200<br />
      rect mailto:nate@tripod.example.com 100,150 200,0 "Bugs?"<br />
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="referencing" id="referencing">Referencing your mapfile</a></h2>

    <div class="example"><h3>HTML example</h3><p><code>
      &lt;a href="/maps/imagemap1.map"&gt;<br />
      <span class="indent">
        &lt;img ismap src="/images/imagemap1.gif"&gt;<br />
      </span>
      &lt;/a&gt;
    </code></p></div>

    <div class="example"><h3>XHTML example</h3><p><code>
      &lt;a href="/maps/imagemap1.map"&gt;<br />
      <span class="indent">
        &lt;img ismap="ismap" src="/images/imagemap1.gif" /&gt;<br />
      </span>
      &lt;/a&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ImapBase" id="ImapBase">ImapBase</a> <a name="imapbase" id="imapbase">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Default <code>base</code> for imagemap files</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ImapBase map|referer|<var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ImapBase http://servername/</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_imagemap</td></tr>
</table>
    <p>The <code class="directive">ImapBase</code> directive sets the default
    <code>base</code> used in the imagemap files. Its value is
    overridden by a <code>base</code> directive within the imagemap
    file. If not present, the <code>base</code> defaults to
    <code>http://<var>servername</var>/</code>.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ImapDefault" id="ImapDefault">ImapDefault</a> <a name="imapdefault" id="imapdefault">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Default action when an imagemap is called with coordinates
that are not explicitly mapped</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ImapDefault error|nocontent|map|referer|<var>URL</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ImapDefault nocontent</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_imagemap</td></tr>
</table>
    <p>The <code class="directive">ImapDefault</code> directive sets the default
    <code>default</code> used in the imagemap files. Its value is
    overridden by a <code>default</code> directive within the
    imagemap file. If not present, the <code>default</code> action
    is <code>nocontent</code>, which means that a <code>204 No
    Content</code> is sent to the client. In this case, the client
    should continue to display the original page.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ImapMenu" id="ImapMenu">ImapMenu</a> <a name="imapmenu" id="imapmenu">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Action if no coordinates are given when calling
an imagemap</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ImapMenu none|formatted|semiformatted|unformatted</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_imagemap</td></tr>
</table>
    <p>The <code class="directive">ImapMenu</code> directive determines the
    action taken if an imagemap file is called without valid
    coordinates.</p>

    <dl>
      <dt><code>none</code></dt>
      <dd>If ImapMenu is <code>none</code>, no menu is generated,
      and the <code>default</code> action is performed.</dd>

      <dt><code>formatted</code></dt>
      <dd>A <code>formatted</code> menu is the simplest menu.
      Comments in the imagemap file are ignored. A level one header
      is printed, then an hrule, then the links each on a separate
      line. The menu has a consistent, plain look close to that of
      a directory listing.</dd>

      <dt><code>semiformatted</code></dt>
      <dd>In the <code>semiformatted</code> menu, comments are
      printed where they occur in the imagemap file. Blank lines
      are turned into HTML breaks. No header or hrule is printed,
      but otherwise the menu is the same as a
      <code>formatted</code> menu.</dd>

      <dt><code>unformatted</code></dt>
      <dd>Comments are printed, blank lines are ignored. Nothing is
      printed that does not appear in the imagemap file. All breaks
      and headers must be included as comments in the imagemap
      file. This gives you the most flexibility over the appearance
      of your menus, but requires you to treat your map files as
      HTML instead of plaintext.</dd>
    </dl>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                mod/mod_include.html                                                                                100644       0       0       126034 11256641270  12206  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_include - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_include</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Server-parsed html documents (Server Side Includes)</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>include_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_include.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Implemented as an output filter since Apache
2.0</td></tr></table>
<h3>Summary</h3>

    <p>This module provides a filter which will process files
    before they are sent to the client. The processing is
    controlled by specially formatted SGML comments, referred to as
    <dfn>elements</dfn>. These elements allow conditional text, the
    inclusion of other files or programs, as well as the setting and
    printing of environment variables.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#ssienableaccess">SSIEnableAccess</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssiendtag">SSIEndTag</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssierrormsg">SSIErrorMsg</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssistarttag">SSIStartTag</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssitimeformat">SSITimeFormat</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssiundefinedecho">SSIUndefinedEcho</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#xbithack">XBitHack</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#enabling">Enabling Server-Side Includes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#pathinfo">PATH_INFO with Server Side Includes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#elements">Basic Elements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#includevars">Include Variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#substitution">Variable Substitution</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flowctrl">Flow Control Elements</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
<li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
<li><a href="../filter.html">Filters</a></li>
<li><a href="../howto/ssi.html">SSI Tutorial</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enabling" id="enabling">Enabling Server-Side Includes</a></h2>
    

    <p>Server Side Includes are implemented by the
    <code>INCLUDES</code> <a href="../filter.html">filter</a>. If
    documents containing server-side include directives are given
    the extension .shtml, the following directives will make Apache
    parse them and assign the resulting document the mime type of
    <code>text/html</code>:</p>

    <div class="example"><p><code>
      AddType text/html .shtml<br />
      AddOutputFilter INCLUDES .shtml
    </code></p></div>

    <p>The following directive must be given for the directories
    containing the shtml files (typically in a
    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section,
    but this directive is also valid in <code>.htaccess</code> files if
    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> <code>Options</code>
    is set):</p>

    <div class="example"><p><code>
      Options +Includes
    </code></p></div>

    <p>For backwards compatibility, the <code>server-parsed</code>
    <a href="../handler.html">handler</a> also activates the
    INCLUDES filter. As well, Apache will activate the INCLUDES
    filter for any document with mime type
    <code>text/x-server-parsed-html</code> or
    <code>text/x-server-parsed-html3</code> (and the resulting
    output will have the mime type <code>text/html</code>).</p>

    <p>For more information, see our <a href="../howto/ssi.html">Tutorial on Server Side Includes</a>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="pathinfo" id="pathinfo">PATH_INFO with Server Side Includes</a></h2>
    

    <p>Files processed for server-side includes no longer accept
    requests with <code>PATH_INFO</code> (trailing pathname information)
    by default.  You can use the <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> directive to
    configure the server to accept requests with <code>PATH_INFO</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="elements" id="elements">Basic Elements</a></h2>
    <p>The document is parsed as an HTML document, with special
    commands embedded as SGML comments. A command has the syntax: </p>

    <div class="example"><p><code>
      &lt;!--#<var>element</var> <var>attribute</var>=<var>value</var>
      <var>attribute</var>=<var>value</var> ... --&gt;
    </code></p></div>

    <p>The value will often be enclosed in double quotes, but single
    quotes (<code>'</code>) and backticks (<code>`</code>) are also
    possible. Many commands only allow a single attribute-value pair.
    Note that the comment terminator (<code>--&gt;</code>) should be
    preceded by whitespace to ensure that it isn't considered part of
    an SSI token. Note that the leading <code>&lt;!--#</code> is <em>one</em>
    token and may not contain any whitespaces.</p>

    <p>The allowed elements are listed in the following table:</p>

    <table class="bordered">
    <tr><th>Element</th><th>Description</th></tr>
    <tr><td><code><a href="#element.config">config</a></code></td>
        <td>configure output formats</td></tr>
    <tr><td><code><a href="#element.echo">echo</a></code></td>
        <td>print variables</td></tr>
    <tr><td><code><a href="#element.exec">exec</a></code></td>
        <td>execute external programs</td></tr>
    <tr><td><code><a href="#element.fsize">fsize</a></code></td>
        <td>print size of a file</td></tr>
    <tr><td><code><a href="#element.flastmod">flastmod</a></code></td>
        <td>print last modification time of a file</td></tr>
    <tr><td><code><a href="#element.include">include</a></code></td>
        <td>include a file</td></tr>
    <tr><td><code><a href="#element.printenv">printenv</a></code></td>
        <td>print all available variables</td></tr>
    <tr><td><code><a href="#element.set">set</a></code></td>
        <td>set a value of a variable</td></tr>
    </table>

    <p>SSI elements may be defined by modules other than
    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. In fact, the <code><a href="#element.exec">exec</a></code> element is provided by
    <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, and will only be available if this
    module is loaded.</p>

    <h3><a name="element.config" id="element.config">The config Element</a></h3>
      <p>This command controls various aspects of the parsing. The
      valid attributes are:</p>

      <dl>
      <dt><code>echomsg</code> (<em>Apache 2.1 and later</em>)</dt>
      <dd>The value is a message that is sent back to the
      client if the <code><a href="#element.echo">echo</a></code> element
      attempts to echo an undefined variable. This overrides any <code class="directive"><a href="#ssiundefinedecho">SSIUndefinedEcho</a></code> directives.</dd>

      <dt><code>errmsg</code></dt>
      <dd>The value is a message that is sent back to the
      client if an error occurs while parsing the
      document. This overrides any <code class="directive"><a href="#ssierrormsg">SSIErrorMsg</a></code> directives.</dd>

      <dt><code>sizefmt</code></dt>
      <dd>The value sets the format to be used when displaying
      the size of a file. Valid values are <code>bytes</code>
      for a count in bytes, or <code>abbrev</code> for a count
      in Kb or Mb as appropriate, for example a size of 1024 bytes
      will be printed as "1K".</dd>

      <dt><code>timefmt</code></dt>
      <dd>The value is a string to be used by the
      <code>strftime(3)</code> library routine when printing
      dates.</dd>
      </dl>
     

    <h3><a name="element.echo" id="element.echo">The echo Element</a></h3>
      <p>This command prints one of the <a href="#includevars">include
      variables</a> defined below. If the variable is unset, the result is
      determined by the <code class="directive"><a href="#ssiundefinedecho">SSIUndefinedEcho</a></code> directive. Any dates printed are
      subject to the currently configured <code>timefmt</code>.</p>

      <p>Attributes:</p> 

      <dl>
      <dt><code>var</code></dt>
      <dd>The value is the name of the variable to print.</dd>

      <dt><code>encoding</code></dt>
      <dd><p>Specifies how Apache should encode special characters
      contained in the variable before outputting them. If set
      to <code>none</code>, no encoding will be done. If set to
      <code>url</code>, then URL encoding (also known as %-encoding;
      this is appropriate for use within URLs in links, etc.) will be
      performed. At the start of an <code>echo</code> element,
      the default is set to <code>entity</code>, resulting in entity
      encoding (which is appropriate in the context of a block-level
      HTML element, <em>e.g.</em> a paragraph of text). This can be
      changed by adding an <code>encoding</code> attribute, which will
      remain in effect until the next <code>encoding</code> attribute
      is encountered or the element ends, whichever comes first.</p>

      <p>The <code>encoding</code> attribute must <em>precede</em> the
      corresponding <code>var</code> attribute to be effective, and 
      only special characters as defined in the ISO-8859-1 character
      encoding will be encoded. This encoding process may not have the
      desired result if a different character encoding is in use.</p>

      <div class="warning">
        In order to avoid cross-site scripting issues, you should
        <em>always</em> encode user supplied data.
      </div>
      </dd>
      </dl>
     

    <h3><a name="element.exec" id="element.exec">The exec Element</a></h3>
      <p>The <code>exec</code> command executes a given shell command or
      CGI script. It requires <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> to be present
      in the server. If <code class="directive"><a href="../mod/core.html#options">Options</a></code>
      <code>IncludesNOEXEC</code> is set, this command is completely
      disabled. The valid attributes are:</p>

      <dl>
      <dt><code>cgi</code></dt>
      <dd><p>The value specifies a (%-encoded) URL-path to
      the CGI script. If the path does not begin with a slash (/),
      then it is taken to be relative to the current
      document. The document referenced by this path is
      invoked as a CGI script, even if the server would not
      normally recognize it as such. However, the directory
      containing the script must be enabled for CGI scripts
      (with <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
      or <code class="directive"><a href="../mod/core.html#options">Options</a></code>
      <code>ExecCGI</code>).</p>

      <p>The CGI script is given the <code>PATH_INFO</code> and query
      string (<code>QUERY_STRING</code>) of the original request from the
      client; these <em>cannot</em> be specified in the URL path. The
      include variables will be available to the script in addition to
      the standard <a href="mod_cgi.html">CGI</a> environment.</p>

      <div class="example"><h3>Example</h3><p><code>
        &lt;!--#exec cgi="/cgi-bin/example.cgi" --&gt;
      </code></p></div>

      <p>If the script returns a <code>Location:</code> header instead of
      output, then this will be translated into an HTML anchor.</p>

      <p>The <code><a href="#includevirtual">include virtual</a></code>
      element should be used in preference to <code>exec cgi</code>. In
      particular, if you need to pass additional arguments to a CGI program,
      using the query string, this cannot be done with <code>exec
      cgi</code>, but can be done with <code>include virtual</code>, as
      shown here:</p>

      <div class="example"><p><code>
        &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
      </code></p></div>
      </dd>

      <dt><code>cmd</code></dt>
      <dd><p>The server will execute the given string using
      <code>/bin/sh</code>. The <a href="#includevars">include variables</a> are available to the command, in addition
      to the usual set of CGI variables.</p>

      <p>The use of <code><a href="#includevirtual">#include virtual</a></code> is almost always prefered to using
      either <code>#exec cgi</code> or <code>#exec cmd</code>. The former
      (<code>#include virtual</code>) uses the standard Apache sub-request
      mechanism to include files or scripts. It is much better tested and
      maintained.</p>

      <p>In addition, on some platforms, like Win32, and on unix when
      using <a href="../suexec.html">suexec</a>, you cannot pass arguments
      to a command in an <code>exec</code> directive, or otherwise include
      spaces in the command. Thus, while the following will work under a
      non-suexec configuration on unix, it will not produce the desired
      result under Win32, or when running suexec:</p>

      <div class="example"><p><code>
        &lt;!--#exec cmd="perl /path/to/perlscript arg1 arg2" --&gt;
      </code></p></div>
      </dd>
      </dl>
     

    <h3><a name="element.fsize" id="element.fsize">The fsize Element</a></h3>
      <p>This command prints the size of the specified file, subject
      to the <code>sizefmt</code> format specification. Attributes:</p>

      <dl>
      <dt><code>file</code></dt>
      <dd>The value is a path relative to the directory
      containing the current document being parsed.</dd>

      <dt><code>virtual</code></dt>
      <dd>The value is a (%-encoded) URL-path. If it does not begin with
      a slash (/) then it is taken to be relative to the current document.
      Note, that this does <em>not</em> print the size of any CGI output,
      but the size of the CGI script itself.</dd>
      </dl>
     

    <h3><a name="element.flastmod" id="element.flastmod">The flastmod Element</a></h3>
      <p>This command prints the last modification date of the
      specified file, subject to the <code>timefmt</code> format
      specification. The attributes are the same as for the
      <code><a href="#element.fsize">fsize</a></code> command.</p>
     

    <h3><a name="element.include" id="element.include">The include Element</a></h3>
      <p>This command inserts the text of another document or file
      into the parsed file. Any included file is subject to the usual
      access control. If the directory containing the parsed file has
      <a href="core.html#options">Options</a>
      <code>IncludesNOEXEC</code> set, then only documents with a text
      <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> (<code>text/plain</code>,
      <code>text/html</code> etc.) will be included. Otherwise CGI
      scripts are invoked as normal using the complete URL given in
      the command, including any query string.</p>

      <p>An attribute defines the location of the document; the
      inclusion is done for each attribute given to the include
      command. The valid attributes are:</p>

      <dl>
      <dt><code>file</code></dt>
      <dd>The value is a path relative to the directory
      containing the current document being parsed. It cannot
      contain <code>../</code>, nor can it be an absolute path.
      Therefore, you cannot include files that are outside of the
      document root, or above the current document in the directory
      structure. The <code>virtual</code> attribute should always be
      used in preference to this one.</dd>

      <dt><code><a id="includevirtual" name="includevirtual">virtual</a></code></dt>
      <dd><p>The value is a (%-encoded) URL-path. The URL cannot contain a
      scheme or hostname, only a path and an optional query string. If it
      does not begin with a slash (/) then it is taken to be relative to the
      current document.</p>

      <p>A URL is constructed from the attribute, and the output the
      server would return if the URL were accessed by the client is
      included in the parsed output. Thus included files can be nested.</p>

      <p>If the specified URL is a CGI program, the program will be
      executed and its output inserted in place of the directive in the
      parsed file. You may include a query string in a CGI url:</p>
     
      <div class="example"><p><code>
        &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
      </code></p></div>
           
      <p><code>include virtual</code> should be used in preference
      to <code>exec cgi</code> to include the output of CGI programs
      into an HTML document.</p>
      </dd>
      </dl>
     

    <h3><a name="element.printenv" id="element.printenv">The printenv Element</a></h3>
      <p>This prints out a listing of all existing variables and
      their values. Special characters are entity encoded (see the <code><a href="#element.echo">echo</a></code> element for details)
      before being output. There are no attributes.</p>

      <div class="example"><h3>Example</h3><p><code>
        &lt;!--#printenv --&gt;
      </code></p></div>
     

    <h3><a name="element.set" id="element.set">The set Element</a></h3>
      <p>This sets the value of a variable. Attributes:</p>

      <dl>
      <dt><code>var</code></dt>
      <dd>The name of the variable to set.</dd>

      <dt><code>value</code></dt>
      <dd>The value to give a variable.</dd>
      </dl>

      <div class="example"><h3>Example</h3><p><code>
        &lt;!--#set var="category" value="help" --&gt;
      </code></p></div>
     
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="includevars" id="includevars">Include Variables</a></h2>
    

    <p>In addition to the variables in the standard CGI environment,
    these are available for the <code>echo</code> command, for
    <code>if</code> and <code>elif</code>, and to any program
    invoked by the document.</p>

    <dl>
      <dt><code>DATE_GMT</code></dt>
      <dd>The current date in Greenwich Mean Time.</dd>

      <dt><code>DATE_LOCAL</code></dt>
      <dd>The current date in the local time zone.</dd>

      <dt><code>DOCUMENT_NAME</code></dt>
      <dd>The filename (excluding directories) of the document
      requested by the user.</dd>

      <dt><code>DOCUMENT_URI</code></dt>
      <dd>The (%-decoded) URL path of the document requested by the
      user. Note that in the case of nested include files, this is
      <em>not</em> the URL for the current document.  Note also that
      if the URL is modified internally (e.g. by an <code class="directive"><a href="../mod/mod_alias.html#alias">alias</a></code> or <code class="directive"><a href="../mod/mod_dir.html#directoryindex">directoryindex</a></code>), the modified
      URL is shown.</dd>

      <dt><code>LAST_MODIFIED</code></dt>
      <dd>The last modification date of the document requested by
      the user.</dd>

      <dt><code>QUERY_STRING_UNESCAPED</code></dt>
      <dd>If a query string is present, this variable contains the
      (%-decoded) query string, which is <em>escaped</em> for shell
      usage (special characters like <code>&amp;</code> etc. are
      preceded by backslashes).</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="substitution" id="substitution">Variable Substitution</a></h2>

    <p>Variable substitution is done within quoted strings in most
    cases where they may reasonably occur as an argument to an SSI
    directive. This includes the <code>config</code>,
    <code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
    <code>include</code>, <code>echo</code>, and <code>set</code>
    directives, as well as the arguments to conditional operators.
    You can insert a literal dollar sign into the string using backslash
    quoting:</p>

    <div class="example"><p><code>
      &lt;!--#if expr="$a = \$test" --&gt;
    </code></p></div>

    <p>If a variable reference needs to be substituted in the
    middle of a character sequence that might otherwise be
    considered a valid identifier in its own right, it can be
    disambiguated by enclosing the reference in braces,
    <em>a la</em> shell substitution:</p>

    <div class="example"><p><code>
      &lt;!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --&gt;
    </code></p></div>

    <p>This will result in the <code>Zed</code> variable being set
    to "<code>X_Y</code>" if <code>REMOTE_HOST</code> is
    "<code>X</code>" and <code>REQUEST_METHOD</code> is
    "<code>Y</code>".</p>

    <p>The below example will print "in foo" if the
    <code>DOCUMENT_URI</code> is <code>/foo/file.html</code>, "in bar"
    if it is <code>/bar/file.html</code> and "in neither" otherwise:</p>

    <div class="example"><p><code>
      &lt;!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' --&gt;<br />
      <span class="indent">
        in foo<br />
      </span>
      &lt;!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' --&gt;<br />
      <span class="indent">
        in bar<br />
      </span>
      &lt;!--#else --&gt;<br />
      <span class="indent">
        in neither<br />
      </span>
      &lt;!--#endif --&gt;
    </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flowctrl" id="flowctrl">Flow Control Elements</a></h2>
    

    <p>The basic flow control elements are:</p>

    <div class="example"><p><code>
      &lt;!--#if expr="<var>test_condition</var>" --&gt;<br />
      &lt;!--#elif expr="<var>test_condition</var>" --&gt;<br />
      &lt;!--#else --&gt;<br />
      &lt;!--#endif --&gt;
    </code></p></div>

    <p>The <code>if</code> element works like an if statement in a
    programming language. The test condition is evaluated and if
    the result is true, then the text until the next <code>elif</code>,
    <code>else</code> or <code>endif</code> element is included in the
    output stream.</p>

    <p>The <code>elif</code> or <code>else</code> statements are used
    to put text into the output stream if the original
    <var>test_condition</var> was false. These elements are optional.</p>

    <p>The <code>endif</code> element ends the <code>if</code> element
    and is required.</p>

    <p><var>test_condition</var> is one of the following:</p>

    <dl>
      <dt><code><var>string</var></code></dt>
      <dd>true if <var>string</var> is not empty</dd>

      <dt><code><var>-A string</var></code></dt>
      <dd><p>true if the URL represented by the string is accessible by
      configuration, false otherwise. This test only has an effect if
      <code class="directive">SSIEnableAccess</code> is on. This is useful
      where content on a page is to be hidden from users who are not
      authorized to view the URL, such as a link to that URL. Note
      that the URL is only tested for whether access would be granted,
      not whether the URL exists.</p>

      <div class="example"><h3>Example</h3><p><code>
        &lt;!--#if expr="-A /private" --&gt;<br />
        <span class="indent">
          Click &lt;a href="/private"&gt;here&lt;/a&gt; to access private
          information.<br />
        </span>
        &lt;!--#endif --&gt;
      </code></p></div>
      </dd>

      <dt><code><var>string1</var> = <var>string2</var><br />
      <var>string1</var> == <var>string2</var><br />
      <var>string1</var> != <var>string2</var></code></dt>
      
      <dd><p>Compare <var>string1</var> with <var>string2</var>. If
      <var>string2</var> has the form <code>/<var>string2</var>/</code>
      then it is treated as a regular expression. Regular expressions are
      implemented by the <a href="http://www.pcre.org">PCRE</a> engine and
      have the same syntax as those in <a href="http://www.perl.com">perl
      5</a>. Note that <code>==</code> is just an alias for <code>=</code>
      and behaves exactly the same way.</p>

      <p>If you are matching positive (<code>=</code> or <code>==</code>), you
      can capture grouped parts of the regular expression. The captured parts
      are stored in the special variables <code>$1</code> ..
      <code>$9</code>.</p>

      <div class="example"><h3>Example</h3><p><code>
        &lt;!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" --&gt;<br />
        <span class="indent">
          &lt;!--#set var="session" value="$1" --&gt;<br />
        </span>
        &lt;!--#endif --&gt;
      </code></p></div>
      </dd>

      <dt><code><var>string1</var> &lt; <var>string2</var><br />
       <var>string1</var> &lt;= <var>string2</var><br />
       <var>string1</var> &gt; <var>string2</var><br />
       <var>string1</var> &gt;= <var>string2</var></code></dt>

      <dd>Compare <var>string1</var> with <var>string2</var>. Note, that
      strings are compared <em>literally</em> (using
      <code>strcmp(3)</code>). Therefore the string "100" is less than
      "20".</dd>

      <dt><code>( <var>test_condition</var> )</code></dt>
      <dd>true if <var>test_condition</var> is true</dd>

      <dt><code>! <var>test_condition</var></code></dt>
      <dd>true if <var>test_condition</var> is false</dd>

      <dt><code><var>test_condition1</var> &amp;&amp;
        <var>test_condition2</var></code></dt>
      <dd>true if both <var>test_condition1</var> and
      <var>test_condition2</var> are true</dd>

      <dt><code><var>test_condition1</var> ||
        <var>test_condition2</var></code></dt>
      <dd>true if either <var>test_condition1</var> or
      <var>test_condition2</var> is true</dd>
    </dl>

    <p>"<code>=</code>" and "<code>!=</code>" bind more tightly than
    "<code>&amp;&amp;</code>" and "<code>||</code>". "<code>!</code>" binds
    most tightly. Thus, the following are equivalent:</p>

    <div class="example"><p><code>
      &lt;!--#if expr="$a = test1 &amp;&amp; $b = test2" --&gt;<br />
      &lt;!--#if expr="($a = test1) &amp;&amp; ($b = test2)" --&gt;
    </code></p></div>

    <p>The boolean operators <code>&amp;&amp;</code> and <code>||</code>
    share the same priority. So if you want to bind such an operator more
    tightly, you should use parentheses.</p>

    <p>Anything that's not recognized as a variable or an operator
    is treated as a string. Strings can also be quoted:
    <code>'string'</code>. Unquoted strings can't contain whitespace
    (blanks and tabs) because it is used to separate tokens such as
    variables. If multiple strings are found in a row, they are
    concatenated using blanks. So,</p>

    <div class="example"><p><code><var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var></code> results in <code><var>string1</var>&nbsp;<var>string2</var></code><br />
      <br />
      and<br />
      <br />
      <code>'<var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var>'</code> results in <code><var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var></code>.</p></div>

    <div class="note"><h3>Optimization of Boolean Expressions</h3>
      <p>If the expressions become more complex and slow down processing
      significantly, you can try to optimize them according to the
      evaluation rules:</p>
      <ul>
      <li>Expressions are evaluated from left to right</li>
      <li>Binary boolean operators (<code>&amp;&amp;</code> and <code>||</code>)
          are short circuited wherever possible. In conclusion with the rule
          above that means, <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> evaluates at first
          the left expression. If the left result is sufficient to determine
          the end result, processing stops here. Otherwise it evaluates the
          right side and computes the end result from both left and right
          results.</li>
      <li>Short circuit evaluation is turned off as long as there are regular
          expressions to deal with. These must be evaluated to fill in the
          backreference variables (<code>$1</code> .. <code>$9</code>).</li>
      </ul>
      <p>If you want to look how a particular expression is handled, you can
      recompile <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> using the
      <code>-DDEBUG_INCLUDE</code> compiler option. This inserts for every
      parsed expression tokenizer information, the parse tree and how it is
      evaluated into the output sent to the client.</p>
    </div>

    <div class="note"><h3>Escaping slashes in regex strings</h3>
     <p>All slashes which are not intended to act as delimiters in your regex must
     be escaped.  This is regardless of their meaning to the regex engine.</p>
    </div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSIEnableAccess" id="SSIEnableAccess">SSIEnableAccess</a> <a name="ssienableaccess" id="ssienableaccess">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable the -A flag during conditional flow control processing.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSIEnableAccess on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSIEnableAccess off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
</table>
    <p>The <code class="directive">SSIEnableAccess</code> directive controls whether
    the -A test is enabled during conditional flow control processing.
    <code class="directive">SSIEnableAccess</code> can take on the following values:</p>

    <dl>

      <dt><code>off</code></dt>
      <dd>&lt;!--#if expr="-A /foo"--&gt; will be interpreted as a series
      of string and regular expression tokens, the -A has no special
      meaning.</dd>

      <dt><code>on</code></dt>
      <dd>&lt;!--#if expr="-A /foo"--&gt; will evaluate to false if the
      URL /foo is inaccessible by configuration, or true otherwise.</dd>

    </dl>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSIEndTag" id="SSIEndTag">SSIEndTag</a> <a name="ssiendtag" id="ssiendtag">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>String that ends an include element</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSIEndTag <var>tag</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSIEndTag "--&gt;"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.30 and later.</td></tr>
</table>
    <p>This directive changes the string that <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
    looks for to mark the end of an include element.</p>

    <div class="example"><h3>Example</h3><p><code>
      SSIEndTag "%&gt;"
    </code></p></div>


<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#ssistarttag">SSIStartTag</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSIErrorMsg" id="SSIErrorMsg">SSIErrorMsg</a> <a name="ssierrormsg" id="ssierrormsg">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Error message displayed when there is an SSI
error</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSIErrorMsg <var>message</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSIErrorMsg "[an error occurred while processing this
directive]"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.30 and later.</td></tr>
</table>
    <p>The <code class="directive">SSIErrorMsg</code> directive changes the error
    message displayed when <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> encounters an
    error. For production servers you may consider changing the default
    error message to <code>"&lt;!-- Error --&gt;"</code> so that
    the message is not presented to the user.</p>

    <p>This directive has the same effect as the <code>&lt;!--#config
    errmsg=<var>message</var> --&gt;</code> element.</p>

    <div class="example"><h3>Example</h3><p><code>
      SSIErrorMsg "&lt;!-- Error --&gt;"
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSIStartTag" id="SSIStartTag">SSIStartTag</a> <a name="ssistarttag" id="ssistarttag">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>String that starts an include element</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSIStartTag <var>tag</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSIStartTag "&lt;!--#"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.30 and later.</td></tr>
</table>
    <p>This directive changes the string that <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
    looks for to mark an include element to process.</p>

    <p>You may want to use this option if you have 2 servers parsing the
    output of a file each processing different commands (possibly at
    different times).</p> 

    <div class="example"><h3>Example</h3><p><code>
      SSIStartTag "&lt;%"<br />
      SSIEndTag   "%&gt;"
    </code></p></div>

    <p>The example given above, which also specifies a matching
    <code class="directive"><a href="#ssiendtag">SSIEndTag</a></code>, will 
    allow you to use SSI directives as shown in the example 
    below:</p>

    <div class="example"><h3>SSI directives with alternate start and end tags</h3><p><code>
      &lt;%printenv %&gt;
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#ssiendtag">SSIEndTag</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSITimeFormat" id="SSITimeFormat">SSITimeFormat</a> <a name="ssitimeformat" id="ssitimeformat">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configures the format in which date strings are
displayed</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSITimeFormat <var>formatstring</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.30 and later.</td></tr>
</table>
<p>This directive changes the format in which date strings are displayed 
    when echoing <code>DATE</code> environment variables. The
    <var>formatstring</var> is as in <code>strftime(3)</code> from the
    C standard library.</p>

    <p>This directive has the same effect as the <code>&lt;!--#config
    timefmt=<var>formatstring</var> --&gt;</code> element.</p>

    <div class="example"><h3>Example</h3><p><code>
      SSITimeFormat "%R, %B %d, %Y"
    </code></p></div>

    <p>The above directive would cause times to be displayed in the
    format "22:26, June 14, 2002".</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSIUndefinedEcho" id="SSIUndefinedEcho">SSIUndefinedEcho</a> <a name="ssiundefinedecho" id="ssiundefinedecho">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>String displayed when an unset variable is echoed</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSIUndefinedEcho <var>string</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSIUndefinedEcho "(none)"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.34 and later.</td></tr>
</table>
    <p>This directive changes the string that <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
    displays when a variable is not set and "echoed".</p>

    <div class="example"><h3>Example</h3><p><code>
      SSIUndefinedEcho "&lt;!-- undef --&gt;"
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="XBitHack" id="XBitHack">XBitHack</a> <a name="xbithack" id="xbithack">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Parse SSI directives in files with the execute bit
set</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>XBitHack on|off|full</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>XBitHack off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
</table>
    <p>The <code class="directive">XBitHack</code> directive controls the parsing
    of ordinary html documents. This directive only affects files associated
    with the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> <code>text/html</code>. <code class="directive">XBitHack</code> can take on the following values:</p>

    <dl>
      <dt><code>off</code></dt>
      <dd>No special treatment of executable files.</dd>

      <dt><code>on</code></dt>
      <dd>Any <code>text/html</code> file that has the user-execute bit
      set will be treated as a server-parsed html document.</dd>

      <dt><code>full</code></dt>
      <dd>As for <code>on</code> but also test the group-execute bit.
      If it is set, then set the <code>Last-modified</code> date of the
      returned file to be the last modified time of the file. If
      it is not set, then no last-modified date is sent. Setting
      this bit allows clients and proxies to cache the result of
      the request. 

      <div class="note"><h3>Note</h3>
      <p>You would not want to use the full option, unless you assure the
      group-execute bit is unset for every SSI script which might <code>#include</code> a CGI or otherwise produces different output on
      each hit (or could potentially change on subsequent requests).</p>
      </div>
      </dd>
    </dl>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    mod/mod_info.html                                                                                   100644       0       0        24226 11256641270  11476  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_info - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_info</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides a comprehensive overview of the server
configuration</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>info_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_info.c</td></tr></table>
<h3>Summary</h3>

    <p>To configure <code class="module"><a href="../mod/mod_info.html">mod_info</a></code>, add the following to your
    <code>httpd.conf</code> file.</p>

    <div class="example"><p><code>
      &lt;Location /server-info&gt;<br />
      <span class="indent">
        SetHandler server-info<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>You may wish to use <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> inside the
    <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>
    directive to limit access to your server configuration
    information:</p>

    <div class="example"><p><code>
      &lt;Location /server-info&gt;<br />
      <span class="indent">
        SetHandler server-info<br />
        Order deny,allow<br />
        Deny from all<br />
        Allow from yourcompany.com<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>Once configured, the server information is obtained by
    accessing <code>http://your.host.example.com/server-info</code></p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#addmoduleinfo">AddModuleInfo</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#security">Security Issues</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#queries">Selecting the information shown</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limitations">Known Limitations</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Security Issues</a></h2>
    <p>Once <code class="module"><a href="../mod/mod_info.html">mod_info</a></code> is loaded into the server, its
    handler capability is available in <em>all</em> configuration
    files, including per-directory files (<em>e.g.</em>,
    <code>.htaccess</code>). This may have security-related
    ramifications for your site.</p>

    <p>In particular, this module can leak sensitive information
    from the configuration directives of other Apache modules such as
    system paths, usernames/passwords, database names, etc. Therefore,
    this module should <strong>only</strong> be
    used in a controlled environment and always with caution.</p>

    <p>You will probably want to use <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> 
    to limit access to your server configuration information.</p>
      
    <div class="example"><h3>Access control</h3><p><code>
      &lt;Location /server-info&gt;<br />
      <span class="indent">
        SetHandler server-info<br />
        Order allow,deny<br />
        # Allow access from server itself<br />
        Allow from 127.0.0.1<br />
        # Additionally, allow access from local workstation<br />
        Allow from 192.168.1.17<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="queries" id="queries">Selecting the information shown</a></h2>
    <p>By default, the server information includes a list of
    all enabled modules, and for each module, a description of
    the directives understood by that module, the hooks implemented
    by that module, and the relevant directives from the current
    configuration.</p>
    
    <p>Other views of the configuration information are available by
    appending a query to the <code>server-info</code> request. For
    example, <code>http://your.host.example.com/server-info?config</code>
    will show all configuration directives.</p>
    
    <dl>
        <dt><code>?&lt;module-name&gt;</code></dt>
            <dd>Only information relevant to the named module</dd>
        <dt><code>?config</code></dt>
            <dd>Just the configuration directives, not sorted by module</dd>
        <dt><code>?hooks</code></dt>
            <dd>Only the list of Hooks each module is attached to</dd>
        <dt><code>?list</code></dt>
            <dd>Only a simple list of enabled modules</dd>
        <dt><code>?server</code></dt>
            <dd>Only the basic server information</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="limitations" id="limitations">Known Limitations</a></h2>
    <p><code class="module"><a href="../mod/mod_info.html">mod_info</a></code> provides its information by reading the
    parsed configuration, rather than reading the original configuration
    file. There are a few limitations as a result of the way the parsed
    configuration tree is created:</p>
    <ul>
      <li>Directives which are executed immediately rather than being
          stored in the parsed configuration are not listed. These include
          <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>,
          <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>, and
          <code class="directive"><a href="../mod/mod_so.html#loadfile">LoadFile</a></code>.</li>
      <li>Directives which control the configuration file itself, such as
          <code class="directive"><a href="../mod/core.html#include">Include</a></code>,
          <code class="directive"><a href="../mod/core.html#&lt;ifmodule&gt;">&lt;IfModule&gt;</a></code> and
          <code class="directive"><a href="../mod/core.html#&lt;ifdefine&gt;">&lt;IfDefine&gt;</a></code> are not
          listed, but the included configuration directives are.</li>
      <li>Comments are not listed. (This may be considered a feature.)</li>
      <li>Configuration directives from <code>.htaccess</code> files are
          not listed (since they do not form part of the permanent server
          configuration).</li>
      <li>Container directives such as
          <code class="directive"><a href="../mod/core.html#&lt;directory&gt;">&lt;Directory&gt;</a></code>
          are listed normally, but <code class="module"><a href="../mod/mod_info.html">mod_info</a></code> cannot figure
          out the line number for the closing
          <code class="directive"><a href="../mod/core.html#&lt;/directory&gt;">&lt;/Directory&gt;</a></code>.</li>
      <li>Directives generated by third party modules such as
          <a href="http://perl.apache.org">mod_perl</a>
          might not be listed.</li>
    </ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddModuleInfo" id="AddModuleInfo">AddModuleInfo</a> <a name="addmoduleinfo" id="addmoduleinfo">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adds additional information to the module
information displayed by the server-info handler</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddModuleInfo <var>module-name</var> <var>string</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_info</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Apache 1.3 and above</td></tr>
</table>
    <p>This allows the content of <var>string</var> to be shown as
    HTML interpreted, <strong>Additional Information</strong> for
    the module <var>module-name</var>. Example:</p>

    <div class="example"><p><code>
      AddModuleInfo mod_deflate.c 'See &lt;a \<br />
      <span class="indent">
        href="http://www.apache.org/docs/2.2/mod/mod_deflate.html"&gt;\<br />
        http://www.apache.org/docs/2.2/mod/mod_deflate.html&lt;/a&gt;'
      </span>
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                          mod/mod_isapi.html                                                                                  100644       0       0        47633 11256641270  11657  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_isapi - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_isapi</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>ISAPI Extensions within Apache for Windows</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>isapi_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_isapi.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Win32 only</td></tr></table>
<h3>Summary</h3>

    <p>This module implements the Internet Server extension API. It
    allows Internet Server extensions (<em>e.g.</em> ISAPI .dll
    modules) to be served by Apache for Windows, subject to the
    noted restrictions.</p>

    <p>ISAPI extension modules (.dll files) are written by third
    parties. The Apache Group does not author these modules, so we
    provide no support for them. Please contact the ISAPI's author
    directly if you are experiencing problems running their ISAPI
    extension. <strong>Please <em>do not</em> post such problems to
    Apache's lists or bug reporting pages.</strong></p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#isapiappendlogtoerrors">ISAPIAppendLogToErrors</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#isapiappendlogtoquery">ISAPIAppendLogToQuery</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#isapicachefile">ISAPICacheFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#isapifakeasync">ISAPIFakeAsync</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#isapilognotsupported">ISAPILogNotSupported</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#isapireadaheadbuffer">ISAPIReadAheadBuffer</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#usage">Usage</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#notes">Additional Notes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#journal">Programmer's Journal</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="usage" id="usage">Usage</a></h2>

    <p>In the server configuration file, use
    the <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> directive to
    associate ISAPI files with the <code>isapi-handler</code> handler, and map
    it to them with their file extensions. To enable any .dll file to be
    processed as an ISAPI extension, edit the httpd.conf file and add the
    following line:</p>
    <div class="example"><p><code>
        AddHandler isapi-handler .dll
    </code></p></div>

    <div class="note">In older versions of the Apache server,
    <code>isapi-isa</code> was the proper handler name, rather than
    <code>isapi-handler</code>. For compatibility, configurations may
    continue using <code>isapi-isa</code> through all versions of Apache
    prior to 2.3.0.</div>

    <p>There is no capability within the Apache server to leave a
    requested module loaded. However, you may preload and keep a
    specific module loaded by using the following syntax in your
    httpd.conf:</p>
    <div class="example"><p><code>
        ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
    </code></p></div>

    <p>Whether or not you have preloaded an ISAPI extension, all
    ISAPI extensions are governed by the same permissions and
    restrictions as CGI scripts. That is, <code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>ExecCGI</code> must be set for the
    directory that contains the ISAPI .dll file.</p>

    <p>Review the <a href="#notes">Additional Notes</a> and the <a href="#journal">Programmer's Journal</a> for additional details
    and clarification of the specific ISAPI support offered by
    <code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="notes" id="notes">Additional Notes</a></h2>

    <p>Apache's ISAPI implementation conforms to all of the ISAPI
    2.0 specification, except for some "Microsoft-specific"
    extensions dealing with asynchronous I/O. Apache's I/O model
    does not allow asynchronous reading and writing in a manner
    that the ISAPI could access. If an ISA tries to access
    unsupported features, including async I/O, a message is placed
    in the error log to help with debugging. Since these messages
    can become a flood, the directive <code>ISAPILogNotSupported
    Off</code> exists to quiet this noise.</p>

    <p>Some servers, like Microsoft IIS, load the ISAPI extension
    into the server and keep it loaded until memory usage is too
    high, or unless configuration options are specified. Apache
    currently loads and unloads the ISAPI extension each time it is
    requested, unless the <code class="directive"><a href="#isapicachefile">ISAPICacheFile</a></code> directive is specified.
    This is inefficient, but Apache's memory model makes this the
    most effective method. Many ISAPI modules are subtly
    incompatible with the Apache server, and unloading these
    modules helps to ensure the stability of the server.</p>

    <p>Also, remember that while Apache supports ISAPI Extensions,
    it <strong>does not support ISAPI Filters</strong>. Support for
    filters may be added at a later date, but no support is planned
    at this time.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="journal" id="journal">Programmer's Journal</a></h2>

    <p>If you are programming Apache 2.0 <code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code>
    modules, you must limit your calls to <code>ServerSupportFunction</code>
    to the following directives:</p>

    <dl>
      <dt><code>HSE_REQ_SEND_URL_REDIRECT_RESP</code></dt>
      <dd>Redirect the user to another location.<br />
      This must be a fully qualified URL (<em>e.g.</em>
      <code>http://server/location</code>).</dd>

      <dt><code>HSE_REQ_SEND_URL</code></dt>
      <dd>Redirect the user to another location.<br />
      This cannot be a fully qualified URL, you are not allowed to
      pass the protocol or a server name (<em>e.g.</em> simply
      <code>/location</code>).<br />
      This redirection is handled by the server, not the
      browser.<br />
      <div class="warning"><h3>Warning</h3>
        <p>In their recent documentation, Microsoft appears to have
        abandoned the distinction between the two
        <code>HSE_REQ_SEND_URL</code> functions. Apache continues to treat
        them as two distinct functions with different requirements
        and behaviors.</p>
      </div></dd>

      <dt><code>HSE_REQ_SEND_RESPONSE_HEADER</code></dt>
      <dd>Apache accepts a response body following the header if it
      follows the blank line (two consecutive newlines) in the
      headers string argument. This body cannot contain NULLs,
      since the headers argument is NULL terminated.</dd>

      <dt><code>HSE_REQ_DONE_WITH_SESSION</code></dt>
      <dd>Apache considers this a no-op, since the session will be
      finished when the ISAPI returns from processing.</dd>

      <dt><code>HSE_REQ_MAP_URL_TO_PATH</code></dt>
      <dd>Apache will translate a virtual name to a physical
      name.</dd>

      <dt><code>HSE_APPEND_LOG_PARAMETER</code></dt>
      <dd>
        This logged message may be captured in any of the following
        logs:

        <ul>
          <li>in the <code>\"%{isapi-parameter}n\"</code> component in a
          <code class="directive"><a href="../mod/mod_log_config.html#customlog">CustomLog</a></code>
          directive</li>

          <li>in the <code>%q</code> log component with the
          <code class="directive"><a href="#isapiappendlogtoquery">ISAPIAppendLogToQuery</a></code>
          <code>On</code> directive</li>

          <li>in the error log with the <code class="directive"><a href="#isapiappendlogtoerrors">ISAPIAppendLogToErrors</a></code> <code>On</code> directive</li>
        </ul>

        <p>The first option, the <code>%{isapi-parameter}n</code> component,
        is always available and preferred.</p>
      </dd>

      <dt><code>HSE_REQ_IS_KEEP_CONN</code></dt>
      <dd>Will return the negotiated Keep-Alive status.</dd>

      <dt><code>HSE_REQ_SEND_RESPONSE_HEADER_EX</code></dt>
      <dd>Will behave as documented, although the <code>fKeepConn</code>
      flag is ignored.</dd>

      <dt><code>HSE_REQ_IS_CONNECTED</code></dt>
      <dd>Will report false if the request has been aborted.</dd>
    </dl>

    <p>Apache returns <code>FALSE</code> to any unsupported call to
    <code>ServerSupportFunction</code>, and sets the
    <code>GetLastError</code> value to
    <code>ERROR_INVALID_PARAMETER</code>.</p>

    <p><code>ReadClient</code> retrieves the request body exceeding the
    initial buffer (defined by <code class="directive"><a href="#isapireadaheadbuffer">ISAPIReadAheadBuffer</a></code>). Based on the
    <code class="directive">ISAPIReadAheadBuffer</code> setting (number of bytes
    to buffer prior to calling the ISAPI handler) shorter requests are sent
    complete to the extension when it is invoked. If the request is
    longer, the ISAPI extension must use <code>ReadClient</code> to
    retrieve the remaining request body.</p>

    <p><code>WriteClient</code> is supported, but only with the
    <code>HSE_IO_SYNC</code> flag or no option flag (value of
    <code>0</code>). Any other <code>WriteClient</code> request
    will be rejected with a return value of <code>FALSE</code>, and a
    <code>GetLastError</code> value of
    <code>ERROR_INVALID_PARAMETER</code>.</p>

    <p><code>GetServerVariable</code> is supported, although extended server
    variables do not exist (as defined by other servers.) All the
    usual Apache CGI environment variables are available from
    <code>GetServerVariable</code>, as well as the <code>ALL_HTTP</code>
    and <code>ALL_RAW</code> values.</p>

    <p>Apache 2.0 <code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code> supports additional
    features introduced in later versions of the ISAPI specification,
    as well as limited emulation of async I/O and the
    <code>TransmitFile</code> semantics.  Apache also supports preloading
    ISAPI .dlls for performance, neither of which were not available under
    Apache 1.3 <code>mod_isapi</code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPIAppendLogToErrors" id="ISAPIAppendLogToErrors">ISAPIAppendLogToErrors</a> <a name="isapiappendlogtoerrors" id="isapiappendlogtoerrors">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from
ISAPI extensions to the error log</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPIAppendLogToErrors on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ISAPIAppendLogToErrors off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from ISAPI
    extensions to the server error log.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPIAppendLogToQuery" id="ISAPIAppendLogToQuery">ISAPIAppendLogToQuery</a> <a name="isapiappendlogtoquery" id="isapiappendlogtoquery">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from
ISAPI extensions to the query field</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPIAppendLogToQuery on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ISAPIAppendLogToQuery on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from ISAPI
    extensions to the query field (appended to the <code class="directive"><a href="../mod/mod_log_config.html#customlog">CustomLog</a></code> <code>%q</code>
    component).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPICacheFile" id="ISAPICacheFile">ISAPICacheFile</a> <a name="isapicachefile" id="isapicachefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>ISAPI .dll files to be loaded at startup</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPICacheFile <var>file-path</var> [<var>file-path</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>Specifies a space-separated list of file names to be loaded
    when the Apache server is launched, and remain loaded until the
    server is shut down. This directive may be repeated for every
    ISAPI .dll file desired. The full path name of each file should
    be specified. If the path name is not absolute, it will be treated
    relative to <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPIFakeAsync" id="ISAPIFakeAsync">ISAPIFakeAsync</a> <a name="isapifakeasync" id="isapifakeasync">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fake asynchronous support for ISAPI callbacks</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPIFakeAsync on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ISAPIFakeAsync off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>While set to on, asynchronous support for ISAPI callbacks is
    simulated.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPILogNotSupported" id="ISAPILogNotSupported">ISAPILogNotSupported</a> <a name="isapilognotsupported" id="isapilognotsupported">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Log unsupported feature requests from ISAPI
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPILogNotSupported on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ISAPILogNotSupported off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>Logs all requests for unsupported features from ISAPI
    extensions in the server error log. This may help administrators
    to track down problems. Once set to on and all desired ISAPI modules
    are functioning, it should be set back to off.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ISAPIReadAheadBuffer" id="ISAPIReadAheadBuffer">ISAPIReadAheadBuffer</a> <a name="isapireadaheadbuffer" id="isapireadaheadbuffer">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Size of the Read Ahead Buffer sent to ISAPI
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ISAPIReadAheadBuffer <var>size</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ISAPIReadAheadBuffer 49152</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_isapi</td></tr>
</table>
    <p>Defines the maximum size of the Read Ahead Buffer sent to
    ISAPI extensions when they are initially invoked. All remaining
    data must be retrieved using the <code>ReadClient</code> callback; some
    ISAPI extensions may not support the <code>ReadClient</code> function.
    Refer questions to the ISAPI extension's author.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                     mod/mod_ldap.html                                                                                   100644       0       0       107131 11256641270  11500  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_ldap - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_ldap</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>LDAP connection pooling and result caching services for use
by other LDAP modules</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>ldap_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>util_ldap.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.41 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module was created to improve the performance of
    websites relying on backend connections to LDAP servers. In
    addition to the functions provided by the standard LDAP
    libraries, this module adds an LDAP connection pool and an LDAP
    shared memory cache.</p>

    <p>To enable this module, LDAP support must be compiled into
    apr-util. This is achieved by adding the <code>--with-ldap</code>
    flag to the <code class="program"><a href="../programs/configure.html">configure</a></code> script when building
    Apache.</p>

    <p>SSL/TLS support is dependant on which LDAP toolkit has been
    linked to <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>. As of this writing, APR-util supports:
    <a href="http://www.openldap.org/">OpenLDAP SDK</a> (2.x or later),
    <a href="http://developer.novell.com/ndk/cldap.htm">Novell LDAP
    SDK</a>, <a href="http://www.mozilla.org/directory/csdk.html">
    Mozilla LDAP SDK</a>, native Solaris LDAP SDK (Mozilla based),
    native Microsoft LDAP SDK, or the
    <a href="http://www.iplanet.com/downloads/developer/">iPlanet
    (Netscape)</a> SDK. See the <a href="http://apr.apache.org">APR</a>
    website for details.</p>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#ldapcacheentries">LDAPCacheEntries</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapcachettl">LDAPCacheTTL</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapconnectiontimeout">LDAPConnectionTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapopcacheentries">LDAPOpCacheEntries</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapopcachettl">LDAPOpCacheTTL</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapsharedcachefile">LDAPSharedCacheFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapsharedcachesize">LDAPSharedCacheSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldaptrustedclientcert">LDAPTrustedClientCert</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldaptrustedglobalcert">LDAPTrustedGlobalCert</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldaptrustedmode">LDAPTrustedMode</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ldapverifyservercert">LDAPVerifyServerCert</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#exampleconfig">Example Configuration</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#pool">LDAP Connection Pool</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cache">LDAP Cache</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usingssltls">Using SSL/TLS</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#settingcerts">SSL/TLS Certificates</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exampleconfig" id="exampleconfig">Example Configuration</a></h2>
    <p>The following is an example configuration that uses
    <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> to increase the performance of HTTP Basic
    authentication provided by <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code>.</p>

    <div class="example"><p><code>
      # Enable the LDAP connection pool and shared<br />
      # memory cache. Enable the LDAP cache status<br />
      # handler. Requires that mod_ldap and mod_authnz_ldap<br />
      # be loaded. Change the "yourdomain.example.com" to<br />
      # match your domain.<br />
      <br />
      LDAPSharedCacheSize 200000<br />
      LDAPCacheEntries 1024<br />
      LDAPCacheTTL 600<br />
      LDAPOpCacheEntries 1024<br />
      LDAPOpCacheTTL 600<br />
      <br />
      &lt;Location /ldap-status&gt;<br />
      <span class="indent">
        SetHandler ldap-status<br />
        Order deny,allow<br />
        Deny from all<br />
        Allow from yourdomain.example.com<br />
        AuthLDAPURL ldap://127.0.0.1/dc=example,dc=com?uid?one<br />
        AuthzLDAPAuthoritative off<br />
        Require valid-user<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="pool" id="pool">LDAP Connection Pool</a></h2>

    <p>LDAP connections are pooled from request to request. This
    allows the LDAP server to remain connected and bound ready for
    the next request, without the need to unbind/connect/rebind.
    The performance advantages are similar to the effect of HTTP
    keepalives.</p>

    <p>On a busy server it is possible that many requests will try
    and access the same LDAP server connection simultaneously.
    Where an LDAP connection is in use, Apache will create a new
    connection alongside the original one. This ensures that the
    connection pool does not become a bottleneck.</p>

    <p>There is no need to manually enable connection pooling in
    the Apache configuration. Any module using this module for
    access to LDAP services will share the connection pool.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cache" id="cache">LDAP Cache</a></h2>

    <p>For improved performance, <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> uses an aggressive
    caching strategy to minimize the number of times that the LDAP
    server must be contacted. Caching can easily double or triple
    the throughput of Apache when it is serving pages protected
    with mod_authnz_ldap. In addition, the load on the LDAP server
    will be significantly decreased.</p>

    <p><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> supports two types of LDAP caching during
    the search/bind phase with a <em>search/bind cache</em> and
    during the compare phase with two <em>operation
    caches</em>. Each LDAP URL that is used by the server has
    its own set of these three caches.</p>

    <h3><a name="search-bind" id="search-bind">The Search/Bind Cache</a></h3>
      <p>The process of doing a search and then a bind is the
      most time-consuming aspect of LDAP operation, especially if
      the directory is large. The search/bind cache is used to
      cache all searches that resulted in successful binds.
      Negative results (<em>i.e.</em>, unsuccessful searches, or searches
      that did not result in a successful bind) are not cached.
      The rationale behind this decision is that connections with
      invalid credentials are only a tiny percentage of the total
      number of connections, so by not caching invalid
      credentials, the size of the cache is reduced.</p>

      <p><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> stores the username, the DN
      retrieved, the password used to bind, and the time of the bind
      in the cache. Whenever a new connection is initiated with the
      same username, <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> compares the password
      of the new connection with the password in the cache. If the
      passwords match, and if the cached entry is not too old,
      <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> bypasses the search/bind phase.</p>

      <p>The search and bind cache is controlled with the <code class="directive"><a href="#ldapcacheentries">LDAPCacheEntries</a></code> and <code class="directive"><a href="#ldapcachettl">LDAPCacheTTL</a></code> directives.</p>
    

    <h3><a name="opcaches" id="opcaches">Operation Caches</a></h3>
      <p>During attribute and distinguished name comparison
      functions, <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> uses two operation caches
      to cache the compare operations. The first compare cache is
      used to cache the results of compares done to test for LDAP
      group membership. The second compare cache is used to cache
      the results of comparisons done between distinguished
      names.</p>

      <p>The behavior of both of these caches is controlled with
      the <code class="directive"><a href="#ldapopcacheentries">LDAPOpCacheEntries</a></code>
      and <code class="directive"><a href="#ldapopcachettl">LDAPOpCacheTTL</a></code>
      directives.</p>
    

    <h3><a name="monitoring" id="monitoring">Monitoring the Cache</a></h3>
      <p><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> has a content handler that allows
      administrators to monitor the cache performance. The name of
      the content handler is <code>ldap-status</code>, so the
      following directives could be used to access the
      <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> cache information:</p>

      <div class="example"><p><code>
        &lt;Location /server/cache-info&gt;<br />
        <span class="indent">
          SetHandler ldap-status<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>

      <p>By fetching the URL <code>http://servername/cache-info</code>,
      the administrator can get a status report of every cache that is used
      by <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> cache. Note that if Apache does not
      support shared memory, then each <code class="program"><a href="../programs/httpd.html">httpd</a></code> instance has its
      own cache, so reloading the URL will result in different
      information each time, depending on which <code class="program"><a href="../programs/httpd.html">httpd</a></code>
      instance processes the request.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="usingssltls" id="usingssltls">Using SSL/TLS</a></h2>

    <p>The ability to create an SSL and TLS connections to an LDAP server 
    is defined by the directives <code class="directive"><a href="#&#10;    ldaptrustedglobalcert">
    LDAPTrustedGlobalCert</a></code>, <code class="directive"><a href="#&#10;    ldaptrustedclientcert">
    LDAPTrustedClientCert</a></code> and <code class="directive"><a href="#&#10;    ldaptrustedmode">
    LDAPTrustedMode</a></code>. These directives specify the CA and
    optional client certificates to be used, as well as the type of
    encryption to be used on the connection (none, SSL or TLS/STARTTLS).</p>

    <div class="example"><p><code>
      # Establish an SSL LDAP connection on port 636. Requires that <br />
      # mod_ldap and mod_authnz_ldap be loaded. Change the <br />
      # "yourdomain.example.com" to match your domain.<br />
      <br />
      LDAPTrustedGlobalCert CA_DER /certs/certfile.der<br />
      <br />
      &lt;Location /ldap-status&gt;<br />
      <span class="indent">
        SetHandler ldap-status<br />
        Order deny,allow<br />
        Deny from all<br />
        Allow from yourdomain.example.com<br />
        AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one<br />
        AuthzLDAPAuthoritative off<br />
        Require valid-user<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <div class="example"><p><code>
      # Establish a TLS LDAP connection on port 389. Requires that <br />
      # mod_ldap and mod_authnz_ldap be loaded. Change the <br />
      # "yourdomain.example.com" to match your domain.<br />
      <br />
      LDAPTrustedGlobalCert CA_DER /certs/certfile.der<br />
      <br />
      &lt;Location /ldap-status&gt;<br />
      <span class="indent">
        SetHandler ldap-status<br />
        Order deny,allow<br />
        Deny from all<br />
        Allow from yourdomain.example.com<br />
        AuthLDAPURL ldap://127.0.0.1/dc=example,dc=com?uid?one TLS<br />
        AuthzLDAPAuthoritative off<br />
        Require valid-user<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="settingcerts" id="settingcerts">SSL/TLS Certificates</a></h2>

    <p>The different LDAP SDKs have widely different methods of setting
    and handling both CA and client side certificates.</p>

    <p>If you intend to use SSL or TLS, read this section CAREFULLY so as to
    understand the differences between configurations on the different LDAP
    toolkits supported.</p>

    <h3><a name="settingcerts-netscape" id="settingcerts-netscape">Netscape/Mozilla/iPlanet SDK</a></h3>
        <p>CA certificates are specified within a file called cert7.db.
        The SDK will not talk to any LDAP server whose certificate was
        not signed by a CA specified in this file. If
        client certificates are required, an optional key3.db file may
        be specified with an optional password. The secmod file can be
        specified if required. These files are in the same format as
        used by the Netscape Communicator or Mozilla web browsers. The easiest
        way to obtain these files is to grab them from your browser
        installation.</p>

        <p>Client certificates are specified per connection using the
        LDAPTrustedClientCert directive by referring
        to the certificate "nickname". An optional password may be
        specified to unlock the certificate's private key.</p>

        <p>The SDK supports SSL only. An attempt to use STARTTLS will cause
        an error when an attempt is made to contact the LDAP server at
        runtime.</p>

        <div class="example"><p><code>
            # Specify a Netscape CA certificate file<br />
            LDAPTrustedGlobalCert CA_CERT7_DB /certs/cert7.db<br />
            # Specify an optional key3.db file for client certificate support<br />
            LDAPTrustedGlobalCert CERT_KEY3_DB /certs/key3.db<br />
            # Specify the secmod file if required<br />
            LDAPTrustedGlobalCert CA_SECMOD /certs/secmod<br />
            &lt;Location /ldap-status&gt;<br />
            <span class="indent">
                SetHandler ldap-status<br />
                Order deny,allow<br />
                Deny from all<br />
                Allow from yourdomain.example.com<br />
                LDAPTrustedClientCert CERT_NICKNAME &lt;nickname&gt; [password]<br />
                AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one<br />
                AuthzLDAPAuthoritative off<br />
                Require valid-user<br />
            </span>
            &lt;/Location&gt;
        </code></p></div>

    

    <h3><a name="settingcerts-novell" id="settingcerts-novell">Novell SDK</a></h3>

        <p>One or more CA certificates must be specified for the Novell
        SDK to work correctly. These certificates can be specified as
        binary DER or Base64 (PEM) encoded files.</p>

        <p>Note: Client certificates are specified globally rather than per
        connection, and so must be specified with the LDAPTrustedGlobalCert
        directive as below. Trying to set client certificates via the
        LDAPTrustedClientCert directive will cause an error to be logged
        when an attempt is made to connect to the LDAP server..</p>

        <p>The SDK supports both SSL and STARTTLS, set using the
        LDAPTrustedMode parameter. If an ldaps:// URL is specified,
        SSL mode is forced, override this directive.</p>

        <div class="example"><p><code>
             # Specify two CA certificate files<br />
             LDAPTrustedGlobalCert CA_DER /certs/cacert1.der<br />
             LDAPTrustedGlobalCert CA_BASE64 /certs/cacert2.pem<br />
             # Specify a client certificate file and key<br />
             LDAPTrustedGlobalCert CERT_BASE64 /certs/cert1.pem<br />
             LDAPTrustedGlobalCert KEY_BASE64 /certs/key1.pem [password]<br />
             # Do not use this directive, as it will throw an error<br />
             #LDAPTrustedClientCert CERT_BASE64 /certs/cert1.pem<br />
        </code></p></div>

    

    <h3><a name="settingcerts-openldap" id="settingcerts-openldap">OpenLDAP SDK</a></h3>

        <p>One or more CA certificates must be specified for the OpenLDAP
        SDK to work correctly. These certificates can be specified as
        binary DER or Base64 (PEM) encoded files.</p>

        <p>Client certificates are specified per connection using the
        LDAPTrustedClientCert directive.</p>

        <p>The documentation for the SDK claims to support both SSL and
        STARTTLS, however STARTTLS does not seem to work on all versions
        of the SDK. The SSL/TLS mode can be set using the
        LDAPTrustedMode parameter. If an ldaps:// URL is specified,
        SSL mode is forced. The OpenLDAP documentation notes that SSL
        (ldaps://) support has been deprecated to be replaced with TLS,
        although the SSL functionality still works.</p>

        <div class="example"><p><code>
             # Specify two CA certificate files<br />
             LDAPTrustedGlobalCert CA_DER /certs/cacert1.der<br />
             LDAPTrustedGlobalCert CA_BASE64 /certs/cacert2.pem<br />
            &lt;Location /ldap-status&gt;<br />
            <span class="indent">
                SetHandler ldap-status<br />
                Order deny,allow<br />
                Deny from all<br />
                Allow from yourdomain.example.com<br />
                LDAPTrustedClientCert CERT_BASE64 /certs/cert1.pem<br />
                LDAPTrustedClientCert KEY_BASE64 /certs/key1.pem<br />
                AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one<br />
                AuthzLDAPAuthoritative off<br />
                Require valid-user<br />
            </span>
            &lt;/Location&gt;
        </code></p></div>

    

    <h3><a name="settingcerts-solaris" id="settingcerts-solaris">Solaris SDK</a></h3>

        <p>SSL/TLS for the native Solaris LDAP libraries is not yet
        supported. If required, install and use the OpenLDAP libraries
        instead.</p>

    

    <h3><a name="settingcerts-microsoft" id="settingcerts-microsoft">Microsoft SDK</a></h3>

        <p>SSL/TLS certificate configuration for the native Microsoft
        LDAP libraries is done inside the system registry, and no
        configuration directives are required.</p>

        <p>Both SSL and TLS are supported by using the ldaps:// URL
        format, or by using the LDAPTrustedMode directive accordingly.</p>

        <p>Note: The status of support for client certificates is not yet known
        for this toolkit.</p>

    

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPCacheEntries" id="LDAPCacheEntries">LDAPCacheEntries</a> <a name="ldapcacheentries" id="ldapcacheentries">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum number of entries in the primary LDAP cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPCacheEntries <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPCacheEntries 1024</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the maximum size of the primary LDAP cache. This
    cache contains successful search/binds. Set it to 0 to turn off
    search/bind caching. The default size is 1024 cached
    searches.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPCacheTTL" id="LDAPCacheTTL">LDAPCacheTTL</a> <a name="ldapcachettl" id="ldapcachettl">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Time that cached items remain valid</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPCacheTTL <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPCacheTTL 600</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the time (in seconds) that an item in the
    search/bind cache remains valid. The default is 600 seconds (10
    minutes).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPConnectionTimeout" id="LDAPConnectionTimeout">LDAPConnectionTimeout</a> <a name="ldapconnectiontimeout" id="ldapconnectiontimeout">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specifies the socket connection timeout in seconds</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPConnectionTimeout <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the timeout value (in seconds) in which the module will
    attempt to connect to the LDAP server.  If a connection is not
    successful with the timeout period, either an error will be 
    returned or the module will attempt to connect to a secondary LDAP 
    server if one is specified. The default is 10 seconds.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPOpCacheEntries" id="LDAPOpCacheEntries">LDAPOpCacheEntries</a> <a name="ldapopcacheentries" id="ldapopcacheentries">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of entries used to cache LDAP compare 
operations</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPOpCacheEntries <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPOpCacheEntries 1024</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>This specifies the number of entries <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code>
    will use to cache LDAP compare operations. The default is 1024
    entries.  Setting it to 0 disables operation caching.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPOpCacheTTL" id="LDAPOpCacheTTL">LDAPOpCacheTTL</a> <a name="ldapopcachettl" id="ldapopcachettl">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Time that entries in the operation cache remain
valid</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPOpCacheTTL <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPOpCacheTTL 600</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the time (in seconds) that entries in the
    operation cache remain valid. The default is 600 seconds.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPSharedCacheFile" id="LDAPSharedCacheFile">LDAPSharedCacheFile</a> <a name="ldapsharedcachefile" id="ldapsharedcachefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the shared memory cache file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPSharedCacheFile <var>directory-path/filename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the directory path and file name of the shared memory
    cache file. If not set, anonymous shared memory will be used if the
    platform supports it.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPSharedCacheSize" id="LDAPSharedCacheSize">LDAPSharedCacheSize</a> <a name="ldapsharedcachesize" id="ldapsharedcachesize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Size in bytes of the shared-memory cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPSharedCacheSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPSharedCacheSize 102400</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies the number of bytes to allocate for the shared
    memory cache. The default is 100kb. If set to 0, shared memory
    caching will not be used.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPTrustedClientCert" id="LDAPTrustedClientCert">LDAPTrustedClientCert</a> <a name="ldaptrustedclientcert" id="ldaptrustedclientcert">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the file containing or nickname referring to a per
connection client certificate. Not all LDAP toolkits support per
connection client certificates.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPTrustedClientCert <var>type</var> <var>directory-path/filename/nickname</var> <var>[password]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>It specifies the directory path, file name or nickname of a
    per connection client certificate used when establishing an SSL
    or TLS connection to an LDAP server. Different locations or
    directories may have their own independant client certificate
    settings. Some LDAP toolkits (notably Novell)
    do not support per connection client certificates, and will throw an
    error on LDAP server connection if you try to use this directive
    (Use the LDAPTrustedGlobalCert directive instead for Novell client
    certificates - See the SSL/TLS certificate guide above for details).
    The type specifies the kind of certificate parameter being
    set, depending on the LDAP toolkit being used. Supported types are:</p>
    <ul>
      <li>CERT_DER - binary DER encoded client certificate</li>
      <li>CERT_BASE64 - PEM encoded client certificate</li>
      <li>CERT_NICKNAME - Client certificate "nickname" (Netscape SDK)</li>
      <li>KEY_DER - binary DER encoded private key</li>
      <li>KEY_BASE64 - PEM encoded private key</li>
    </ul>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPTrustedGlobalCert" id="LDAPTrustedGlobalCert">LDAPTrustedGlobalCert</a> <a name="ldaptrustedglobalcert" id="ldaptrustedglobalcert">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the file or database containing global trusted
Certificate Authority or global client certificates</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPTrustedGlobalCert <var>type</var> <var>directory-path/filename</var> <var>[password]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>It specifies the directory path and file name of the trusted CA
    certificates and/or system wide client certificates <code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code>
    should use when establishing an SSL or TLS connection to an LDAP
    server. Note that all certificate information specified using this directive
    is applied globally to the entire server installation. Some LDAP toolkits
    (notably Novell) require all client certificates to be set globally using
    this directive. Most other toolkits require clients certificates to be set
    per Directory or per Location using LDAPTrustedClientCert. If you get this
    wrong, an error may be logged when an attempt is made to contact the LDAP
    server, or the connection may silently fail (See the SSL/TLS certificate
    guide above for details).
    The type specifies the kind of certificate parameter being
    set, depending on the LDAP toolkit being used. Supported types are:</p>
    <ul>
      <li>CA_DER - binary DER encoded CA certificate</li>
      <li>CA_BASE64 - PEM encoded CA certificate</li>
      <li>CA_CERT7_DB - Netscape cert7.db CA certificate database file</li>
      <li>CA_SECMOD - Netscape secmod database file</li>
      <li>CERT_DER - binary DER encoded client certificate</li>
      <li>CERT_BASE64 - PEM encoded client certificate</li>
      <li>CERT_KEY3_DB - Netscape key3.db client certificate database file</li>
      <li>CERT_NICKNAME - Client certificate "nickname" (Netscape SDK)</li>
      <li>CERT_PFX - PKCS#12 encoded client certificate (Novell SDK)</li>
      <li>KEY_DER - binary DER encoded private key</li>
      <li>KEY_BASE64 - PEM encoded private key</li>
      <li>KEY_PFX - PKCS#12 encoded private key (Novell SDK)</li>
    </ul>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPTrustedMode" id="LDAPTrustedMode">LDAPTrustedMode</a> <a name="ldaptrustedmode" id="ldaptrustedmode">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Specifies the SSL/TLS mode to be used when connecting to an LDAP server.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPTrustedMode <var>type</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>The following modes are supported:</p>
    <ul>
      <li>NONE - no encryption</li>
      <li>SSL - ldaps:// encryption on default port 636</li>
      <li>TLS - STARTTLS encryption on default port 389</li>
    </ul>

    <p>Not all LDAP toolkits support all the above modes. An error message
    will be logged at runtime if a mode is not supported, and the
    connection to the LDAP server will fail.
    </p>

    <p>If an ldaps:// URL is specified, the mode becomes SSL and the setting
    of LDAPTrustedMode is ignored.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LDAPVerifyServerCert" id="LDAPVerifyServerCert">LDAPVerifyServerCert</a> <a name="ldapverifyservercert" id="ldapverifyservercert">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Force server certificate verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LDAPVerifyServerCert <var>On|Off</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>LDAPVerifyServerCert On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ldap</td></tr>
</table>
    <p>Specifies whether to force the verification of a 
     server certificate when establishing an SSL connection to the 
     LDAP server.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                       mod/mod_log_config.html                                                                             100644       0       0        67050 11256641270  12653  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_log_config - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_log_config</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Sunucuya yapılan isteklerin günlük kayıtlarının tutulması
</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>log_config_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_log_config.c</td></tr></table>
<h3>Özet</h3>

    <p>Bu modül istemci isteklerinin esnek şekilde günlüklenmesi ile
      ilgilidir. Günlükler kişiselleştirilebilir biçemdedir ve doğrudan bir
      dosyaya yazılabileceği gibi boru üzerinden harici bir sürece de
      yazılabilir. İsteğin özelliklerine bağlı olarak bazı isteklerin
      günlüklere kaydedilmesi veya kaydedilmemesi mümkün kılınmıştır.</p>

    <p>Bu modül üç yönerge içermektedir: Bir günlük dosyası oluşturmak için
      <code class="directive"><a href="#transferlog">TransferLog</a></code>, günlük
      biçemini kişiselleştirmek için <code class="directive"><a href="#logformat">LogFormat</a></code> ve tek başına bir günlük
      dosyasını hem tanımlayıp hem de biçemleyen <code class="directive"><a href="#customlog">CustomLog</a></code> yönergesi. Her isteğin
      çok sayıda dosyaya günlüklenmesini sağlamak için yapılandırma dosyasında
      her sunucu için birden fazla  <code class="directive">TransferLog</code> ve
      <code class="directive">CustomLog</code> yönergesi belirtilebilir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#bufferedlogs">BufferedLogs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookielog">CookieLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#customlog">CustomLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#logformat">LogFormat</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#transferlog">TransferLog</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#formats">Günlük Girdilerinin Kişiselleştirilmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../logs.html">Apache Günlük Dosyaları</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="formats" id="formats">Günlük Girdilerinin Kişiselleştirilmesi</a></h2>

    <p><code class="directive"><a href="#logformat">LogFormat</a></code> ve <code class="directive"><a href="#customlog">CustomLog</a></code> yönergelerinin biçem
      argümanı bir dizgedir. Bu dizge her isteği günlük dosyasına günlüklemek
      için kullanılır. Doğrudan günlük dosyalarına kopyalanmak üzere dizgesel
      sabitler içerebileceği gibi satırsonu ve sekme karakterleri olarak C
      tarzı "\n" ve "\t" denetim karakterlerini de içerebilir. Dizgesel sabit
      olarak kullanılan tırnak ve tersbölü imlerinin tersbölü ile öncelenmesi
      gerekir.</p>

    <p>İstek özellikleri biçem dizgesine “<code>%</code>” imli belirteçler
      yerleştirilerek günlüklenir. Bu belirteçler ve anlamları:</p>

    <table class="bordered"><tr class="header"><th>Belirteç</th>
        <th>Açıklama</th></tr>
<tr><td><code>%%</code></td>
        <td>Yüzde imi</td></tr>
<tr class="odd"><td><code>%a</code></td>
        <td>Uzak IP adresi</td></tr>
<tr><td><code>%A</code></td>
        <td>Yerel IP adresi</td></tr>
<tr class="odd"><td><code>%B</code></td>
        <td>HTTP başlıkları hariç, yanıtın bayt cinsinden uzunluğu.</td></tr>
<tr><td><code>%b</code></td>
        <td>HTTP başlıkları hariç, yanıtın bayt cinsinden uzunluğu. OGB
          biçeminde hiç bayt gönderilmemişse günlüğe '<code>-</code>' yerine
          '<code>0</code>' çıktılanır.</td></tr>
<tr class="odd"><td><code>%{<var>Fesmekan</var>}C</code></td>
        <td>İstek içinde sunucuya gönderilen <var>Fesmekan</var> çerezinin
          içeriği.</td></tr>
<tr><td><code>%D</code></td>
        <td>Mikrosaniye cinsinden isteği sunmak için harcanan zaman.</td></tr>
<tr class="odd"><td><code>%{<var>FALANCA</var>}e</code></td>
        <td><var>FALANCA</var> ortam değişkeninin içeriği.</td></tr>
<tr><td><code>%f</code></td>
        <td>Dosya ismi</td></tr>
<tr class="odd"><td><code>%h</code></td>
        <td>Uzak konak</td></tr>
<tr><td><code>%H</code></td>
        <td>İstek Protokolü</td></tr>
<tr class="odd"><td><code>%{<var>Filanca</var>}i</code></td>
        <td>İstekle birlikte sunucuya gönderilen
          <code><var>Filanca</var>:</code> başlık satır(lar)ının
          içeriği. Diğer modüllerde (örn. <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>)
          yapılan değişikliklerden etkilenir.</td></tr>
<tr><td><code>%k</code></td>
        <td>Bu bağlantıda işlenen isteklerin sayısı; yani örneğin,
        '1' değeri bağlantı kurulduktan sonraki ilk kalıcı bağlantıyı,
        '2', ikinci bağlantıyı, ..., vb. gösterir;
          <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code> kullanılmışsa
          değer anlamlıdır; aksi takdirde değer daima (ilk isteği
          belirten) 0’dır.</td></tr>
<tr class="odd"><td><code>%l</code></td>
        <td>Uzak kullanıcı kimliği (sağlanmışsa, identd üzerinden).
          <code class="module"><a href="../mod/mod_ident.html">mod_ident</a></code> modülü mevcut ve <code class="directive"><a href="../mod/mod_ident.html#identitycheck">IdentityCheck</a></code> yönergesine değer
          olarak <code>On</code> atanmış olmadıkça bu belirteç için günlüğe
          tire imi yazılır.</td></tr>
<tr><td><code>%m</code></td>
        <td>İstek yöntemi</td></tr>
<tr class="odd"><td><code>%{<var>Filanca</var>}n</code></td>
        <td>Diğer modüldeki <var>Filanca</var> bilgisinin içeriği.</td></tr>
<tr><td><code>%{<var>Filanca</var>}o</code></td>
        <td>Yanıttaki <code><var>Filanca</var>:</code> başlık satır(lar)ının
          içeriği.</td></tr>
<tr class="odd"><td><code>%p</code></td>
        <td>Sunucunun isteği sunduğu meşru port</td></tr>
<tr><td><code>%{<var>biçem</var>}p</code></td>
        <td>Sunucunun veya istemcinin gerçek portu veya sunucunun isteği
          sunduğu meşru port. Geçerli biçemler: <code>canonical</code>,
          <code>local</code> ve <code>remote</code> (anlamları sırasıyla:
          meşru, yerel ve uzak).</td></tr>
<tr class="odd"><td><code>%P</code></td>
        <td>İsteği sunan çocuk sürecin süreç kimliği.</td></tr>
<tr><td><code>%{<var>biçem</var>}P</code></td>
        <td>İsteği sunan çocuk sürecin süreç kimliği (<code>pid</code>) veya
          evre kimliği (<code>tid</code>). Geçerli biçemler: <code>pid</code>,
          <code>tid</code>, <code>hextid</code>. <code>hextid</code> için APR
          1.2.0 veya üstü gerekir.</td></tr>
<tr class="odd"><td><code>%q</code></td>
        <td>Sorgu dizgesi (bir sorgu dizgesi mevcutsa önüne bir <code>?</code>
          eklenir yoksa hiçbir şey eklenmez).</td></tr>
<tr><td><code>%r</code></td>
        <td>İsteğin ilk satırı.</td></tr>
<tr class="odd"><td><code>%s</code></td>
        <td>Durum. Dahili olarak yönlendirilen istekler için isteğin *özgün*
          durumudur --- isteğin son durumu için <code>%&gt;s</code>
          kullanınız.</td></tr>
<tr><td><code>%t</code></td>
        <td>İsteğin alındığı tarih ve saat (standart ingiliz biçemi).</td></tr>
<tr class="odd"><td><code>%{<var>biçem</var>}t</code></td>
        <td>İsteğin alındığı tarih ve saat; <var>biçem</var>
          <code>strftime(3)</code> biçeminde belirtilmelidir (genelde
          yerelleştirme amaçlı).</td></tr>
<tr><td><code>%T</code></td>
        <td>Saniye cinsinden, isteği sunmak için harcanan zaman.</td></tr>
<tr class="odd"><td><code>%u</code></td>
        <td>Uzak kullanıcı (kimlik doğrulaması istenmişse vardır; durum kodu
          (<code>%s</code>) 401 ise yanlış olabilir).</td></tr>
<tr><td><code>%U</code></td>
        <td>Herhangi bir sorgu dizgesi içermeksizin istenen URL yolu.</td></tr>
<tr class="odd"><td><code>%v</code></td>
        <td>İsteği sunan sunucunun meşru sunucu ismi (<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>).</td></tr>
<tr><td><code>%V</code></td>
        <td><code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> ayarı ile
          ilgili sunucu ismi.</td></tr>
<tr class="odd"><td><code>%X</code></td>
        <td>Yanıt tamamlandığında bağlantı durumu:

        <table>
        
        <tr><td><code>X</code> =</td>
            <td>Yanıt tamamlanmadan bağlantı koptu.</td></tr>
        <tr><td><code>+</code> =</td>
            <td>Yanıt gönderildikten sonra bağlantı canlı kalabilir.</td></tr>
        <tr><td><code>-</code> = </td>
            <td>Yanıt gönderildikten sonra bağlantı kapatılacak.</td></tr>
        </table>

        <p>(Apache 1.3’ün son sürümlerinde bu belirteç <code>%c</code> idi
          fakat geçmişe yönelik olarak <code>%{<var>isim</var>}c</code> ssl
          sözdizimi ile çelişiyordu.)</p></td></tr>
<tr><td><code>%I</code></td>
        <td>İstek ve başlıklar dahil alınan bayt sayısı; sıfır olamaz. Bunu
          kullanmak için <code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code> etkin olmalıdır.</td></tr>
<tr class="odd"><td><code>%O</code></td>
        <td>Başlıklar dahil gönderilen bayt sayısı; sıfır olamaz.Bunu
          kullanmak için <code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code> etkin olmalıdır.</td></tr>
</table>

    <h3><a name="modifiers" id="modifiers">Değiştiriciler</a></h3>

      <p>Belli öğelerin sadece belli durum kodlarıyla ilgili yanıtlarla
        basılabilmesi için bu durum kodları % iminden hemen sonra virgüllerle
        ayrılmış olarak yazılabilir. Örneğin,
        <code>"%400,501{User-agent}i"</code> belirteci,
        <code>User-agent</code> başlığını sadece 400 ve 501 hatalarında
        günlüğe kaydeder. Diğer durum kodları için günlüğe <code>"-"</code>
        yazılır. Durum kodlarını olumsuzlamak için başa bir "<code>!</code>"
        konabilir. Örneğin, <code>"%!200,304,302{Referer}i"</code> belirteci,
        200,304,302 durum kodlarından biriyle dönmeyen tüm istekler için
        <code>Referer</code> başlığını durum koduyla birlikte günlüğe
        kaydedecektir.</p>

      <p>İsteğin dahili olarak yönlendirilmesinde özgün durumunun mu yoksa son
        durumunun mu hesaba katılacağı "&lt;" ve "&gt;" değiştiricileri ile
        belirtilebilir. Öntanımlı olarak <code>%s, %U, %T, %D,</code> ve
        <code>%r</code> belirteçleri isteğin özgün durumuna bakarken diğerleri
        son durumuna bakarlar. Bu bakımdan örneğin, <code>%&gt;s</code>
        belirteci, özgün istekteki kimliği doğrulanmış kullanıcının, dahili
        olarak kimlik doğrulaması gerekmeyen bir özkaynağa yönlendirilmesi
        halinde isteğin son durumunu kaydetmekte kullanılabilir.</p>

    

    <h3><a name="format-notes" id="format-notes">Bazı Bilgiler</a></h3>

      <p>Güvenlik nedeniyle, 2.0.46 sürümünden itibaren <code>%r</code>,
        <code>%i</code> ve <code>%o</code> belirteçlerinde basılamayan
        karakterler ve diğer özel karakterler <code>\x<var>hh</var></code>
        dizilimleri biçeminde öncelenmektedir. Burada <var>hh</var> yerine
        karakter numarasının onaltılık gösterimi yazılır. Bir tersbölü ile
        öncelenmesi gereken <code>"</code> ve <code>\</code> ile
        <code>\n</code>, <code>\t</code> gibi C tarzı gösterimler bu kuralın
        dışındadır. 2.0.46 sürümünün öncesinde bu dizgeler öncelenmezdi ve ham
        günlük dosyalarıyla çalışırken dikkatli olmak gerekirdi.</p>

      <p>2.0 sürümünde 1.3 sürümünün aksine <code>%b</code> ve
        <code>%B</code> biçem belirteçleri, istemciye gönderilen bayt sayısını
        değil, HTTP yanıtının bayt sayısını ifade ederdi (bu yanıt, örneğin,
        SSL kullanıldığında veya bağlantı koptuğunda farklı uzunlukta olur).
        Artık, ağa gönderilen gerçek bayt sayısını günlüğe kaydetmek için
        <code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code> modülü tarafından sağlanan <code>%O</code>
        biçem belirteci kullanılmaktadır.</p>

    

    <h3><a name="examples" id="examples">Örnekler</a></h3>

      <p>Genelde herkesçe kullanılan günlük kaydı biçemleme dizgelerinden
        bazıları:</p>

      <dl>
        <dt>Ortak Günlük Biçemi (OGB)</dt>
        <dd><code>"%h %l %u %t \"%r\" %&gt;s %b"</code></dd>

        <dt>Sanal Konaklı Ortak Günlük Biçemi</dt>
        <dd><code>"%v %h %l %u %t \"%r\" %&gt;s %b"</code></dd>

        <dt>NCSA uzun/birleşik günlük biçemi</dt>
        <dd><code>"%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
        \"%{User-agent}i\""</code></dd>

        <dt>Referer başlığını içeren günlük biçemi</dt>
        <dd><code>"%{Referer}i -&gt; %U"</code></dd>

        <dt>User-agent başlığını içeren günlük biçemi</dt>
        <dd><code>"%{User-agent}i"</code></dd>
      </dl>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Kaygıları</a></h2>
    <p>Günlük dosyarının kaydedildiği dizine sunucuyu başlatan kullanıcı
      dışında diğer kullanıcılar tarafından yazılabiliyor olması halinde
      güvenliğinizden nasıl feragat etmiş olacağınız <a href="../misc/security_tips.html#serverroot">güvenlik ipuçları</a>
      belgesinde açıklanmıştır.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BufferedLogs" id="BufferedLogs">BufferedLogs</a> <a name="bufferedlogs" id="bufferedlogs">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Günlük girdilerini diske yazmadan önce bellekte tamponlar
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>BufferedLogs On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>BufferedLogs Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_config</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>2.0.41 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">BufferedLogs</code> yönergesi,
      <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> modülünün çeşitli günlük girdilerini her
      isteğin hemen ardından tek tek değil, bir bütün halinde diske yazılmak
      üzere bellekte saklanmasını sağlar. Bu, bazı sistemlerde daha verimli
      disk erişimi, dolayısıyla daha yüksek başarım sağlayabilir. Sadece
      sunucu geneli için belirtilebilir, sanal konaklar için ayrı ayrı
      yapılandırılamaz.</p>

    <div class="note">Bu yönerge deneyseldir ve dikkatli kullanılmalıdır.</div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieLog" id="CookieLog">CookieLog</a> <a name="cookielog" id="cookielog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Çerezleri günlüğe kaydetmek için dosya ismi belirtmekte
kullanılır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>CookieLog <var>dosya-adı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_config</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Bu yönergenin kullanımı önerilmemektedir.</td></tr>
</table>
    <p><code class="directive">CookieLog</code> yönergesi çerezleri günlüğe kaydetmek
      için dosya ismi belirtir. Dosya isminin <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> değerine göre belirtildiği
      varsayılır. Yönerge <code>mod_cookies</code> ile uyumluluk için vardır
      ve kullanımı önerilmemektedir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CustomLog" id="CustomLog">CustomLog</a> <a name="customlog" id="customlog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Günlük dosyasın ismini ve girdi biçemini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>CustomLog  <var>dosya</var>|<var>borulu-süreç</var>
<var>biçem</var>|<var>takma-ad</var>
[env=[!]<var>ortam-değişkeni</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_config</td></tr>
</table>
    <p><code class="directive">CustomLog</code> yönergesi istekleri günlüğe kaydetmek
      için kullanılır. Yönerge ile bir günlük biçemi belirtilebilir ve günlük
      kaydı isteğin özelliklerine bağlı olarak ortam değişkenleri vasıtasıyla
      şarta bağlı kılınabilir.</p>

    <p>İlk argümanda günlüğün yazılacağı yer belirtilir. İki tür yer
      belirtilebilir:</p>

    <dl>
      <dt><var>dosya</var></dt>
      <dd><code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergesinin
        değerine göreli bir dosya ismi.</dd>

      <dt><var>borulu-süreç</var></dt>
      <dd>"<code>|</code>" boru karakteri ile öncelenmiş olarak günlük
        bilgisini standart girdisinden kabul edecek sürecin ismi (veya komut
        satırı).

      <div class="warning"><h3>Güvenlik:</h3>
      <p>Bir borulu süreç kullanılmışsa, süreç <code class="program"><a href="../programs/httpd.html">httpd</a></code>’yi
        başlatan kullanıcı tarafından başlatılacaktır. Sunucu root tarafından
        başlatılıyorsa bu root olacaktır; bu bakımdan günlük kaydını alacak
        programın güvenilir olması önemlidir.</p>
      </div>
      <div class="warning"><h3>Bilginize</h3>
        <p>Dosya yolunu belirtirken tersbölü çizgisi kullanılan Unix dışı
          platformlarda bile yapılandırma dosyasında bu amaçla normal bölü
          çizgilerini kullanmaya özen gösterilmelidir.</p>
      </div></dd>
    </dl>

    <p>İkinci argümanda günlüğe ne yazılacağı belirtilir. Ya evvelce
      <code class="directive"><a href="#logformat">LogFormat</a></code> yönergesi ile
      tanımlanmış bir <var>takma-ad</var> ya da içeriği <a href="#formats">Günlük Girdilerinin Kişiselleştirilmesi</a> bölümünde
      açıklanmış bir <var>biçem</var> dizgesi olabilir.</p>

    <p>Örneğin, aşağıdaki iki yönerge kümesi aynı etkiye sahiptir:</p>

    <div class="example"><p><code>
      # Biçem dizgesi yerine takma ad içeren CustomLog<br />
      LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
      CustomLog logs/access_log common<br />
      <br />
      # Biçem dizgesinin kendisini içeren CustomLog<br />
      CustomLog logs/access_log "%h %l %u %t \"%r\" %&gt;s %b"
    </code></p></div>

    <p>Üçüncü argüman isteğe bağlı olup, sunucu ortamında belli bir değişkenin
      varlığına bağlı olarak belli bir isteğin günlüğe kaydedilip
      kaydedilmeyeceğini belirler. Eğer istek için belirtilen <a href="../env.html">ortam değişkeni</a> mevcutsa (veya
      '<code>env=!<var>değişken</var></code>' durumunda mevcut değilse) istek
      günlüğe kaydedilir.</p>

    <p>Ortam değişkenleri <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code>
      ve/veya <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülleri kullanılarak her istek
      için ayrı ayrı atanabilir. Örneğin, GIF biçemli resimler için yapılan
      istekleri ana günlük dosyasına değil de başka bir dosyaya kaydetmek
      isterseniz:</p>

    <div class="example"><p><code>
      SetEnvIf Request_URI \.gif$ gif-image<br />
      CustomLog gif-requests.log common env=gif-image<br />
      CustomLog nongif-requests.log common env=!gif-image
    </code></p></div>

    <p>Veya eski <code>RefererIgnore</code> yönergesinin davranışını taklit
      etmek isterseniz:</p>

    <div class="example"><p><code>
    SetEnvIf Referer example\.com yerel-atif<br />
    CustomLog referer.log referer env=!yerel-atif
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LogFormat" id="LogFormat">LogFormat</a> <a name="logformat" id="logformat">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir günlük dosyasında kullanılmak üzere girdi biçemi tanımlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LogFormat <var>biçem</var>|<var>takma-ad</var>
[<var>takma-ad</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LogFormat "%h %l %u %t \"%r\" %&gt;s %b"</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_config</td></tr>
</table>
    <p>Bu yönerge erişim günlüğü dosyasının girdi biçemini belirler.</p>

    <p><code class="directive">LogFormat</code> yönergesi iki şekilde kullanılabilir.
      Tek argüman belirtilebilen ilkinde daha sonra
      <code class="directive">TransferLog</code> yönergelerinde belirtilen günlüklerde
      kullanılmak üzere günlük biçemini belirler. Bu günlük biçemi yukarıda
      açıklanan <a href="#formats"><var>biçem</var></a> belirteçlerinden
      oluşur. Bu tek argüman yerine aşağıda açıklandığı gibi önceki bir
      <code class="directive">LogFormat</code> yönergesinde tanımlanmış bir günlük
      biçemine atıf yapan bir <var>takma-ad</var> da belirtilebilir.</p>

    <p><code class="directive">LogFormat</code> yönergesinin ikinci kullanım şeklinde
      <var>biçem</var> bir <var>takma-ad</var> için tanımlanır. Bu takma ad
      daha sonraki <code class="directive">LogFormat</code> veya <code class="directive"><a href="#customlog">CustomLog</a></code> yönergelerinde aynı biçem
      dizgesini uzun uzadıya yazmamak için <var>takma-ad</var> olarak
      kullanılır. Bir <code class="directive">LogFormat</code> yönergesi bir takma ad
      tanımlamaktan <strong>başka bir şey yapmaz</strong>; yani, yaptığı iş
      sadece bir takma ad tanımlamaktan ibarettir, biçemi uygulamaz veya
      biçemi öntanımlı hale getirmez. Bu bakımdan sonraki <code class="directive"><a href="#transferlog">TransferLog</a></code> yönergelerini de
      etkilemeyecektir. Ayrıca, <code class="directive">LogFormat</code> yönergesi bir
      takma ada başka bir takma ad tanımlamakta da kullanılamaz. Bir takma
      adın yüzde imi (<code>%</code>) içeremeyeceğine de dikkat ediniz.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      LogFormat "%v %h %l %u %t \"%r\" %&gt;s %b" vhost_common
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="TransferLog" id="TransferLog">TransferLog</a> <a name="transferlog" id="transferlog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir günlük dosyasının yerini belirtir.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>TransferLog <var>dosya</var>|<var>borulu-süreç</var>
[<var>takma-ad</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_config</td></tr>
</table>
    <p>Bir günlük biçemi tanımlanmasını ve şarta bağlı günlük kaydını mümkün
      kılmaması haricinde <code class="directive"><a href="#customlog">CustomLog</a></code> yönergesi gibidir. Günlük biçemi yerine kendinden
      önce yer alan bir <code class="directive"><a href="#logformat">LogFormat</a></code> yönergesinde tanımlanan
      bir takma ad kullanılır. Açıkça bir günlük biçemi takma adı
      belirtilmedikçe Ortak Günlük Biçemi öntanımlıdır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
      \"%{User-agent}i\""<br />
      TransferLog logs/access_log
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        mod/mod_log_forensic.html                                                                           100644       0       0        22300 11256641270  13203  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_log_forensic - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_log_forensic</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Sunucuya yapılan isteklerin adli günlük kayıtlarının tutulması</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>log_forensic_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_log_forensic.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Uyumluluk:</a></th><td>2.1 sürümünden beri <code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code> gerekmemektedir.</td></tr></table>
<h3>Özet</h3>

    <p>Bu modül istemci isteklerinin adli günlük kayıtlarının tutulmasını
      sağlar. Günlük kaydı bir istek işlenmeden önce ve sonra olmak üzere iki
      kere yapılır, böylece günlükte her istek için iki girdi bulunur. Adli
      günlükleyici çok sıkı kurallara tabidir, yani:</p>

    <ul>
    <li>Biçem sabittir. Günlük kayıt biçemi çalışma anında değiştirilemez.</li>
    <li>Veriyi yazamadığı takdirde çocuk süreç beklemeksizin çıkar ve
      (<code class="directive"><a href="../mod/mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></code>
      yapılandırmasına bağlı olarak) bir core dosyası dökümler.</li>
    </ul>

    <p>Dağıtımın <code>support</code> dizininde bulunan
      <code>check_forensic</code> betiği adli günlük dosyalarının
      değerlendirilmesinde yardımcı olabilir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#forensiclog">ForensicLog</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#formats">Adli Günlük Biçemi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Güvenlik Kaygıları</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../logs.html">Apache Günlük Dosyaları</a></li>
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="formats" id="formats">Adli Günlük Biçemi</a></h2>
    <p>Her istek günlüğe iki defa kaydedilir. İlki, işlemin başlangıcında
      (yani, başlıklar alındıktan hemen sonra), ikincisi ise istek işlem
      gördükten sonra normal günlüklemenin yapıldığı sırada yapılır.</p>

    <p>Her isteği betimlemek için eşsiz bir istek kimliği atanır. Bu adli
      kimliğin normal günlüğe de yazılması istenirse bu
      <code>%{forensic-id}n</code> biçem dizgesi ile yapılabilir.
      <code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code> kullanılıyorsa, onun ürettiği kimlik
      kullanılır.</p>

    <p>İlk satır günlüğe, adli kimliği, istek satırını ve alınan tüm
      başlıkları boru karakterleri (<code>|</code>) ile ayrılmış olarak
      kaydeder. Aşağıda bir örneğe yer verilmiştir (hepsi bir satırdadır):</p>

    <div class="example"><p><code>
        +yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif
        HTTP/1.1|Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11;
        U; Linux i686; en-US; rv%3a1.6) Gecko/20040216
        Firefox/0.8|Accept:image/png, <var>etc...</var>
    </code></p></div>

    <p>Başlangıçtaki artı imi bu günlük satırının istekle ilgili ilk günlük
      kaydı olduğunu belirtir. İkinci satırda bunun yerini bir eksi imi
      alır:</p>

    <div class="example"><p><code>
      -yQtJf8CoAB4AAFNXBIEAAAAA
    </code></p></div>

    <p><code>check_forensic</code> betiği komut satırı argümanı olarak günlük
      dosyasının ismini alır. Bu <code>+</code>/<code>-</code> kimlik
      çiftlerine bakarak tamamlanmamış istekler varsa bunlar hakkında
      uyarır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Kaygıları</a></h2>
    <p>Günlük dosyarının kaydedildiği dizine sunucuyu başlatan kullanıcı
      dışında diğer kullanıcılar tarafından yazılabiliyor olması halinde
      güvenliğinizden nasıl feragat etmiş olacağınız <a href="../misc/security_tips.html#serverroot">güvenlik ipuçları</a>
      belgesinde açıklanmıştır.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ForensicLog" id="ForensicLog">ForensicLog</a> <a name="forensiclog" id="forensiclog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Adli günlük için dosya ismini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ForensicLog <var>dosya-adı</var>|<var>borulu-süreç</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_log_forensic</td></tr>
</table>
    <p><code class="directive">ForensicLog</code> yönergesi adli inceleme için
      sunucuya yapılan istekleri günlüğe kaydetmekte kullanılır. Her günlük
      girdisine, normal <code class="directive"><a href="../mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinde kullanılarak istekle
      ilişkilendirilebilen eşsiz bir kimlik atanır.
      <code class="module"><a href="../mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü, aktarım günlüğünün biçem
      dizgesinde <code>%{forensic-id}n</code> şeklinde kullanılmak üzere
      <code>forensic-id</code> adı verilen bir dizgecik oluşturur.</p>

    <p>Günlüğün yazılacağı yeri belirleyen argüman şu iki değerden birini
      alabilir:</p>

    <dl>
      <dt><var>dosya-adı</var></dt>
      <dd><code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergesinin
        değerine göreli bir dosya ismi.</dd>

      <dt><var>borulu-süreç</var></dt>
      <dd>"<code>|</code>" boru karakteri ile öncelenmiş olarak günlük
        bilgisini standart girdisinden kabul edecek sürecin ismi (veya komut
        satırı). Program adının <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergesinin değerine göre belirtildiği
        varsayılır.

      <div class="warning"><h3>Güvenlik:</h3>
      <p>Bir borulu süreç kullanılmışsa, süreç <code class="program"><a href="../programs/httpd.html">httpd</a></code>’yi
        başlatan kullanıcı tarafından başlatılacaktır. Sunucu root tarafından
        başlatılıyorsa bu root olacaktır; bu bakımdan günlük kaydını alacak
        programın güvenilir olması veya daha az yetkili bir kullanıcıya geçiş
        yapması önemlidir.</p>
      </div>

      <div class="warning"><h3>Bilginize</h3>
        <p>Dosya yolunu belirtirken tersbölü çizgisi kullanılan Unix dışı
          platformlarda bile yapılandırma dosyasında bu amaçla normal bölü
          çizgilerini kullanmaya özen gösterilmelidir.</p>
      </div></dd>
    </dl>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                mod/mod_logio.html                                                                                  100644       0       0        11237 11256641270  11652  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_logio - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_logio</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Her isteğin girdi ve çıktı uzunluklarının günlüklenmesi.
</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>logio_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_logio.c</td></tr></table>
<h3>Özet</h3>


    <p>Bu modül her istekte alınan ve gönderilen bayt sayısının günlüklenmesini
      sağlar. Sayılar, istekte ve yanıtta yer alan başlıklar ve gövdeleri
      hesaba dahil ederek ağ üzerinde gerçekte gidip gelen bayt sayısını
      gösterir. Bayt sayımı, girdide SSL/TLS öncesinde ve çıktıda SSL/TLS
      sonrasında yapılır, böylece sayıların, şifrelemeyle herhangi bir
      değişikliği doğru olarak yansıtması sağlanmış olur.</p>

    <p>Bu modül <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> modülünü gerektirir.</p>

    <div class="note">SSL ile <code>KeepAlive</code> bağlantılar kullanıldığında, SSL
      uzlaşımının ek yükü, bağlantı üzerinden yapılan ilk isteğin bayt sayısını
      yansıtır. Her dizin için yeniden uzlaşım gerektiği takdirde bayt sayısı
      yeniden uzlaşımı tetikleyen istekle ilişkilendirilir.</div>

</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<p>Bu modül yönerge içermez.</p>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#formats">Özel Günlük Biçemleri</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
<li><a href="../logs.html">Apache Günlük Dosyaları</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="formats" id="formats">Özel Günlük Biçemleri</a></h2>


    <p>İsteğin belirgin özellikleri için, biçem dizgesinde yer alan % imli
      biçem belirteçlerinin yerine günlük dosyasında değerleri yazılır. Bu
      modül iki yeni biçem belirteci ekler:</p>

    <table class="bordered"><tr class="header"><th>Biçem&nbsp;Belirteci</th>
        <th>Açıklama</th></tr>
<tr><td><code>%...I</code></td>
        <td>İstek gövdesi ve başlıklar dahil alınan bayt sayısı; sıfır
          olamaz.</td></tr>
<tr class="odd"><td><code>%...O</code></td>
        <td>Başlıklar dahil gönderilen bayt sayısı; sıfır olamaz.</td></tr>
</table>

    <p>Genel olarak, işlevsellik şöyle kullanılır:</p>

    <dl>
      <dt>Birleşik G/Ç günlükleme biçemi:</dt>
      <dd><code>"%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
      \"%{User-agent}i\" %I %O"</code></dd>
    </dl>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                 mod/mod_mem_cache.html                                                                              100644       0       0        36450 11256641270  12446  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_mem_cache - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_mem_cache</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Content cache keyed to URIs</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mem_cache_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_mem_cache.c</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>. It acts as a support module for <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> and provides a memory based storage manager.
    <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> can be configured to operate in two
    modes: caching open file descriptors or caching objects in heap storage.
    <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> is most useful when used to cache locally
    generated content or to cache backend server content for <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> configured for <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> (aka <dfn>reverse proxy</dfn>).</p>

    <p>Content is stored in and retrieved from the cache using URI based
    keys. Content with access protection is not cached.</p>
    
    <div class="note"><h3>Note</h3>In most cases <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>
    should be the preferred choice. This is explained further in the <a href="../caching.html#inmemory">Caching Guide</a>.  In particular,
    this module's cache is <em>per-process</em>, which can be partially
    mitigated by configuring threaded MPMS to use fewer child processes
    via configuration of larger values for <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>.  This module's cache is 
    also limited to storing a single variant (see HTTP Vary: header) of each 
    resource in the cache.</div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#mcachemaxobjectcount">MCacheMaxObjectCount</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mcachemaxobjectsize">MCacheMaxObjectSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mcachemaxstreamingbuffer">MCacheMaxStreamingBuffer</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mcacheminobjectsize">MCacheMinObjectSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mcachesize">MCacheSize</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code></li>
<li><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheMaxObjectCount" id="MCacheMaxObjectCount">MCacheMaxObjectCount</a> <a name="mcachemaxobjectcount" id="mcachemaxobjectcount">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum number of objects allowed to be placed in the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheMaxObjectCount <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheMaxObjectCount 1009</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheMaxObjectCount</code> directive sets the
    maximum number of objects to be cached. The value is used to create the
    open hash table. If a new object needs to be inserted in the cache and
    the maximum number of objects has been reached, an object will be
    removed to allow the new object to be cached. The object to be removed
    is selected using the algorithm specified by <code class="directive"><a href="#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></code>.</p>

    <div class="example"><h3>Example</h3><p><code>
      MCacheMaxObjectCount 13001
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheMaxObjectSize" id="MCacheMaxObjectSize">MCacheMaxObjectSize</a> <a name="mcachemaxobjectsize" id="mcachemaxobjectsize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum size (in bytes) of a document allowed in the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheMaxObjectSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheMaxObjectSize 10000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheMaxObjectSize</code> directive sets the
    maximum allowable size, in bytes, of a document for it to be considered
    cacheable.</p>

    <div class="example"><h3>Example</h3><p><code>
      MCacheMaxObjectSize 6400000
    </code></p></div>

    <div class="note"><h3>Note</h3>
      <p>The value of <code class="directive">MCacheMaxObjectSize</code> must be
      greater than the value specified by the <code class="directive"><a href="#mcacheminobjectsize">MCacheMinObjectSize</a></code> directive.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheMaxStreamingBuffer" id="MCacheMaxStreamingBuffer">MCacheMaxStreamingBuffer</a> <a name="mcachemaxstreamingbuffer" id="mcachemaxstreamingbuffer">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum amount of a streamed response to buffer in memory
before declaring the response uncacheable</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheMaxStreamingBuffer <var>size_in_bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheMaxStreamingBuffer the smaller of 100000 or MCacheMaxObjectSize</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheMaxStreamingBuffer</code> directive
    specifies the maximum number of bytes of a streamed response to
    buffer before deciding that the response is too big to cache.
    A streamed response is one in which the entire content is not
    immediately available and in which the <code>Content-Length</code>
    may not be known. Sources of streaming responses include proxied
    responses and the output of CGI scripts. By default, a streamed
    response will <em>not</em> be cached unless it has a
    <code>Content-Length</code> header. The reason for this is to
    avoid using a large amount of memory to buffer a partial response
    that might end up being too large to fit in the cache.
    The <code class="directive">MCacheMaxStreamingBuffer</code> directive allows
    buffering of streamed responses that don't contain a
    <code>Content-Length</code> up to the specified maximum amount of
    space. If the maximum buffer space is reached, the buffered
    content is discarded and the attempt to cache is abandoned.</p>

    <div class="note"><h3>Note:</h3>
      <p>Using a nonzero value for <code class="directive">MCacheMaxStreamingBuffer</code> 
      will not delay the transmission of the response to the client.
      As soon as <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> copies a block of streamed
      content into a buffer, it sends the block on to the next output
      filter for delivery to the client.</p>
    </div>

    <div class="example"><p><code>
      # Enable caching of streamed responses up to 64KB:<br />
      MCacheMaxStreamingBuffer 65536
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheMinObjectSize" id="MCacheMinObjectSize">MCacheMinObjectSize</a> <a name="mcacheminobjectsize" id="mcacheminobjectsize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The minimum size (in bytes) of a document to be allowed in the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheMinObjectSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheMinObjectSize 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheMinObjectSize</code> directive sets the
    minimum size in bytes of a document for it to be considered
    cacheable.</p>

    <div class="example"><h3>Example</h3><p><code>
      MCacheMinObjectSize 10000
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheRemovalAlgorithm" id="MCacheRemovalAlgorithm">MCacheRemovalAlgorithm</a> <a name="mcacheremovalalgorithm" id="mcacheremovalalgorithm">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The algorithm used to select documents for removal from the
cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheRemovalAlgorithm LRU|GDSF</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheRemovalAlgorithm GDSF</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheRemovalAlgorithm</code> directive specifies
    the algorithm used to select documents for removal from the cache.
    Two choices are available:</p>

    <dl>
      <dt><code>LRU</code> (Least Recently Used)</dt>
      <dd><code>LRU</code> removes the documents that have not been accessed
      for the longest time.</dd>

      <dt><code>GDSF</code> (GreadyDual-Size)</dt>
      <dd><code>GDSF</code> assigns a priority to cached documents based
      on the cost of a cache miss and the size of the document. Documents
      with the lowest priority are removed first.</dd>
    </dl>

    <div class="example"><h3>Example</h3><p><code>
      MCacheRemovalAlgorithm GDSF<br />
      MCacheRemovalAlgorithm LRU
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MCacheSize" id="MCacheSize">MCacheSize</a> <a name="mcachesize" id="mcachesize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum amount of memory used by the cache in
KBytes</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MCacheSize <var>KBytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MCacheSize 100</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mem_cache</td></tr>
</table>
    <p>The <code class="directive">MCacheSize</code> directive sets the maximum
    amount of memory to be used by the cache, in KBytes (1024-byte units).
    If a new object needs to be inserted in the cache and the size of the
    object is greater than the remaining memory, objects will be removed
    until the new object can be cached. The object to be removed is
    selected using the algorithm specified by <code class="directive"><a href="#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></code>.</p>

    <div class="example"><h3>Example</h3><p><code>
      MCacheSize 700000
    </code></p></div>

    <div class="note"><h3>Note</h3>
      <p>The <code class="directive">MCacheSize</code> value must be greater than
      the value specified by the <code class="directive"><a href="#mcachemaxobjectsize">MCacheMaxObjectSize</a></code> directive.</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                        mod/mod_mime.html                                                                                   100644       0       0       165160 11256641270  11515  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_mime - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_mime</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Associates the requested filename's extensions
    with the file's behavior (handlers and filters)
    and content (mime-type, language, character set and
    encoding)</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mime_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_mime.c</td></tr></table>
<h3>Summary</h3>

    <p>This module is used to associate various bits of "meta
    information" with files by their filename extensions. This
    information relates the filename of the document to it's
    mime-type, language, character set and encoding. This
    information is sent to the browser, and participates in content
    negotiation, so the user's preferences are respected when
    choosing one of several possible files to serve. See
    <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code> for more information
    about <a href="../content-negotiation.html">content negotiation</a>.</p>

    <p>The directives <code class="directive"><a href="#addcharset">AddCharset</a></code>, <code class="directive"><a href="#addencoding">AddEncoding</a></code>, <code class="directive"><a href="#addlanguage">AddLanguage</a></code> and <code class="directive"><a href="#addtype">AddType</a></code> are all used to map file
    extensions onto the meta-information for that file. Respectively
    they set the character set, content-encoding, content-language,
    and <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> (content-type) of documents.  The directive <code class="directive"><a href="#typesconfig">TypesConfig</a></code> is used to specify a
    file which also maps extensions onto MIME types. </p>

    <p>In addition, <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> may define the <a href="../handler.html">handler</a> and <a href="../filter.html">filters</a> that originate and process
    content.  The directives <code class="directive"><a href="#addhandler">AddHandler</a></code>, <code class="directive"><a href="#addoutputfilter">AddOutputFilter</a></code>, and <code class="directive"><a href="#addinputfilter">AddInputFilter</a></code> control the modules
    or scripts that serve the document.  The <code class="directive"><a href="#multiviewsmatch">MultiviewsMatch</a></code> directive allows
    <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code> to consider these file extensions
    to be included when testing Multiviews matches.</p>

    <p>While <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> associates meta-information
    with filename extensions, the <code class="module"><a href="../mod/core.html">core</a></code> server
    provides directives that are used to associate all the files in a
    given container (<em>e.g.</em>, <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>, <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, or <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code>) with particular
    meta-information. These directives include <code class="directive"><a href="../mod/core.html#forcetype">ForceType</a></code>, <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>, <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code>, and <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code>.  The core directives
    override any filename extension mappings defined in
    <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>.</p>

    <p>Note that changing the meta-information for a file does not
    change the value of the <code>Last-Modified</code> header.
    Thus, previously cached copies may still be used by a client or
    proxy, with the previous headers. If you change the
    meta-information (language, content type, character set or
    encoding) you may need to 'touch' affected files (updating
    their last modified date) to ensure that all visitors are
    receive the corrected content headers.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#addcharset">AddCharset</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addencoding">AddEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addhandler">AddHandler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addinputfilter">AddInputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addlanguage">AddLanguage</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addoutputfilter">AddOutputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addtype">AddType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#defaultlanguage">DefaultLanguage</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#modmimeusepathinfo">ModMimeUsePathInfo</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#multiviewsmatch">MultiviewsMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removecharset">RemoveCharset</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removeencoding">RemoveEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removehandler">RemoveHandler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removeinputfilter">RemoveInputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removelanguage">RemoveLanguage</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removeoutputfilter">RemoveOutputFilter</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#removetype">RemoveType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#typesconfig">TypesConfig</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#multipleext">Files with Multiple Extensions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#contentencoding">Content encoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#charset-lang">Character sets and languages</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></code></li>
<li><code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code></li>
<li><code class="directive"><a href="../mod/core.html#forcetype">ForceType</a></code></li>
<li><code class="directive"><a href="../mod/core.html#defaulttype">DefaultType</a></code></li>
<li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li>
<li><code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code></li>
<li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multipleext" id="multipleext">Files with Multiple Extensions</a></h2>
    <p>Files can have more than one extension, and the order of the
    extensions is <em>normally</em> irrelevant. For example, if the
    file <code>welcome.html.fr</code> maps onto content type
    <code>text/html</code> and language French then the file
    <code>welcome.fr.html</code> will map onto exactly the same
    information.  If more than one extension is given that maps onto
    the same type of meta-information, then the one to the right will
    be used, except for languages and content encodings. For example,
    if <code>.gif</code> maps to the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a>
    <code>image/gif</code> and <code>.html</code> maps to the
    MIME-type <code>text/html</code>, then the file
    <code>welcome.gif.html</code> will be associated with the
    MIME-type <code>text/html</code>.</p>

    <p><a href="#charset-lang">Languages</a> and <a href="#contentencoding">content encodings</a> are treated accumulative, because one can assign
    more than one language or encoding to a particular resource. For example,
    the file <code>welcome.html.en.de</code> will be delivered with
    <code>Content-Language: en, de</code> and <code>Content-Type:
    text/html</code>.</p>

    <p>Care should be taken when a file with multiple extensions
    gets associated with both a <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> and a handler. This will
    usually result in the request being handled by the module associated
    with the handler. For example, if the <code>.imap</code>
    extension is mapped to the handler <code>imap-file</code> (from
    <code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code>) and the <code>.html</code> extension is
    mapped to the MIME-type <code>text/html</code>, then the file
    <code>world.imap.html</code> will be associated with both the
    <code>imap-file</code> handler and <code>text/html</code> MIME-type.
    When it is processed, the <code>imap-file</code> handler will be used,
    and so it will be treated as a <code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code> imagemap
    file.</p>

    <p>If you would prefer only the last dot-separated part of the
    filename to be mapped to a particular piece of meta-data, then do
    not use the <code>Add*</code> directives. For example, if you wish
    to have the file <code>foo.html.cgi</code> processed as a CGI
    script, but not the file <code>bar.cgi.html</code>, then instead
    of using <code>AddHandler cgi-script .cgi</code>, use</p>

    <div class="example"><h3>Configure handler based on final extension only</h3><p><code>
    &lt;FilesMatch \.cgi$&gt;
    <span class="indent">
      SetHandler cgi-script
    </span>
    &lt;/FilesMatch&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="contentencoding" id="contentencoding">Content encoding</a></h2>
    <p>A file of a particular <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> can additionally be encoded a
    particular way to simplify transmission over the Internet.
    While this usually will refer to compression, such as
    <code>gzip</code>, it can also refer to encryption, such a
    <code>pgp</code> or to an encoding such as UUencoding, which is
    designed for transmitting a binary file in an ASCII (text)
    format.</p>

    <p>The <a href="http://www.ietf.org/rfc/rfc2616.txt">HTTP/1.1
    RFC</a>, section 14.11 puts it this way:</p>

    <blockquote cite="http://www.ietf.org/rfc/rfc2616.txt">
      <p>The Content-Encoding entity-header field is used as a modifier to
      the media-type. When present, its value indicates what additional
      content codings have been applied to the entity-body, and thus what
      decoding mechanisms must be applied in order to obtain the media-type
      referenced by the Content-Type header field. Content-Encoding is
      primarily used to allow a document to be compressed without losing
      the identity of its underlying media type.</p>
    </blockquote>

    <p>By using more than one file extension (see <a href="#multipleext">section above about multiple file
    extensions</a>), you can indicate that a file is of a
    particular <em>type</em>, and also has a particular
    <em>encoding</em>. </p>

    <p>For example, you may have a file which is a Microsoft Word
    document, which is pkzipped to reduce its size. If the
    <code>.doc</code> extension is associated with the Microsoft
    Word file type, and the <code>.zip</code> extension is
    associated with the pkzip file encoding, then the file
    <code>Resume.doc.zip</code> would be known to be a pkzip'ed Word
    document.</p>

    <p>Apache sends a <code>Content-encoding</code> header with the
    resource, in order to tell the client browser about the
    encoding method.</p>

    <div class="example"><p><code>Content-encoding: pkzip</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="charset-lang" id="charset-lang">Character sets and languages</a></h2>
    <p>In addition to file type and the file encoding,
    another important piece of information is what language a
    particular document is in, and in what character set the file
    should be displayed. For example, the document might be written
    in the Vietnamese alphabet, or in Cyrillic, and should be
    displayed as such. This information, also, is transmitted in
    HTTP headers.</p>

    <p>The character set, language, encoding and mime type are all 
    used in the process of content negotiation (See 
    <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>) to determine
    which document to give to the client, when there are
    alternative documents in more than one character set, language, 
    encoding or mime type. All filename extensions associations
    created with <code class="directive"><a href="#addcharset">AddCharset</a></code>,
    <code class="directive"><a href="#addencoding">AddEncoding</a></code>, <code class="directive"><a href="#addlanguage">AddLanguage</a></code> and <code class="directive"><a href="#addtype">AddType</a></code> directives
    (and extensions listed in the <code class="directive"><a href="../mod/mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></code>) participate in this select process.
    Filename extensions that are only associated using the <code class="directive"><a href="#addhandler">AddHandler</a></code>, <code class="directive"><a href="#addinputfilter">AddInputFilter</a></code> or <code class="directive"><a href="#addoutputfilter">AddOutputFilter</a></code> directives may be included or excluded
    from matching by using the <code class="directive"><a href="#multiviewsmatch">MultiviewsMatch</a></code> directive.</p>

    <h3><a name="charset" id="charset">Charset</a></h3>
      <p>To convey this further information, Apache optionally sends
      a <code>Content-Language</code> header, to specify the language
      that the document is in, and can append additional information
      onto the <code>Content-Type</code> header to indicate the
      particular character set that should be used to correctly
      render the information.</p>

      <div class="example"><p><code>
        Content-Language: en, fr<br />
	Content-Type: text/plain; charset=ISO-8859-1
      </code></p></div>

      <p>The language specification is the two-letter abbreviation
      for the language. The <code>charset</code> is the name of the
      particular character set which should be used.</p>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddCharset" id="AddCharset">AddCharset</a> <a name="addcharset" id="addcharset">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps the given filename extensions to the specified content
charset</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddCharset <var>charset</var> <var>extension</var>
[<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">AddCharset</code> directive maps the given
    filename extensions to the specified content charset. <var>charset</var>
    is the <a href="http://www.iana.org/assignments/character-sets">MIME
    charset parameter</a> of filenames containing
    <var>extension</var>. This mapping is added to any already in force,
    overriding any mappings that already exist for the same
    <var>extension</var>.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddLanguage ja .ja<br />
      AddCharset EUC-JP .euc<br />
      AddCharset ISO-2022-JP .jis<br />
      AddCharset SHIFT_JIS .sjis
    </code></p></div>

    <p>Then the document <code>xxxx.ja.jis</code> will be treated
    as being a Japanese document whose charset is <code>ISO-2022-JP</code>
    (as will the document <code>xxxx.jis.ja</code>). The
    <code class="directive">AddCharset</code> directive is useful for both to
    inform the client about the character encoding of the document so that
    the document can be interpreted and displayed appropriately, and for <a href="../content-negotiation.html">content negotiation</a>,
    where the server returns one from several documents based on
    the client's charset preference.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>


<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></li>
<li><code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddEncoding" id="AddEncoding">AddEncoding</a> <a name="addencoding" id="addencoding">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps the given filename extensions to the specified encoding
type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddEncoding <var>MIME-enc</var> <var>extension</var>
[<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">AddEncoding</code> directive maps the given
    filename extensions to the specified encoding type. <var>MIME-enc</var>
    is the MIME encoding to use for documents containing the
    <var>extension</var>. This mapping is added to any already in force,
    overriding any mappings that already exist for the same
    <var>extension</var>.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddEncoding x-gzip .gz<br />
      AddEncoding x-compress .Z
    </code></p></div>

    <p>This will cause filenames containing the <code>.gz</code> extension
    to be marked as encoded using the <code>x-gzip</code> encoding, and
    filenames containing the <code>.Z</code> extension to be marked as
    encoded with <code>x-compress</code>.</p>

    <p>Old clients expect <code>x-gzip</code> and <code>x-compress</code>,
    however the standard dictates that they're equivalent to
    <code>gzip</code> and <code>compress</code> respectively. Apache does
    content encoding comparisons by ignoring any leading <code>x-</code>.
    When responding with an encoding Apache will use whatever form
    (<em>i.e.</em>, <code>x-foo</code> or <code>foo</code>) the
    client requested. If the client didn't specifically request a
    particular form Apache will use the form given by the
    <code>AddEncoding</code> directive. To make this long story
    short, you should always use <code>x-gzip</code> and
    <code>x-compress</code> for these two specific encodings. More
    recent encodings, such as <code>deflate</code> should be
    specified without the <code>x-</code>.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddHandler" id="AddHandler">AddHandler</a> <a name="addhandler" id="addhandler">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps the filename extensions to the specified
handler</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddHandler <var>handler-name</var> <var>extension</var>
[<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>Files having the name <var>extension</var> will be served by the
    specified <var><a href="../handler.html">handler-name</a></var>. This
    mapping is added to any already in force, overriding any mappings that
    already exist for the same <var>extension</var>. For example, to
    activate CGI scripts with the file extension <code>.cgi</code>, you
    might use:</p>

    <div class="example"><p><code>
      AddHandler cgi-script .cgi
    </code></p></div>

    <p>Once that has been put into your httpd.conf file, any file containing
    the <code>.cgi</code> extension will be treated as a CGI program.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddInputFilter" id="AddInputFilter">AddInputFilter</a> <a name="addinputfilter" id="addinputfilter">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps filename extensions to the filters that will process
client requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddInputFilter <var>filter</var>[;<var>filter</var>...]
<var>extension</var> [<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>AddInputFilter is only available in Apache 2.0.26 and
later.</td></tr>
</table>
    <p><code class="directive">AddInputFilter</code> maps the filename extension
    <var>extension</var> to the <a href="../filter.html">filters</a> which
    will process client requests and POST input when they are received by
    the server. This is in addition to any filters defined elsewhere,
    including the <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code>
    directive. This mapping is merged over any already in force, overriding
    any mappings that already exist for the same <var>extension</var>.</p>

    <p>If more than one <var>filter</var> is specified, they must be separated
    by semicolons in the order in which they should process the
    content. The <var>filter</var> is case-insensitive.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>


<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#removeinputfilter">RemoveInputFilter</a></code></li>
<li><code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddLanguage" id="AddLanguage">AddLanguage</a> <a name="addlanguage" id="addlanguage">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps the given filename extension to the specified content
language</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddLanguage <var>MIME-lang</var> <var>extension</var>
[<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">AddLanguage</code> directive maps the given
    filename extension to the specified content language.
    <var>MIME-lang</var> is the MIME language of filenames containing
    <var>extension</var>. This mapping is added to any already in force,
    overriding any mappings that already exist for the same
    <var>extension</var>.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddEncoding x-compress .Z<br />
      AddLanguage en .en<br />
      AddLanguage fr .fr
    </code></p></div>

    <p>Then the document <code>xxxx.en.Z</code> will be treated as
    being a compressed English document (as will the document
    <code>xxxx.Z.en</code>). Although the content language is
    reported to the client, the browser is unlikely to use this
    information. The <code class="directive">AddLanguage</code> directive is
    more useful for <a href="../content-negotiation.html">content
    negotiation</a>, where the server returns one from several documents
    based on the client's language preference.</p>

    <p>If multiple language assignments are made for the same
    extension, the last one encountered is the one that is used.
    That is, for the case of:</p>

    <div class="example"><p><code>
      AddLanguage en .en<br />
      AddLanguage en-gb .en<br />
      AddLanguage en-us .en
    </code></p></div>

    <p>documents with the extension <code>.en</code> would be treated as
    being <code>en-us</code>.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>

<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddOutputFilter" id="AddOutputFilter">AddOutputFilter</a> <a name="addoutputfilter" id="addoutputfilter">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps filename extensions to the filters that will process
responses from the server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddOutputFilter <var>filter</var>[;<var>filter</var>...]
<var>extension</var> [<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>AddOutputFilter is only available in Apache 2.0.26 and
later.</td></tr>
</table>
    <p>The <code class="directive">AddOutputFilter</code> directive maps the
    filename extension <var>extension</var> to the <a href="../filter.html">filters</a> which will process responses
    from the server before they are sent to the client. This is in
    addition to any filters defined elsewhere, including <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code> and <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> directive. This mapping is merged
    over any already in force, overriding any mappings that already exist
    for the same <var>extension</var>.</p>

    <p>For example, the following configuration will process all
    <code>.shtml</code> files for server-side includes and will then
    compress the output using <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>.</p>

    <div class="example"><p><code>
      AddOutputFilter INCLUDES;DEFLATE shtml
    </code></p></div>

    <p>If more than one filter is specified, they must be separated
    by semicolons in the order in which they should process the
    content. The <var>filter</var> argument is case-insensitive.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#removeoutputfilter">RemoveOutputFilter</a></code></li>
<li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddType" id="AddType">AddType</a> <a name="addtype" id="addtype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps the given filename extensions onto the specified content
type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddType <var>MIME-type</var> <var>extension</var>
[<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">AddType</code> directive maps the given
    filename extensions onto the specified content
    type. <var>MIME-type</var> is the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME
    type</a> to use for filenames containing
    <var>extension</var>. This mapping is added to any already in
    force, overriding any mappings that already exist for the same
    <var>extension</var>. This directive can be used to add mappings
    not listed in the MIME types file (see the <code class="directive"><a href="#typesconfig">TypesConfig</a></code> directive).</p>
    
    <div class="example"><h3>Example</h3><p><code>
      AddType image/gif .gif
    </code></p></div>

    <div class="note">
      It is recommended that new MIME types be added using the
      <code class="directive">AddType</code> directive rather than changing the 
      <code class="directive"><a href="#typesconfig">TypesConfig</a></code> file.
    </div>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot. Filenames may have <a href="#multipleext">multiple extensions</a> and the
    <var>extension</var> argument will be compared against each of
    them.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/core.html#defaulttype">DefaultType</a></code></li>
<li><code class="directive"><a href="../mod/core.html#forcetype">ForceType</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DefaultLanguage" id="DefaultLanguage">DefaultLanguage</a> <a name="defaultlanguage" id="defaultlanguage">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets all files in the given scope to the specified
language</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DefaultLanguage <var>MIME-lang</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">DefaultLanguage</code> directive tells Apache
    that all files in the directive's scope (<em>e.g.</em>, all files
    covered by the current <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> container) that don't have an explicit language
    extension (such as <code>.fr</code> or <code>.de</code> as configured
    by <code class="directive"><a href="#addlanguage">AddLanguage</a></code>) should be
    considered to be in the specified <var>MIME-lang</var> language. This
    allows entire directories to be marked as containing Dutch content, for
    instance, without having to rename each file. Note that unlike using
    extensions to specify languages, <code class="directive">DefaultLanguage</code>
    can only specify a single language.</p>

    <p>If no <code class="directive">DefaultLanguage</code> directive is in force,
    and a file does not have any language extensions as configured
    by <code class="directive"><a href="#addlanguage">AddLanguage</a></code>, then that file
    will be considered to have no language attribute.</p>

    <div class="example"><h3>Example</h3><p><code>
      DefaultLanguage en
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ModMimeUsePathInfo" id="ModMimeUsePathInfo">ModMimeUsePathInfo</a> <a name="modmimeusepathinfo" id="modmimeusepathinfo">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Tells <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> to treat <code>path_info</code>
components as part of the filename</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ModMimeUsePathInfo On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ModMimeUsePathInfo Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.41 and later</td></tr>
</table>
    <p>The <code class="directive">ModMimeUsePathInfo</code> directive is used to
    combine the filename with the <code>path_info</code> URL component to
    apply <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>'s directives to the request. The default
    value is <code>Off</code> - therefore, the <code>path_info</code>
    component is ignored.</p>

    <p>This directive is recommended when you have a virtual filesystem.</p>

    <div class="example"><h3>Example</h3><p><code>
      ModMimeUsePathInfo On
    </code></p></div>

    <p>If you have a request for <code>/bar/foo.shtml</code> where
    <code>/bar</code> is a Location and <code class="directive">ModMimeUsePathInfo</code> is <code>On</code>,
    <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> will treat the incoming request as
    <code>/bar/foo.shtml</code> and directives like <code>AddOutputFilter
    INCLUDES .shtml</code> will add the <code>INCLUDES</code> filter to the
    request. If <code class="directive">ModMimeUsePathInfo</code> is not set, the
    <code>INCLUDES</code> filter will not be added.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MultiviewsMatch" id="MultiviewsMatch">MultiviewsMatch</a> <a name="multiviewsmatch" id="multiviewsmatch">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The types of files that will be included when searching for
a matching file with MultiViews</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers
[Handlers|Filters]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MultiviewsMatch NegotiatedOnly</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.26 and later.</td></tr>
</table>
    <p><code class="directive">MultiviewsMatch</code> permits three different
    behaviors for <a href="mod_negotiation.html">mod_negotiation</a>'s
    Multiviews feature.  Multiviews allows a request for a file,
    <em>e.g.</em> <code>index.html</code>, to match any negotiated
    extensions following the base request, <em>e.g.</em>
    <code>index.html.en</code>, <code>index.html.fr</code>, or
    <code>index.html.gz</code>.</p>

    <p>The <code>NegotiatedOnly</code> option provides that every extension
    following the base name must correlate to a recognized
    <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> extension for content negotation, <em>e.g.</em>
    Charset, Content-Type, Language, or Encoding.  This is the strictest
    implementation with the fewest unexpected side effects, and is the
    default behavior.</p>

    <p>To include extensions associated with Handlers and/or Filters,
    set the <code class="directive">MultiviewsMatch</code> directive to either
    <code>Handlers</code>, <code>Filters</code>, or both option keywords.
    If all other factors are equal, the smallest file will be served,
    <em>e.g.</em> in deciding between <code>index.html.cgi</code> of 500
    bytes and <code>index.html.pl</code> of 1000 bytes, the <code>.cgi</code>
    file would win in this example. Users of <code>.asis</code> files
    might prefer to use the Handler option, if <code>.asis</code> files are
    associated with the <code>asis-handler</code>.</p>

    <p>You may finally allow <code>Any</code> extensions to match, even if
    <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> doesn't recognize the extension. This was the
    behavior in Apache 1.3, and can cause unpredicatable results, such as
    serving .old or .bak files the webmaster never expected to be served.</p>

    <p>For example, the following configuration will allow handlers
    and filters to participate in Multviews, but will exclude unknown
    files:</p>

    <div class="example"><p><code>
      MultiviewsMatch Handlers Filters
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
<li><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveCharset" id="RemoveCharset">RemoveCharset</a> <a name="removecharset" id="removecharset">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any character set associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveCharset <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>RemoveCharset is only available in Apache 2.0.24 and
later.</td></tr>
</table>
    <p>The <code class="directive">RemoveCharset</code> directive removes any
    character set associations for files with the given extensions.
    This allows <code>.htaccess</code> files in subdirectories to
    undo any associations inherited from parent directories or the
    server config files.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

    <div class="example"><h3>Example</h3><p><code>
      RemoveCharset .html .shtml
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveEncoding" id="RemoveEncoding">RemoveEncoding</a> <a name="removeencoding" id="removeencoding">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any content encoding associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveEncoding <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">RemoveEncoding</code> directive removes any
    encoding associations for files with the given extensions. This
    allows <code>.htaccess</code> files in subdirectories to undo
    any associations inherited from parent directories or the
    server config files. An example of its use might be:</p>

    <div class="example"><h3>/foo/.htaccess:</h3><p><code>
      AddEncoding x-gzip .gz<br />
      AddType text/plain .asc<br />
      &lt;Files *.gz.asc&gt;<br />
      <span class="indent">
        RemoveEncoding .gz<br />
      </span>
      &lt;/Files&gt;
    </code></p></div>

    <p>This will cause <code>foo.gz</code> to be marked as being
    encoded with the gzip method, but <code>foo.gz.asc</code> as an
    unencoded plaintext file.</p>

    <div class="note"><h3>Note</h3>
      <p><code class="directive">RemoveEncoding</code> directives are processed
      <em>after</em> any <code class="directive"><a href="#addencoding">AddEncoding</a></code>
      directives, so it is possible they may undo the effects of the latter
      if both occur within the same directory configuration.</p>
    </div>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveHandler" id="RemoveHandler">RemoveHandler</a> <a name="removehandler" id="removehandler">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any handler associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveHandler <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">RemoveHandler</code> directive removes any
    handler associations for files with the given extensions. This allows
    <code>.htaccess</code> files in subdirectories to undo any
    associations inherited from parent directories or the server
    config files. An example of its use might be:</p>

    <div class="example"><h3>/foo/.htaccess:</h3><p><code>
      AddHandler server-parsed .html
    </code></p></div>

    <div class="example"><h3>/foo/bar/.htaccess:</h3><p><code>
      RemoveHandler .html
    </code></p></div>

    <p>This has the effect of returning <code>.html</code> files in
    the <code>/foo/bar</code> directory to being treated as normal
    files, rather than as candidates for parsing (see the <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> module).</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveInputFilter" id="RemoveInputFilter">RemoveInputFilter</a> <a name="removeinputfilter" id="removeinputfilter">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any input filter associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveInputFilter <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>RemoveInputFilter is only available in Apache 2.0.26 and
later.</td></tr>
</table>   
    <p>The <code class="directive">RemoveInputFilter</code> directive removes any
    input <a href="../filter.html">filter</a> associations for files with
    the given extensions.
    This allows <code>.htaccess</code> files in subdirectories to
    undo any associations inherited from parent directories or the
    server config files.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#addinputfilter">AddInputFilter</a></code></li>
<li><code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveLanguage" id="RemoveLanguage">RemoveLanguage</a> <a name="removelanguage" id="removelanguage">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any language associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveLanguage <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>RemoveLanguage is only available in Apache 2.0.24 and
later.</td></tr>
</table>
    <p>The <code class="directive">RemoveLanguage</code> directive removes any
    language associations for files with the given extensions. This
    allows <code>.htaccess</code> files in subdirectories to undo
    any associations inherited from parent directories or the
    server config files.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveOutputFilter" id="RemoveOutputFilter">RemoveOutputFilter</a> <a name="removeoutputfilter" id="removeoutputfilter">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any output filter associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveOutputFilter <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>RemoveOutputFilter is only available in Apache 2.0.26 and
later.</td></tr>
</table>    
    <p>The <code class="directive">RemoveOutputFilter</code> directive removes any
    output <a href="../filter.html">filter</a> associations for files with
    the given extensions.
    This allows <code>.htaccess</code> files in subdirectories to
    undo any associations inherited from parent directories or the
    server config files.</p>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

    <div class="example"><h3>Example</h3><p><code>
      RemoveOutputFilter shtml
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#addoutputfilter">AddOutputFilter</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RemoveType" id="RemoveType">RemoveType</a> <a name="removetype" id="removetype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Removes any content type associations for a set of file
extensions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RemoveType <var>extension</var> [<var>extension</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">RemoveType</code> directive removes any
    <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME type</a> associations for files with
    the given extensions. This allows <code>.htaccess</code> files in
    subdirectories to undo any associations inherited from parent
    directories or the server config files. An example of its use
    might be:</p>

    <div class="example"><h3>/foo/.htaccess:</h3><p><code>
      RemoveType .cgi
    </code></p></div>

    <p>This will remove any special handling of <code>.cgi</code>
    files in the <code>/foo/</code> directory and any beneath it,
    causing the files to be treated as being of the <code class="directive"><a href="../mod/core.html#defaulttype">DefaultType</a></code>.</p>

    <div class="note"><h3>Note</h3>
      <p><code class="directive">RemoveType</code> directives are processed
      <em>after</em> any <code class="directive"><a href="#addtype">AddType</a></code>
      directives, so it is possible they may undo the effects of the
      latter if both occur within the same directory configuration.</p>
    </div>

    <p>The <var>extension</var> argument is case-insensitive and can
    be specified with or without a leading dot.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="TypesConfig" id="TypesConfig">TypesConfig</a> <a name="typesconfig" id="typesconfig">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The location of the <code>mime.types</code> file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>TypesConfig <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>TypesConfig conf/mime.types</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime</td></tr>
</table>
    <p>The <code class="directive">TypesConfig</code> directive sets the
    location of the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME types</a>
    configuration file. <var>File-path</var> is relative to the
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>. This file sets
    the default list of mappings from filename extensions to content
    types. Most administrators use the provided
    <code>mime.types</code> file, which associates common filename
    extensions with IANA registered content types. The current list is
    maintained at <a href="http://www.iana.org/assignments/media-types/index.html">http://www.iana.org/assignments/media-types/index.html</a>.  This
    simplifies the <code>httpd.conf</code> file by providing the
    majority of media-type definitions, and may be overridden by
    <code class="directive"><a href="#addtype">AddType</a></code> directives as
    needed. You should not edit the <code>mime.types</code> file,
    because it may be replaced when you upgrade your server.</p>

    <p>The file contains lines in the format of the arguments to
    an <code class="directive"><a href="#addtype">AddType</a></code> directive:</p>

    <div class="example"><p><code>
      <var>MIME-type</var> [<var>extension</var>] ...
    </code></p></div>

    <p>The case of the extension does not matter. Blank lines, and lines
    beginning with a hash character (<code>#</code>) are ignored.</p>

    <div class="note">
      Please do <strong>not</strong> send requests to the Apache HTTP
      Server Project to add any new entries in the distributed
      <code>mime.types</code> file unless (1) they are already
      registered with IANA, and (2) they use widely accepted,
      non-conflicting filename extensions across platforms.
      <code>category/x-subtype</code> requests will be automatically
      rejected, as will any new two-letter extensions as they will
      likely conflict later with the already crowded language and
      character set namespace.
    </div>

<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code></li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                mod/mod_mime_magic.html                                                                             100644       0       0        32371 11256641270  12632  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_mime_magic - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_mime_magic</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Determines the MIME type of a file
    by looking at a few bytes of its contents</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mime_magic_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_mime_magic.c</td></tr></table>
<h3>Summary</h3>

    <p>This module determines the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME
    type</a> of files in the same way the Unix
    <code>file(1)</code> command works: it looks at the first few
    bytes of the file. It is intended as a "second line of defense"
    for cases that <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> can't resolve.</p>

    <p>This module is derived from a free version of the
    <code>file(1)</code> command for Unix, which uses "magic
    numbers" and other hints from a file's contents to figure out
    what the contents are. This module is active only if the magic
    file is specified by the <code class="directive"><a href="#mimemagicfile">MimeMagicFile</a></code> directive.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#mimemagicfile">MimeMagicFile</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#format">Format of the Magic File</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#performance">Performance Issues</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#notes">Notes</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="format" id="format">Format of the Magic File</a></h2>

    <p>The contents of the file are plain ASCII text in 4-5
    columns. Blank lines are allowed but ignored. Commented lines
    use a hash mark (<code>#</code>). The remaining lines are parsed for
    the following columns:</p>

    <table class="bordered"><tr class="header"><th>Column</th><th>Description</th></tr>
<tr><td>1</td>
        <td>byte number to begin checking from<br />
         "<code>&gt;</code>" indicates a dependency upon the previous
         non-"<code>&gt;</code>" line</td></tr>
<tr class="odd"><td>2</td>
        <td><p>type of data to match</p>
        <table class="bordered">
        
        <tr><td><code>byte</code></td>
            <td>single character</td></tr>
        <tr><td><code>short</code></td>
            <td>machine-order 16-bit integer</td></tr>
        <tr><td><code>long</code></td>
            <td>machine-order 32-bit integer</td></tr>
        <tr><td><code>string</code></td>
            <td>arbitrary-length string</td></tr>
        <tr><td><code>date</code></td>
            <td>long integer date (seconds since Unix epoch/1970)</td></tr>
        <tr><td><code>beshort</code></td>
            <td>big-endian 16-bit integer</td></tr>
        <tr><td><code>belong</code></td>
            <td>big-endian 32-bit integer</td></tr>
        <tr><td><code>bedate</code></td>
            <td>big-endian 32-bit integer date</td></tr>
        <tr><td><code>leshort</code></td>
            <td>little-endian 16-bit integer</td></tr>
        <tr><td><code>lelong</code></td>
            <td>little-endian 32-bit integer</td></tr>
        <tr><td><code>ledate</code></td>
            <td>little-endian 32-bit integer date</td></tr>
        </table></td></tr>
<tr><td>3</td>
        <td>contents of data to match</td></tr>
<tr class="odd"><td>4</td>
        <td>MIME type if matched</td></tr>
<tr><td>5</td>
        <td>MIME encoding if matched (optional)</td></tr>
</table>

    <p>For example, the following magic file lines would recognize
    some audio formats:</p>

    <div class="example"><pre># Sun/NeXT audio data
0      string      .snd
&gt;12    belong      1       audio/basic
&gt;12    belong      2       audio/basic
&gt;12    belong      3       audio/basic
&gt;12    belong      4       audio/basic
&gt;12    belong      5       audio/basic
&gt;12    belong      6       audio/basic
&gt;12    belong      7       audio/basic
&gt;12    belong     23       audio/x-adpcm</pre></div>

    <p>Or these would recognize the difference between <code>*.doc</code>
    files containing Microsoft Word or FrameMaker documents. (These are
    incompatible file formats which use the same file suffix.)</p>

    <div class="example"><pre># Frame
0  string  \&lt;MakerFile        application/x-frame
0  string  \&lt;MIFFile          application/x-frame
0  string  \&lt;MakerDictionary  application/x-frame
0  string  \&lt;MakerScreenFon   application/x-frame
0  string  \&lt;MML              application/x-frame
0  string  \&lt;Book             application/x-frame
0  string  \&lt;Maker            application/x-frame

# MS-Word
0  string  \376\067\0\043            application/msword
0  string  \320\317\021\340\241\261  application/msword
0  string  \333\245-\0\0\0           application/msword</pre></div>

    <p>An optional MIME encoding can be included as a fifth column.
    For example, this can recognize gzipped files and set the
    encoding for them.</p>

    <div class="example"><pre># gzip (GNU zip, not to be confused with
#       [Info-ZIP/PKWARE] zip archiver)

0  string  \037\213  application/octet-stream  x-gzip</pre></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="performance" id="performance">Performance Issues</a></h2>
    <p>This module is not for every system. If your system is barely
    keeping up with its load or if you're performing a web server
    benchmark, you may not want to enable this because the
    processing is not free.</p>

    <p>However, an effort was made to improve the performance of
    the original <code>file(1)</code> code to make it fit in a busy web
    server. It was designed for a server where there are thousands of users
    who publish their own documents. This is probably very common
    on intranets. Many times, it's helpful if the server can make
    more intelligent decisions about a file's contents than the
    file name allows ...even if just to reduce the "why doesn't my
    page work" calls when users improperly name their own files.
    You have to decide if the extra work suits your
    environment.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="notes" id="notes">Notes</a></h2>
    <p>The following notes apply to the <code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code>
    module and are included here for compliance with contributors'
    copyright restrictions that require their acknowledgment.</p>

    <div class="note">
      <p>mod_mime_magic: MIME type lookup via file magic numbers<br />
      Copyright (c) 1996-1997 Cisco Systems, Inc.</p>

      <p>This software was submitted by Cisco Systems to the Apache Group
      in July 1997. Future revisions and derivatives of this source code
      must acknowledge Cisco Systems as the original contributor of this
      module. All other licensing and usage conditions are those of the
      Apache Group.</p>

      <p>Some of this code is derived from the free version of the file
      command originally posted to comp.sources.unix. Copyright info for
      that program is included below as required.</p>
    </div>

    <div class="note">
      <p> - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.</p>

      <p>This software is not subject to any license of the American
      Telephone and Telegraph Company or of the Regents of the University
      of California.</p>

      <p>Permission is granted to anyone to use this software for any
      purpose on any computer system, and to alter it and redistribute it
      freely, subject to the following restrictions:</p>

      <ol>
        <li>The author is not responsible for the consequences of use of
        this software, no matter how awful, even if they arise from flaws
        in it.</li>

        <li>The origin of this software must not be misrepresented, either
        by explicit claim or by omission. Since few users ever read
        sources, credits must appear in the documentation.</li>

        <li>Altered versions must be plainly marked as such, and must not
        be misrepresented as being the original software. Since few users
        ever read sources, credits must appear in the documentation.</li>

        <li>This notice may not be removed or altered.</li>
      </ol>
    </div>

    <div class="note">
      <p>For compliance with Mr Darwin's terms: this has been very
      significantly modified from the free "file" command.</p>

      <ul>
        <li>all-in-one file for compilation convenience when moving from
        one version of Apache to the next.</li>

        <li>Memory allocation is done through the Apache API's pool
        structure.</li>

        <li>All functions have had necessary Apache API request or server
        structures passed to them where necessary to call other Apache API
        routines. (<em>i.e.</em>, usually for logging, files, or memory
        allocation in itself or a called function.)</li>

        <li>struct magic has been converted from an array to a single-ended
        linked list because it only grows one record at a time, it's only
        accessed sequentially, and the Apache API has no equivalent of
        <code>realloc()</code>.</li>

        <li>Functions have been changed to get their parameters from the
        server configuration instead of globals.  (It should be reentrant
        now but has not been tested in a threaded environment.)</li>

        <li>Places where it used to print results to stdout now saves them
        in a list where they're used to set the MIME type in the Apache
        request record.</li>

        <li>Command-line flags have been removed since they will never be
        used here.</li>
      </ul>
    </div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MimeMagicFile" id="MimeMagicFile">MimeMagicFile</a> <a name="mimemagicfile" id="mimemagicfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable MIME-type determination based on file contents
using the specified magic file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MimeMagicFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_mime_magic</td></tr>
</table>
    <p>The <code class="directive">MimeMagicFile</code> directive can be used to
    enable this module, the default file is distributed at
    <code>conf/magic</code>. Non-rooted paths are relative to the
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>. Virtual hosts will use
    the same file as the main server unless a more specific setting is
    used, in which case the more specific setting overrides the main
    server's file.</p>

    <div class="example"><h3>Example</h3><p><code>
      MimeMagicFile conf/magic
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                       mod/mod_negotiation.html                                                                            100644       0       0        40565 11256641270  13067  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_negotiation - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_negotiation</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides for <a href="../content-negotiation.html">content negotiation</a></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>negotiation_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_negotiation.c</td></tr></table>
<h3>Summary</h3>

    <p>Content negotiation, or more accurately content selection, is
    the selection of the document that best matches the clients
    capabilities, from one of several available documents. There
    are two implementations of this.</p>

    <ul>
      <li>A type map (a file with the handler
      <code>type-map</code>) which explicitly lists the files
      containing the variants.</li>

      <li>A MultiViews search (enabled by the <code>MultiViews</code>
      <code class="directive"><a href="../mod/core.html#options">Options</a></code>), where the server does
      an implicit filename pattern match, and choose from amongst the
      results.</li>
    </ul>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachenegotiateddocs">CacheNegotiatedDocs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#forcelanguagepriority">ForceLanguagePriority</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#languagepriority">LanguagePriority</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#typemaps">Type maps</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#multiviews">MultiViews</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
<li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li>
<li><a href="../content-negotiation.html">Content
Negotiation</a></li>
<li><a href="../env.html">Environment Variables</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="typemaps" id="typemaps">Type maps</a></h2>
    <p>A type map has a format similar to RFC822 mail headers. It
    contains document descriptions separated by blank lines, with
    lines beginning with a hash character ('#') treated as
    comments. A document description consists of several header
    records; records may be continued on multiple lines if the
    continuation lines start with spaces. The leading space will be
    deleted and the lines concatenated. A header record consists of
    a keyword name, which always ends in a colon, followed by a
    value. Whitespace is allowed between the header name and value,
    and between the tokens of value. The headers allowed are: </p>

    <dl>
      <dt><code>Content-Encoding:</code></dt>
      <dd>The encoding of the file. Apache only recognizes
      encodings that are defined by an <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code> directive.
      This normally includes the encodings <code>x-compress</code>
      for compress'd files, and <code>x-gzip</code> for gzip'd
      files. The <code>x-</code> prefix is ignored for encoding
      comparisons.</dd>

      <dt><code>Content-Language:</code></dt>
      <dd>The language(s) of the variant, as an Internet standard
      language tag (<a href="http://www.ietf.org/rfc/rfc1766.txt">RFC 1766</a>). An example is <code>en</code>,
      meaning English. If the variant contains more than one
      language, they are separated by a comma.</dd>

      <dt><code>Content-Length:</code></dt>
      <dd>The length of the file, in bytes. If this header is not
      present, then the actual length of the file is used.</dd>

      <dt><code>Content-Type:</code></dt>

      <dd>
        The <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME media type</a> of
        the document, with optional parameters. Parameters are
        separated from the media type and from one another by a
        semi-colon, with a syntax of <code>name=value</code>. Common
        parameters include:

        <dl>
          <dt><code>level</code></dt>
          <dd>an integer specifying the version of the media type.
          For <code>text/html</code> this defaults to 2, otherwise
          0.</dd>

          <dt><code>qs</code></dt>
          <dd>a floating-point number with a value in the range 0.0
          to 1.0, indicating the relative 'quality' of this variant
          compared to the other available variants, independent of
          the client's capabilities. For example, a jpeg file is
          usually of higher source quality than an ascii file if it
          is attempting to represent a photograph. However, if the
          resource being represented is ascii art, then an ascii
          file would have a higher source quality than a jpeg file.
          All <code>qs</code> values are therefore specific to a given
          resource.</dd>
        </dl>

        <div class="example"><h3>Example</h3><p><code>
          Content-Type: image/jpeg; qs=0.8
        </code></p></div>
      </dd>

      <dt><code>URI:</code></dt>
      <dd>uri of the file containing the variant (of the given
      media type, encoded with the given content encoding). These
      are interpreted as URLs relative to the map file; they must
      be on the same server (!), and they must refer to files to
      which the client would be granted access if they were to be
      requested directly.</dd>

      <dt><code>Body:</code></dt>
      <dd>New in Apache 2.0, the actual content of the resource may
      be included in the type-map file using the Body header.  This
      header must contain a string that designates a delimiter for
      the body content. Then all following lines in the type map
      file will be considered part of the resource body until the
      delimiter string is found.

      <div class="example"><h3>Example:</h3><p><code>
        Body:----xyz----<br />
        &lt;html&gt;<br />
        &lt;body&gt;<br />
        &lt;p&gt;Content of the page.&lt;/p&gt;<br />
        &lt;/body&gt;<br />
        &lt;/html&gt;<br />
        ----xyz----
      </code></p></div>
      </dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multiviews" id="multiviews">MultiViews</a></h2>
    <p>A MultiViews search is enabled by the <code>MultiViews</code>
    <code class="directive"><a href="../mod/core.html#options">Options</a></code>. If the server receives a
    request for <code>/some/dir/foo</code> and
    <code>/some/dir/foo</code> does <em>not</em> exist, then the
    server reads the directory looking for all files named
    <code>foo.*</code>, and effectively fakes up a type map which
    names all those files, assigning them the same media types and
    content-encodings it would have if the client had asked for one
    of them by name. It then chooses the best match to the client's
    requirements, and returns that document.</p>

    <p>The <code class="directive"><a href="../mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>
    directive configures whether Apache will consider files
    that do not have content negotiation meta-information assigned
    to them when choosing files.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheNegotiatedDocs" id="CacheNegotiatedDocs">CacheNegotiatedDocs</a> <a name="cachenegotiateddocs" id="cachenegotiateddocs">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Allows content-negotiated documents to be 
cached by proxy servers</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheNegotiatedDocs On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheNegotiatedDocs Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The syntax changed in version 2.0.</td></tr>
</table>
    <p>If set, this directive allows content-negotiated documents
    to be cached by proxy servers. This could mean that clients
    behind those proxys could retrieve versions of the documents
    that are not the best match for their abilities, but it will
    make caching more efficient.</p>

    <p>This directive only applies to requests which come from
    HTTP/1.0 browsers. HTTP/1.1 provides much better control over
    the caching of negotiated documents, and this directive has no
    effect in responses to HTTP/1.1 requests.</p>

    <p>Prior to version 2.0,
    <code class="directive">CacheNegotiatedDocs</code> did not take an
    argument; it was turned on by the presence of the directive by
    itself.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ForceLanguagePriority" id="ForceLanguagePriority">ForceLanguagePriority</a> <a name="forcelanguagepriority" id="forcelanguagepriority">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Action to take if a single acceptable document is not 
found</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ForceLanguagePriority Prefer</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.30 and later</td></tr>
</table>
    <p>The <code class="directive">ForceLanguagePriority</code> directive uses
    the given <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> to satisfy
    negotation where the server could otherwise not return a single
    matching document.</p>

    <p><code>ForceLanguagePriority Prefer</code> uses
    <code>LanguagePriority</code> to serve a one valid result, rather
    than returning an HTTP result 300 (MULTIPLE CHOICES) when there
    are several equally valid choices.  If the directives below were
    given, and the user's <code>Accept-Language</code> header assigned
    <code>en</code> and <code>de</code> each as quality <code>.500</code>
    (equally acceptable) then the first matching variant, <code>en</code>,
    will be served.</p>

    <div class="example"><p><code>
      LanguagePriority en fr de<br />
      ForceLanguagePriority Prefer
    </code></p></div>

    <p><code>ForceLanguagePriority Fallback</code> uses
    <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> to
    serve a valid result, rather than returning an HTTP result 406
    (NOT ACCEPTABLE). If the directives below were given, and the user's
    <code>Accept-Language</code> only permitted an <code>es</code>
    language response, but such a variant isn't found, then the first
    variant from the <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> list below will be served.</p>

    <div class="example"><p><code>
      LanguagePriority en fr de<br />
      ForceLanguagePriority Fallback
    </code></p></div>

    <p>Both options, <code>Prefer</code> and <code>Fallback</code>, may be
    specified, so either the first matching variant from <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> will be served if
    more than one variant is acceptable, or first available document will
    be served if none of the variants matched the client's acceptable list
    of languages.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addlanguage">AddLanguage</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LanguagePriority" id="LanguagePriority">LanguagePriority</a> <a name="languagepriority" id="languagepriority">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The precendence of language variants for cases where
the client does not express a preference</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>LanguagePriority <var>MIME-lang</var> [<var>MIME-lang</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
</table>
    <p>The <code class="directive">LanguagePriority</code> sets the precedence
    of language variants for the case where the client does not
    express a preference, when handling a MultiViews request. The list
    of <var>MIME-lang</var> are in order of decreasing preference.</p>

    <div class="example"><h3>Example:</h3><p><code>
      LanguagePriority en fr de
    </code></p></div>

    <p>For a request for <code>foo.html</code>, where
    <code>foo.html.fr</code> and <code>foo.html.de</code> both
    existed, but the browser did not express a language preference,
    then <code>foo.html.fr</code> would be returned.</p>

    <p>Note that this directive only has an effect if a 'best'
    language cannot be determined by any other means or the <code class="directive"><a href="#forcelanguagepriority">ForceLanguagePriority</a></code> directive
    is not <code>None</code>. In general, the client determines the
    language preference, not the server.</p>

<h3>See also</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addlanguage">AddLanguage</a></code></li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                           mod/mod_nw_ssl.html                                                                                 100644       0       0        14164 11256641270  12050  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_nw_ssl - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_nw_ssl</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Enable SSL encryption for NetWare</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>nwssl_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_nw_ssl.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>NetWare only</td></tr></table>
<h3>Summary</h3>

    <p>This module enables SSL encryption for a specified port. It
    takes advantage of the SSL encryption functionality that is 
    built into the NetWare operating system.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#nwssltrustedcerts">NWSSLTrustedCerts</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#nwsslupgradeable">NWSSLUpgradeable</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#securelisten">SecureListen</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="NWSSLTrustedCerts" id="NWSSLTrustedCerts">NWSSLTrustedCerts</a> <a name="nwssltrustedcerts" id="nwssltrustedcerts">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>List of additional client certificates</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>NWSSLTrustedCerts <var>filename</var> [<var>filename</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_nw_ssl</td></tr>
</table>
    <p>Specifies a list of client certificate files (DER format)
    that are used when creating a proxied SSL connection. Each
    client certificate used by a server must be listed separately 
    in its own <code>.der</code> file.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="NWSSLUpgradeable" id="NWSSLUpgradeable">NWSSLUpgradeable</a> <a name="nwsslupgradeable" id="nwsslupgradeable">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Allows a connection to be upgraded to an SSL connection upon request</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>NWSSLUpgradeable [<var>IP-address</var>:]<var>portnumber</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_nw_ssl</td></tr>
</table>
    <p>Allow a connection that was created on the specified address 
    and/or port to be upgraded to an SSL connection upon request from
    the client. The address and/or port must have already be defined 
    previously with a <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> 
    directive.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SecureListen" id="SecureListen">SecureListen</a> <a name="securelisten" id="securelisten">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables SSL encryption for the specified port</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SecureListen [<var>IP-address</var>:]<var>portnumber</var>
<var>Certificate-Name</var> [MUTUAL]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_nw_ssl</td></tr>
</table>
    <p>Specifies the port and the eDirectory based certificate name
    that will be used to enable SSL encryption. An optional third
    parameter also enables mutual authentication.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                            mod/mod_proxy.html                                                                                  100644       0       0       253061 11256641270  11745  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>HTTP/1.1 proxy/gateway server</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy.c</td></tr></table>
<h3>Summary</h3>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying with <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> until you have <a href="#access">secured your server</a>. Open proxy servers are dangerous both to your
      network and to the Internet at large.</p>
    </div>

    <p>This module implements a proxy/gateway for Apache. It implements
    proxying capability for <code>AJP13</code> (Apache JServe Protocol
    version 1.3), <code>FTP</code>, <code>CONNECT</code> (for SSL),
    <code>HTTP/0.9</code>, <code>HTTP/1.0</code>, and <code>HTTP/1.1</code>.
    The module can be configured to connect to other proxy modules for these
    and other protocols.</p>

    <p>Apache's proxy features are divided into several modules in
    addition to <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>:
    <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code>, <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>,
    <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code>, <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>,
    and <code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code>.  Thus, if you want to use
    one or more of the particular proxy functions, load
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> <em>and</em> the appropriate module(s)
    into the server (either statically at compile-time or dynamically
    via the <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
    directive).</p>

    <p>In addition, extended features are provided by other modules.
    Caching is provided by <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> and related
    modules.  The ability to contact remote servers using the SSL/TLS
    protocol is provided by the <code>SSLProxy*</code> directives of
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.  These additional modules will need
    to be loaded and configured to take advantage of these features.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#allowconnect">AllowCONNECT</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#balancermember">BalancerMember</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#noproxy">NoProxy</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxy">&lt;Proxy&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxybadheader">ProxyBadHeader</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyblock">ProxyBlock</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxydomain">ProxyDomain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyerroroverride">ProxyErrorOverride</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyftpdircharset">ProxyFtpDirCharset</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyiobuffersize">ProxyIOBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxymatch">&lt;ProxyMatch&gt;</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxymaxforwards">ProxyMaxForwards</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypass">ProxyPass</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypassinterpolateenv">ProxyPassInterpolateEnv</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypassmatch">ProxyPassMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypassreverse">ProxyPassReverse</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypassreversecookiedomain">ProxyPassReverseCookieDomain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypassreversecookiepath">ProxyPassReverseCookiePath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxypreservehost">ProxyPreserveHost</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyreceivebuffersize">ProxyReceiveBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyremote">ProxyRemote</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyremotematch">ProxyRemoteMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyrequests">ProxyRequests</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyset">ProxySet</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxystatus">ProxyStatus</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxytimeout">ProxyTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyvia">ProxyVia</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#forwardreverse">Forward Proxies and Reverse 
       Proxies/Gateways</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Basic Examples</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#access">Controlling access to your proxy</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#startup">Slow Startup</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#intranet">Intranet Proxy</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#envsettings">Protocol Adjustments</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#request-bodies">Request Bodies</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#x-headers">Reverse Proxy Request Headers</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li>
<li><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="forwardreverse" id="forwardreverse">Forward Proxies and Reverse 
       Proxies/Gateways</a></h2>
      <p>Apache can be configured in both a <dfn>forward</dfn> and
      <dfn>reverse</dfn> proxy (also known as <dfn>gateway</dfn>) mode.</p>

      <p>An ordinary <dfn>forward proxy</dfn> is an intermediate
      server that sits between the client and the <em>origin
      server</em>.  In order to get content from the origin server,
      the client sends a request to the proxy naming the origin server
      as the target and the proxy then requests the content from the
      origin server and returns it to the client.  The client must be
      specially configured to use the forward proxy to access other
      sites.</p>

      <p>A typical usage of a forward proxy is to provide Internet
      access to internal clients that are otherwise restricted by a
      firewall.  The forward proxy can also use caching (as provided
      by <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>) to reduce network usage.</p>

      <p>The forward proxy is activated using the <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> directive.  Because
      forward proxies allow clients to access arbitrary sites through
      your server and to hide their true origin, it is essential that
      you <a href="#access">secure your server</a> so that only
      authorized clients can access the proxy before activating a
      forward proxy.</p>

      <p>A <dfn>reverse proxy</dfn> (or <dfn>gateway</dfn>), by
      contrast, appears to the client just like an ordinary web
      server.  No special configuration on the client is necessary.
      The client makes ordinary requests for content in the name-space
      of the reverse proxy.  The reverse proxy then decides where to
      send those requests, and returns the content as if it was itself
      the origin.</p>

      <p>A typical usage of a reverse proxy is to provide Internet
      users access to a server that is behind a firewall.  Reverse
      proxies can also be used to balance load among several back-end
      servers, or to provide caching for a slower back-end server.
      In addition, reverse proxies can be used simply to bring
      several servers into the same URL space.</p>

      <p>A reverse proxy is activated using the <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive or the
      <code>[P]</code> flag to the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directive.  It is
      <strong>not</strong> necessary to turn <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> on in order to
      configure a reverse proxy.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Basic Examples</a></h2>

    <p>The examples below are only a very basic idea to help you
    get started.  Please read the documentation on the individual
    directives.</p>

    <p>In addition, if you wish to have caching enabled, consult
    the documentation from <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>

    <div class="example"><h3>Forward Proxy</h3><p><code>
    ProxyRequests On<br />
    ProxyVia On<br />
    <br />
    &lt;Proxy *&gt;<br />
    <span class="indent">
      Order deny,allow<br />
      Deny from all<br />
      Allow from internal.example.com<br />
    </span>
    &lt;/Proxy&gt;
    </code></p></div>

    <div class="example"><h3>Reverse Proxy</h3><p><code>
    ProxyRequests Off<br />
    <br />
    &lt;Proxy *&gt;<br />
    <span class="indent">
      Order deny,allow<br />
      Allow from all<br />
    </span>
    &lt;/Proxy&gt;<br />
    <br />
    ProxyPass /foo http://foo.example.com/bar<br />
    ProxyPassReverse /foo http://foo.example.com/bar
    </code></p></div>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="access" id="access">Controlling access to your proxy</a></h2>
      <p>You can control who can access your proxy via the <code class="directive"><a href="#proxy">&lt;Proxy&gt;</a></code> control block as in
      the following example:</p>

      <div class="example"><p><code>
        &lt;Proxy *&gt;<br />
        <span class="indent">
          Order Deny,Allow<br />
          Deny from all<br />
          Allow from 192.168.0<br />
        </span>
        &lt;/Proxy&gt;
      </code></p></div>

      <p>For more information on access control directives, see
      <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>.</p>

      <p>Strictly limiting access is essential if you are using a
      forward proxy (using the <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> directive).
      Otherwise, your server can be used by any client to access
      arbitrary hosts while hiding his or her true identity.  This is
      dangerous both for your network and for the Internet at large.
      When using a reverse proxy (using the <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive with
      <code>ProxyRequests Off</code>), access control is less
      critical because clients can only contact the hosts that you
      have specifically configured.</p>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="startup" id="startup">Slow Startup</a></h2>
      <p>If you're using the <code class="directive"><a href="#proxyblock">ProxyBlock</a></code> directive, hostnames' IP addresses are looked up
      and cached during startup for later match test. This may take a few
      seconds (or more) depending on the speed with which the hostname lookups
      occur.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="intranet" id="intranet">Intranet Proxy</a></h2>
      <p>An Apache proxy server situated in an intranet needs to forward
      external requests through the company's firewall (for this, configure
      the <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> directive
      to forward the respective <var>scheme</var> to the firewall proxy).
      However, when it has to
      access resources within the intranet, it can bypass the firewall when
      accessing hosts. The <code class="directive"><a href="#noproxy">NoProxy</a></code>
      directive is useful for specifying which hosts belong to the intranet and
      should be accessed directly.</p>

      <p>Users within an intranet tend to omit the local domain name from their
      WWW requests, thus requesting "http://somehost/" instead of
      <code>http://somehost.example.com/</code>. Some commercial proxy servers
      let them get away with this and simply serve the request, implying a
      configured local domain. When the <code class="directive"><a href="#proxydomain">ProxyDomain</a></code> directive is used and the server is <a href="#proxyrequests">configured for proxy service</a>, Apache can return
      a redirect response and send the client to the correct, fully qualified,
      server address. This is the preferred method since the user's bookmark
      files will then contain fully qualified hosts.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="envsettings" id="envsettings">Protocol Adjustments</a></h2>
      <p>For circumstances where <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> is sending
      requests to an origin server that doesn't properly implement
      keepalives or HTTP/1.1, there are two <a href="../env.html">environment variables</a> that can force the
      request to use HTTP/1.0 with no keepalive. These are set via the
      <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code> directive.</p>

      <p>These are the <code>force-proxy-request-1.0</code> and
      <code>proxy-nokeepalive</code> notes.</p>

      <div class="example"><p><code>
        &lt;Location /buggyappserver/&gt;<br />
        <span class="indent">
          ProxyPass http://buggyappserver:7001/foo/<br />
          SetEnv force-proxy-request-1.0 1<br />
          SetEnv proxy-nokeepalive 1<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="request-bodies" id="request-bodies">Request Bodies</a></h2>

    <p>Some request methods such as POST include a request body.
    The HTTP protocol requires that requests which include a body
    either use chunked transfer encoding or send a
    <code>Content-Length</code> request header.  When passing these
    requests on to the origin server, <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code>
    will always attempt to send the <code>Content-Length</code>.  But
    if the body is large and the original request used chunked
    encoding, then chunked encoding may also be used in the upstream
    request.  You can control this selection using <a href="../env.html">environment variables</a>.  Setting
    <code>proxy-sendcl</code> ensures maximum compatibility with
    upstream servers by always sending the
    <code>Content-Length</code>, while setting
    <code>proxy-sendchunked</code> minimizes resource usage by using
    chunked encoding.</p>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="x-headers" id="x-headers">Reverse Proxy Request Headers</a></h2>

    <p>When acting in a reverse-proxy mode (using the <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive, for example),
    <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> adds several request headers in
    order to pass information to the origin server. These headers
    are:</p>

    <dl>
      <dt><code>X-Forwarded-For</code></dt>
      <dd>The IP address of the client.</dd>
      <dt><code>X-Forwarded-Host</code></dt>
      <dd>The original host requested by the client in the <code>Host</code> 
       HTTP request header.</dd>
      <dt><code>X-Forwarded-Server</code></dt>
      <dd>The hostname of the proxy server.</dd>
    </dl>

    <p>Be careful when using these headers on the origin server, since
    they will contain more than one (comma-separated) value if the
    original request already contained one of these headers. For
    example, you can use <code>%{X-Forwarded-For}i</code> in the log
    format string of the origin server to log the original clients IP
    address, but you may get more than one address if the request
    passes through several proxies.</p>

    <p>See also the <code class="directive"><a href="#proxypreservehost">ProxyPreserveHost</a></code> and <code class="directive"><a href="#proxyvia">ProxyVia</a></code> directives, which control
    other request headers.</p>

   </div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AllowCONNECT" id="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect" id="allowconnect">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ports that are allowed to <code>CONNECT</code> through the
proxy</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AllowCONNECT <var>port</var> [<var>port</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AllowCONNECT 443 563</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">AllowCONNECT</code> directive specifies a list
    of port numbers to which the proxy <code>CONNECT</code> method may
    connect.  Today's browsers use this method when a <code>https</code>
    connection is requested and proxy tunneling over HTTP is in effect.</p>

    <p>By default, only the default https port (<code>443</code>) and the
    default snews port (<code>563</code>) are enabled. Use the
    <code class="directive">AllowCONNECT</code> directive to override this default and
    allow connections to the listed ports only.</p>

    <p>Note that you'll need to have <code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code> present
    in the server in order to get the support for the <code>CONNECT</code> at
    all.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BalancerMember" id="BalancerMember">BalancerMember</a> <a name="balancermember" id="balancermember">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Add a member to a load balancing group</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>BalancerMember [<var>balancerurl</var>] <var>url</var> [<var>key=value [key=value ...]]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>BalancerMember is only available in Apache 2.2
        and later.</td></tr>
</table>
    <p>This directive adds a member to a load balancing group. It could be used
    within a <code>&lt;Proxy <var>balancer://</var>...&gt;</code> container
    directive, and can take any of the key value pairs available to
    <code class="directive"><a href="#proxypass">ProxyPass</a></code> directives.</p>
    <p>The balancerurl is only needed when not in <code>&lt;Proxy <var>balancer://</var>...&gt;</code>
    container directive. It corresponds to the url of a balancer defined in
    <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="NoProxy" id="NoProxy">NoProxy</a> <a name="noproxy" id="noproxy">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Hosts, domains, or networks that will be connected to
directly</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>NoProxy <var>host</var> [<var>host</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This directive is only useful for Apache proxy servers within
    intranets.  The <code class="directive">NoProxy</code> directive specifies a
    list of subnets, IP addresses, hosts and/or domains, separated by
    spaces. A request to a host which matches one or more of these is
    always served directly, without forwarding to the configured
    <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> proxy server(s).</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyRemote  *  http://firewall.example.com:81<br />
      NoProxy         .example.com 192.168.112.0/21
    </code></p></div>

    <p>The <var>host</var> arguments to the <code class="directive">NoProxy</code>
    directive are one of the following type list:</p>

    <dl>
    
    <dt><var><a name="domain" id="domain">Domain</a></var></dt>
    <dd>
    <p>A <dfn>Domain</dfn> is a partially qualified DNS domain name, preceded
    by a period. It represents a list of hosts which logically belong to the
    same DNS domain or zone (<em>i.e.</em>, the suffixes of the hostnames are
    all ending in <var>Domain</var>).</p>

    <div class="example"><h3>Examples</h3><p><code>
      .com .apache.org.
    </code></p></div>

    <p>To distinguish <var>Domain</var>s from <var><a href="#hostname">Hostname</a></var>s (both syntactically and semantically; a DNS domain can
    have a DNS A record, too!), <var>Domain</var>s are always written with a
    leading period.</p>
    
    <div class="note"><h3>Note</h3>
      <p>Domain name comparisons are done without regard to the case, and
      <var>Domain</var>s are always assumed to be anchored in the root of the
      DNS tree, therefore two domains <code>.ExAmple.com</code> and
      <code>.example.com.</code> (note the trailing period) are considered
      equal. Since a domain comparison does not involve a DNS lookup, it is much
      more efficient than subnet comparison.</p>
    </div></dd>

    
    <dt><var><a name="subnet" id="subnet">SubNet</a></var></dt>
    <dd>
    <p>A <dfn>SubNet</dfn> is a partially qualified internet address in
    numeric (dotted quad) form, optionally followed by a slash and the netmask,
    specified as the number of significant bits in the <var>SubNet</var>. It is
    used to represent a subnet of hosts which can be reached over a common
    network interface. In the absence of the explicit net mask it is assumed
    that omitted (or zero valued) trailing digits specify the mask. (In this
    case, the netmask can only be multiples of 8 bits wide.) Examples:</p>

    <dl>
    <dt><code>192.168</code> or <code>192.168.0.0</code></dt>
    <dd>the subnet 192.168.0.0 with an implied netmask of 16 valid bits
    (sometimes used in the netmask form <code>255.255.0.0</code>)</dd>
    <dt><code>192.168.112.0/21</code></dt>
    <dd>the subnet <code>192.168.112.0/21</code> with a netmask of 21
    valid bits (also used in the form <code>255.255.248.0</code>)</dd>
    </dl>

    <p>As a degenerate case, a <em>SubNet</em> with 32 valid bits is the
    equivalent to an <var><a href="#ipadr">IPAddr</a></var>, while a <var>SubNet</var> with zero
    valid bits (<em>e.g.</em>, 0.0.0.0/0) is the same as the constant
    <var>_Default_</var>, matching any IP address.</p></dd>

    
    <dt><var><a name="ipaddr" id="ipaddr">IPAddr</a></var></dt>
    <dd>
    <p>A <dfn>IPAddr</dfn> represents a fully qualified internet address in
    numeric (dotted quad) form. Usually, this address represents a host, but
    there need not necessarily be a DNS domain name connected with the
    address.</p>
    <div class="example"><h3>Example</h3><p><code>
      192.168.123.7
    </code></p></div>
    
    <div class="note"><h3>Note</h3>
      <p>An <var>IPAddr</var> does not need to be resolved by the DNS system, so
      it can result in more effective apache performance.</p>
    </div></dd>

    
    <dt><var><a name="hostname" id="hostname">Hostname</a></var></dt>
    <dd>
    <p>A <dfn>Hostname</dfn> is a fully qualified DNS domain name which can
    be resolved to one or more <var><a href="#ipaddr">IPAddrs</a></var> via the
    DNS domain name service. It represents a logical host (in contrast to
	<var><a href="#domain">Domain</a></var>s, see above) and must be resolvable
    to at least one <var><a href="#ipaddr">IPAddr</a></var> (or often to a list
    of hosts with different <var><a href="#ipaddr">IPAddr</a></var>s).</p>

    <div class="example"><h3>Examples</h3><p><code>
      prep.ai.example.com<br />
      www.apache.org
    </code></p></div>

    <div class="note"><h3>Note</h3>
      <p>In many situations, it is more effective to specify an <var><a href="#ipaddr">IPAddr</a></var> in place of a <var>Hostname</var> since a
      DNS lookup can be avoided. Name resolution in Apache can take a remarkable
      deal of time when the connection to the name server uses a slow PPP
      link.</p>
      <p><var>Hostname</var> comparisons are done without regard to the case,
      and <var>Hostname</var>s are always assumed to be anchored in the root
      of the DNS tree, therefore two hosts <code>WWW.ExAmple.com</code>
      and <code>www.example.com.</code> (note the trailing period) are
      considered equal.</p>
     </div></dd>
    </dl>

<h3>See also</h3>
<ul>
<li><a href="../dns-caveats.html">DNS Issues</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Proxy" id="Proxy">&lt;Proxy&gt;</a> <a name="proxy" id="proxy">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Container for directives applied to proxied resources</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>&lt;Proxy <var>wildcard-url</var>&gt; ...&lt;/Proxy&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>Directives placed in <code class="directive">&lt;Proxy&gt;</code>
    sections apply only to matching proxied content.  Shell-style wildcards are
    allowed.</p>

    <p>For example, the following will allow only hosts in
    <code>yournetwork.example.com</code> to access content via your proxy
    server:</p>

    <div class="example"><p><code>
      &lt;Proxy *&gt;<br />
      <span class="indent">
        Order Deny,Allow<br />
        Deny from all<br />
        Allow from yournetwork.example.com<br />
      </span>
      &lt;/Proxy&gt;
    </code></p></div>

    <p>The following example will process all files in the <code>foo</code>
    directory of <code>example.com</code> through the <code>INCLUDES</code>
    filter when they are sent through the proxy server:</p>

    <div class="example"><p><code>
      &lt;Proxy http://example.com/foo/*&gt;<br />
      <span class="indent">
        SetOutputFilter INCLUDES<br />
      </span>
      &lt;/Proxy&gt;
    </code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyBadHeader" id="ProxyBadHeader">ProxyBadHeader</a> <a name="proxybadheader" id="proxybadheader">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines how to handle bad header lines in a
response</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyBadHeader IsError|Ignore|StartBody</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyBadHeader IsError</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.44 and later</td></tr>
</table>
    <p>The <code class="directive">ProxyBadHeader</code> directive determines the
    behaviour of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> if it receives syntactically invalid
    header lines (<em>i.e.</em> containing no colon). The following arguments
    are possible:</p>

    <dl>
    <dt><code>IsError</code></dt>
    <dd>Abort the request and end up with a 502 (Bad Gateway) response. This is
    the default behaviour.</dd>

    <dt><code>Ignore</code></dt>
    <dd>Treat bad header lines as if they weren't sent.</dd>

    <dt><code>StartBody</code></dt>
    <dd>When receiving the first bad header line, finish reading the headers and
    treat the remainder as body. This helps to work around buggy backend servers
    which forget to insert an empty line between the headers and the body.</dd>
    </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyBlock" id="ProxyBlock">ProxyBlock</a> <a name="proxyblock" id="proxyblock">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Words, hosts, or domains that are banned from being
proxied</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyBlock *|<var>word</var>|<var>host</var>|<var>domain</var>
[<var>word</var>|<var>host</var>|<var>domain</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">ProxyBlock</code> directive specifies a list of
    words, hosts and/or domains, separated by spaces.  HTTP, HTTPS, and
    FTP document requests to sites whose names contain matched words,
    hosts or domains are <em>blocked</em> by the proxy server. The proxy
    module will also attempt to determine IP addresses of list items which
    may be hostnames during startup, and cache them for match test as
    well. That may slow down the startup time of the server.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
    </code></p></div>

    <p><code>rocky.wotsamattau.edu</code> would also be matched if referenced by
    IP address.</p>

    <p>Note that <code>wotsamattau</code> would also be sufficient to match
    <code>wotsamattau.edu</code>.</p>

    <p>Note also that</p>

    <div class="example"><p><code>
      ProxyBlock *
    </code></p></div>

    <p>blocks connections to all sites.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyDomain" id="ProxyDomain">ProxyDomain</a> <a name="proxydomain" id="proxydomain">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Default domain name for proxied requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyDomain <var>Domain</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This directive is only useful for Apache proxy servers within
    intranets. The <code class="directive">ProxyDomain</code> directive specifies
    the default domain which the apache proxy server will belong to. If a
    request to a host without a domain name is encountered, a redirection
    response to the same host with the configured <var>Domain</var> appended
    will be generated.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyRemote  *  http://firewall.example.com:81<br />
      NoProxy         .example.com 192.168.112.0/21<br />
      ProxyDomain     .example.com
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyErrorOverride" id="ProxyErrorOverride">ProxyErrorOverride</a> <a name="proxyerroroverride" id="proxyerroroverride">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Override error pages for proxied content</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyErrorOverride On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyErrorOverride Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0 and later</td></tr>
</table>
    <p>This directive is useful for reverse-proxy setups, where you want to 
    have a common look and feel on the error pages seen by the end user. 
    This also allows for included files (via
    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>'s SSI) to get
    the error code and act accordingly (default behavior would display
    the error page of the proxied server, turning this on shows the SSI
    Error message).</p>

    <p>This directive does not affect the processing of informational (1xx),
    normal success (2xx), or redirect (3xx) responses.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyFtpDirCharset" id="ProxyFtpDirCharset">ProxyFtpDirCharset</a> <a name="proxyftpdircharset" id="proxyftpdircharset">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define the character set for proxied FTP listings</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyFtpDirCharset <var>character set</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyFtpDirCharset ISO-8859-1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.7 and later</td></tr>
</table>
    <p>The <code class="directive">ProxyFtpDirCharset</code> directive defines the
    character set to be set for FTP directory listings in HTML generated by
    <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyIOBufferSize" id="ProxyIOBufferSize">ProxyIOBufferSize</a> <a name="proxyiobuffersize" id="proxyiobuffersize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determine size of internal data throughput buffer</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyIOBufferSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyIOBufferSize 8192</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">ProxyIOBufferSize</code> directive adjusts the size
    of the internal buffer, which is used as a scratchpad for the data between
    input and output. The size must be less or equal <code>8192</code>.</p>

    <p>In almost every case there's no reason to change that value.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyMatch" id="ProxyMatch">&lt;ProxyMatch&gt;</a> <a name="proxymatch" id="proxymatch">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Container for directives applied to regular-expression-matched 
proxied resources</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>&lt;ProxyMatch <var>regex</var>&gt; ...&lt;/ProxyMatch&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">&lt;ProxyMatch&gt;</code> directive is
    identical to the <code class="directive"><a href="#proxy">&lt;Proxy&gt;</a></code> directive, except it matches URLs
    using <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expressions</a>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyMaxForwards" id="ProxyMaxForwards">ProxyMaxForwards</a> <a name="proxymaxforwards" id="proxymaxforwards">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximium number of proxies that a request can be forwarded
through</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyMaxForwards <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyMaxForwards -1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0 and later;
	default behaviour changed in 2.2.7</td></tr>
</table>
    <p>The <code class="directive">ProxyMaxForwards</code> directive specifies the
    maximum number of proxies through which a request may pass, if there's no
    <code>Max-Forwards</code> header supplied with the request. This may
    be set to prevent infinite proxy loops, or a DoS attack.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyMaxForwards 15
    </code></p></div>

    <p>Note that setting <code class="directive">ProxyMaxForwards</code> is a
    violation of the HTTP/1.1 protocol (RFC2616), which forbids a Proxy
    setting <code>Max-Forwards</code> if the Client didn't set it.
    Earlier Apache versions would always set it.  A negative
    <code class="directive">ProxyMaxForwards</code> value, including the
    default -1, gives you protocol-compliant behaviour, but may
    leave you open to loops.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPass" id="ProxyPass">ProxyPass</a> <a name="proxypass" id="proxypass">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps remote servers into the local server URL-space</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPass [<var>path</var>] !|<var>url</var> [<var>key=value</var>
<var>key=value</var> ...]] [nocanon] [interpolate]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This directive allows remote servers to be mapped into the
    space of the local server; the local server does not act as a
    proxy in the conventional sense, but appears to be a mirror of the
    remote server. The local server is often called a <dfn>reverse
    proxy</dfn> or <dfn>gateway</dfn>. The <var>path</var> is the name of
    a local virtual path; <var>url</var> is a partial URL for the
    remote server and cannot include a query string.</p>

    <div class="warning">The <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> directive should
    usually be set <strong>off</strong> when using
    <code class="directive">ProxyPass</code>.</div>

    <p>Suppose the local server has address <code>http://example.com/</code>;
    then</p>

    <div class="example"><p><code>
      ProxyPass /mirror/foo/ http://backend.example.com/
    </code></p></div>

    <p>will cause a local request for
    <code>http://example.com/mirror/foo/bar</code> to be internally converted
    into a proxy request to <code>http://backend.example.com/bar</code>.</p>

    <div class="warning">
    <p>If the first argument ends with a trailing <strong>/</strong>, the second
       argument should also end with a trailing <strong>/</strong> and vice
       versa. Otherwise the resulting requests to the backend may miss some
       needed slashes and do not deliver the expected results.
    </p>
    </div>

    <p>The <code>!</code> directive is useful in situations where you don't want
    to reverse-proxy a subdirectory, <em>e.g.</em></p>

    <div class="example"><p><code>
      ProxyPass /mirror/foo/i !<br />
      ProxyPass /mirror/foo http://backend.example.com
    </code></p></div>

    <p>will proxy all requests to <code>/mirror/foo</code> to
    <code>backend.example.com</code> <em>except</em> requests made to
    <code>/mirror/foo/i</code>.</p>

    <div class="note"><h3>Note</h3>
      <p>Order is important: exclusions must come <em>before</em> the
      general <code class="directive">ProxyPass</code> directive.</p>
    </div>

    <p>As of Apache 2.1, the ability to use pooled connections to a backend
    server is available. Using the <code>key=value</code> parameters it is
    possible to tune this connection pooling. The default for a <code>Hard
    Maximum</code> for the number of connections is the number of threads per
    process in the active MPM. In the Prefork MPM, this is always 1, while with
    the Worker MPM it is controlled by the
    <code class="directive">ThreadsPerChild</code>.</p>

    <p>Setting <code>min</code> will determine how many connections will always 
    be open to the backend server. Upto the Soft Maximum or <code>smax</code> 
    number of connections will be created on demand. Any connections above 
    <code>smax</code> are subject to a time to live or <code>ttl</code>.  Apache
    will never create more than the Hard Maximum or <code>max</code> connections
    to the backend server.</p>

    <div class="example"><p><code>
        ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
    </code></p></div>

    <table>
    <tr><th>Parameter</th>
        <th>Default</th>
        <th>Description</th></tr>
    <tr><td>min</td>
        <td>0</td>
        <td>Minimum number of connections that will always
            be open to the backend server.</td></tr>
    <tr><td>max</td>
        <td>1...n</td>
        <td>Hard Maximum number of connections that will be
    allowed to the backend server. The default for a Hard Maximum
    for the number of connections is the number of threads per process in the 
    active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM
    it is controlled by the <code class="directive">ThreadsPerChild</code>.
    Apache will never create more than the Hard Maximum connections
    to the backend server.</td></tr>
    <tr><td>smax</td>
        <td>max</td>
        <td>Upto the Soft Maximum
    number of connections will be created on demand. Any connections above 
    <code>smax</code> are subject to a time to live or <code>ttl</code>.
    </td></tr>
    <tr><td>acquire</td>
        <td>-</td>
        <td>If set this will be the maximum time to wait for a free
    connection in the connection pool, in milliseconds. If there are no free
    connections in the pool the Apache will return <code>SERVER_BUSY</code>
    status to the client.
    </td></tr>
    <tr><td>connectiontimeout</td>
        <td>timeout</td>
        <td>Connect timeout in seconds.
        The number of seconds Apache waits for the creation of a connection to
        the backend to complete. By adding a postfix of ms the timeout can be
        also set in milliseconds.
    </td></tr>
    <tr><td>disablereuse</td>
        <td>Off</td>
        <td>This parameter should be used when you want to force mod_proxy
    to immediately close a connection to the backend after being used, and
    thus, disable its persistent connection and pool for that backend.
    This helps in various situations where a firewall between Apache and
    the backend server (regardless of protocol) tends to silently
    drop connections or when backends themselves may be under round-
    robin DNS. To disable connection pooling reuse,
    set this property value to <code>On</code>. 
    </td></tr>
    <tr><td>flushpackets</td>
        <td>off</td>
        <td>Determines whether the proxy module will auto-flush the output
        brigade after each "chunk" of data. 'off' means that it will flush
        only when needed, 'on' means after each chunk is sent and
        'auto' means poll/wait for a period of time and flush if
        no input has been received for 'flushwait' milliseconds.
        Currently this is in effect only for AJP.
    </td></tr>
    <tr><td>flushwait</td>
        <td>10</td>
        <td>The time to wait for additional input, in milliseconds, before
        flushing the output brigade if 'flushpackets' is 'auto'.
    </td></tr>
    <tr><td>keepalive</td>
        <td>Off</td>
        <td>This parameter should be used when you have a firewall between your
    Apache and the backend server, who tend to drop inactive connections.
    This flag will tell the Operating System to send <code>KEEP_ALIVE</code>
    messages on inactive connections (interval depends on global OS settings,
    generally 120ms), and thus prevent the firewall to drop the connection.
    To enable keepalive set this property value to <code>On</code>. 
    </td></tr>
    <tr><td>lbset</td>
        <td>0</td>
        <td>Sets the load balancer cluster set that the worker is a member
         of. The load balancer will try all members of a lower numbered
         lbset before trying higher numbered ones.
    </td></tr>
    <tr><td>ping</td>
        <td>0</td>
        <td>Ping property tells webserver to send a <code>CPING</code>
        request on ajp13 connection before forwarding a request.
        The parameter is the delay in seconds to wait for the
        <code>CPONG</code> reply.
        This features has been added to avoid problem with hung and
        busy Tomcat's and require ajp13 ping/pong support which has
        been implemented on Tomcat 3.3.2+, 4.1.28+ and 5.0.13+.
        This will increase the network traffic during the normal operation
        which could be an issue, but it will lower the
        traffic in case some of the cluster nodes are down or busy.
        Currently this has an effect only for AJP.
        By adding a postfix of ms the delay can be also set in
        milliseconds.
    </td></tr>
    <tr><td>loadfactor</td>
        <td>1</td>
        <td>Worker load factor. Used with BalancerMember.
         It is a number between 1 and 100 and defines the normalized weighted
         load applied to the worker.
    </td></tr>
    <tr><td>redirect</td>
        <td>-</td>
        <td>Redirection Route of the worker. This value is usually
        set dynamically to enable safe removal of the node from
        the cluster. If set all requests without session id will be
        redirected to the BalancerMember that has route parametar
        equal as this value.
    </td></tr>
    <tr><td>retry</td>
        <td>60</td>
        <td>Connection pool worker retry timeout in seconds.
    If the connection pool worker to the backend server is in the error state,
    Apache will not forward any requests to that server until the timeout
    expires. This enables to shut down the backend server for maintenance,
    and bring it back online later. A value of 0 means always retry workers
    in an error state with no timeout.
    </td></tr>
    <tr><td>route</td>
        <td>-</td>
        <td>Route of the worker when used inside load balancer.
        The route is a value appended to session id.
    </td></tr>
    <tr><td>status</td>
        <td>-</td>
        <td>Single letter value defining the initial status of
        this worker: 'D' is disabled, 'S' is stopped, 'I' is ignore-errors,
	'H' is hot-standby and 'E' is in an error state. Status 
	can be set (which is the default) by prepending with '+' or 
        cleared by prepending with '-'.
        Thus, a setting of 'S-E' sets this worker to Stopped and
        clears the in-error flag.
    </td></tr>
    <tr><td>timeout</td>
        <td><code class="directive"><a href="#proxytimeout">ProxyTimeout</a></code></td>
        <td>Connection timeout in seconds.
        The number of seconds Apache waits for data sent by / to the backend.
    </td></tr>
    <tr><td>ttl</td>
        <td>-</td>
        <td>Time To Live for the inactive connections above the
        <code>smax</code> connections in seconds. Apache will close all
        connections that has not been used inside that time period.
    </td></tr>

    </table>

    <p>If the Proxy directive scheme starts with the
    <code>balancer://</code> (eg: <code>balancer://cluster/</code>, 
    any path information is ignored)  then a virtual worker that does not really
    communicate with the backend server will be created. Instead it is responsible
    for the management of several "real" workers. In that case the special set of
    parameters can be add to this virtual worker. See <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
    for more information about how the balancer works.
    </p>
    <table>
    <tr><th>Parameter</th>
        <th>Default</th>
        <th>Description</th></tr>
    <tr><td>lbmethod</td>
        <td>byrequests</td>
        <td>Balancer load-balance method. Select the load-balancing scheduler
        method to use. Either <code>byrequests</code>, to perform weighted
        request counting, <code>bytraffic</code>, to perform weighted
        traffic byte count balancing, or <code>bybusyness</code>, to perform 
        pending request balancing. Default is <code>byrequests</code>.
    </td></tr>
    <tr><td>maxattempts</td>
        <td>1</td>
        <td>Maximum number of failover attempts before giving up. 
    </td></tr>
    <tr><td>nofailover</td>
        <td>Off</td>
        <td>If set to <code>On</code> the session will break if the worker is in
        error state or disabled. Set this value to On if backend servers do not
        support session replication.
    </td></tr>
    <tr><td>stickysession</td>
        <td>-</td>
        <td>Balancer sticky session name. The value is usually set to something
        like <code>JSESSIONID</code> or <code>PHPSESSIONID</code>,
        and it depends on the backend application server that support sessions.
        If the backend application server uses different name for cookies
        and url encoded id (like servlet containers) use | to to separate them.
        The first part is for the cookie the second for the path.
    </td></tr>
    <tr><td>scolonpathdelim</td>
        <td>Off</td>
        <td>If set to <code>On</code> the semi-colon character ';' will be
        used as an additional sticky session path deliminator/separator. This
        is mainly used to emulate mod_jk's behavior when dealing with paths such
        as <code>JSESSIONID=6736bcf34;foo=aabfa</code>
    </td></tr>
    <tr><td>timeout</td>
        <td>0</td>
        <td>Balancer timeout in seconds. If set this will be the maximum time
        to wait for a free worker. Default is not to wait. 
    </td></tr>
    
    </table>
    <p>A sample balancer setup</p>
    <div class="example"><p><code>
      ProxyPass /special-area http://special.example.com/ smax=5 max=10<br />
      ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On<br />
      &lt;Proxy balancer://mycluster&gt;<br />
      <span class="indent">
        BalancerMember http://1.2.3.4:8009<br />
        BalancerMember http://1.2.3.5:8009 smax=10<br />
        # Less powerful server, don't send as many requests there<br />
        BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20<br />
      </span>
      &lt;/Proxy&gt;
    </code></p></div>

    <p>Setting up a hot-standby, that will only be used if no other
     members are available</p>
    <div class="example"><p><code>
      ProxyPass / balancer://hotcluster/ <br />
      &lt;Proxy balancer://hotcluster&gt;<br />
      <span class="indent">
        BalancerMember http://1.2.3.4:8009 loadfactor=1<br />
        BalancerMember http://1.2.3.5:8009 loadfactor=2<br />
        # The below is the hot standby<br />
        BalancerMember http://1.2.3.6:8009 status=+H<br />
        ProxySet lbmethod=bytraffic
      </span>
      &lt;/Proxy&gt;
    </code></p></div>

    <p>Normally, mod_proxy will canonicalise ProxyPassed URLs.
    But this may be incompatible with some backends, particularly those
    that make use of <var>PATH_INFO</var>.  The optional <var>nocanon</var>
    keyword suppresses this, and passes the URL path "raw" to the
    backend.  Note that may affect the security of your backend, as it
    removes the normal limited protection against URL-based attacks
    provided by the proxy.</p>

    <p>The optional <var>interpolate</var> keyword (available in
    httpd 2.2.9 and later), in combination with
    <code class="directive">ProxyPassInterpolateEnv</code> causes the ProxyPass
    to interpolate environment variables, using the syntax
    <var>${VARNAME}</var>.  Note that many of the standard CGI-derived
    environment variables will not exist when this interpolation happens,
    so you may still have to resort to <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    for complex rules.</p>

    <p>When used inside a <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> section, the first argument is omitted and the local
    directory is obtained from the <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>.</p>

    <p>If you require a more flexible reverse-proxy configuration, see the
    <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directive with the
    <code>[P]</code> flag.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPassInterpolateEnv" id="ProxyPassInterpolateEnv">ProxyPassInterpolateEnv</a> <a name="proxypassinterpolateenv" id="proxypassinterpolateenv">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable Environment Variable interpolation in Reverse Proxy configurations</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPassInterpolateEnv On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyPassInterpolateEnv Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in httpd 2.2.9 and later</td></tr>
</table>
    <p>This directive, together with the <var>interpolate</var> argument to
    <code class="directive">ProxyPass</code>, <code class="directive">ProxyPassReverse</code>,
    <code class="directive">ProxyPassReverseCookieDomain</code> and
    <code class="directive">ProxyPassReverseCookiePath</code>
    enables reverse proxies to be dynamically
    configured using environment variables, which may be set by
    another module such as <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
    It affects the <code class="directive">ProxyPass</code>,
    <code class="directive">ProxyPassReverse</code>,
    <code class="directive">ProxyPassReverseCookieDomain</code>, and
    <code class="directive">ProxyPassReverseCookiePath</code> directives,
    and causes them to substitute the value of an environment
    variable <code>varname</code> for the string <code>${varname}</code>
    in configuration directives.</p>
    <p>Keep this turned off (for server performance) unless you need it!</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPassMatch" id="ProxyPassMatch">ProxyPassMatch</a> <a name="proxypassmatch" id="proxypassmatch">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maps remote servers into the local server URL-space using regular expressions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPassMatch [<var>regex</var>] !|<var>url</var> [<var>key=value</var>
	<var>[key=value</var> ...]]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>available in Apache 2.2.5 and later</td></tr>
</table>
    <p>This directive is equivalent to <code class="directive"><a href="#proxypass">ProxyPass</a></code>,
       but makes use of regular expressions, instead of simple prefix matching. The
       supplied regular expression is matched against the <var>url</var>, and if it
       matches, the server will substitute any parenthesized matches into the given
       string and use it as a new <var>url</var>.</p>

    <p>Suppose the local server has address <code>http://example.com/</code>;
    then</p>

    <div class="example"><p><code>
      ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1
    </code></p></div>

    <p>will cause a local request for
    <code>http://example.com/foo/bar.gif</code> to be internally converted
    into a proxy request to <code>http://backend.example.com/foo/bar.gif</code>.</p>
    <div class="note"><h3>Note</h3>
      <p>The URL argument must be parsable as a URL <em>before</em> regexp
      substitutions (as well as after).  This limits the matches you can use.
      For instance, if we had used</p>
      <div class="example"><p><code>
        ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com:8000$1
      </code></p></div>
      <p>in our previous example, it would fail with a syntax error
      at server startup.  This is a bug (PR 46665 in the ASF bugzilla),
      and the workaround is to reformulate the match:</p>
      <div class="example"><p><code>
        ProxyPassMatch ^/(.*\.gif)$ http://backend.example.com:8000/$1
      </code></p></div>
    </div>

    <p>The <code>!</code> directive is useful in situations where you don't want
    to reverse-proxy a subdirectory.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPassReverse" id="ProxyPassReverse">ProxyPassReverse</a> <a name="proxypassreverse" id="proxypassreverse">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adjusts the URL in HTTP response headers sent from a reverse
proxied server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPassReverse [<var>path</var>] <var>url</var>
[<var>interpolate</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This directive lets Apache adjust the URL in the <code>Location</code>,
    <code>Content-Location</code> and <code>URI</code> headers on HTTP
    redirect responses. This is essential when Apache is used as a
    reverse proxy (or gateway) to avoid by-passing the reverse proxy
    because of HTTP redirects on the backend servers which stay behind
    the reverse proxy.</p>

    <p>Only the HTTP response headers specifically mentioned above
    will be rewritten.  Apache will not rewrite other response
    headers, nor will it rewrite URL references inside HTML pages.
    This means that if the proxied content contains absolute URL
    references, they will by-pass the proxy.  A third-party module
    that will look inside the HTML and rewrite URL references is Nick
    Kew's <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a>.</p>

    <p><var>path</var> is the name of a local virtual path. <var>url</var> is a
    partial URL for the remote server - the same way they are used for the
    <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive.</p>

    <p>For example, suppose the local server has address
    <code>http://example.com/</code>; then</p>

    <div class="example"><p><code>
      ProxyPass         /mirror/foo/ http://backend.example.com/<br />
      ProxyPassReverse  /mirror/foo/ http://backend.example.com/<br />
      ProxyPassReverseCookieDomain  backend.example.com  public.example.com<br />
      ProxyPassReverseCookiePath  /  /mirror/foo/
    </code></p></div>

    <p>will not only cause a local request for the
    <code>http://example.com/mirror/foo/bar</code> to be internally converted
    into a proxy request to <code>http://backend.example.com/bar</code>
    (the functionality <code>ProxyPass</code> provides here). It also takes care
    of redirects the server <code>backend.example.com</code> sends: when
    <code>http://backend.example.com/bar</code> is redirected by him to
    <code>http://backend.example.com/quux</code> Apache adjusts this to
    <code>http://example.com/mirror/foo/quux</code> before forwarding the HTTP
    redirect response to the client. Note that the hostname used for
    constructing the URL is chosen in respect to the setting of the <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> directive.</p>

    <p>Note that this <code class="directive">ProxyPassReverse</code> directive can
    also be used in conjunction with the proxy pass-through feature
    (<code>RewriteRule ...  [P]</code>) from <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    because it doesn't depend on a corresponding <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive.</p>

    <p>The optional <var>interpolate</var> keyword (available in
    httpd 2.2.9 and later), used together with
    <code class="directive">ProxyPassInterpolateEnv</code>, enables interpolation
    of environment variables specified using the format <var>${VARNAME}</var>.
    </p>

    <p>When used inside a <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> section, the first argument is omitted and the local
    directory is obtained from the <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPassReverseCookieDomain" id="ProxyPassReverseCookieDomain">ProxyPassReverseCookieDomain</a> <a name="proxypassreversecookiedomain" id="proxypassreversecookiedomain">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adjusts the Domain string in Set-Cookie headers from a reverse-
proxied server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPassReverseCookieDomain <var>internal-domain</var>
<var>public-domain</var> [<var>interpolate</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
<p>Usage is basically similar to
<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code>, but instead of
rewriting headers that are a URL, this rewrites the <code>domain</code>
string in <code>Set-Cookie</code> headers.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPassReverseCookiePath" id="ProxyPassReverseCookiePath">ProxyPassReverseCookiePath</a> <a name="proxypassreversecookiepath" id="proxypassreversecookiepath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adjusts the Path string in Set-Cookie headers from a reverse-
proxied server</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPassReverseCookiePath <var>internal-path</var>
<var>public-path</var> [<var>interpolate</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
<p>Usage is basically similar to
<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code>, but instead of
rewriting headers that are a URL, this rewrites the <code>path</code>
string in <code>Set-Cookie</code> headers.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyPreserveHost" id="ProxyPreserveHost">ProxyPreserveHost</a> <a name="proxypreservehost" id="proxypreservehost">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use incoming Host HTTP request header for proxy
request</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyPreserveHost On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyPreserveHost Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.31 and later.</td></tr>
</table>
    <p>When enabled, this option will pass the Host: line from the incoming
    request to the proxied host, instead of the hostname specified in the
    <code class="directive">ProxyPass</code> line.</p>

    <p>This option should normally be turned <code>Off</code>. It is mostly 
    useful in special configurations like proxied mass name-based virtual
    hosting, where the original Host header needs to be evaluated by the
    backend server.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyReceiveBufferSize" id="ProxyReceiveBufferSize">ProxyReceiveBufferSize</a> <a name="proxyreceivebuffersize" id="proxyreceivebuffersize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Network buffer size for proxied HTTP and FTP
connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyReceiveBufferSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyReceiveBufferSize 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">ProxyReceiveBufferSize</code> directive specifies an
    explicit (TCP/IP) network buffer size for proxied HTTP and FTP connections,
    for increased throughput. It has to be greater than <code>512</code> or set
    to <code>0</code> to indicate that the system's default buffer size should
    be used.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyReceiveBufferSize 2048
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyRemote" id="ProxyRemote">ProxyRemote</a> <a name="proxyremote" id="proxyremote">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Remote proxy used to handle certain requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyRemote <var>match</var> <var>remote-server</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This defines remote proxies to this proxy. <var>match</var> is either the
    name of a URL-scheme that the remote server supports, or a partial URL
    for which the remote server should be used, or <code>*</code> to indicate
    the server should be contacted for all requests. <var>remote-server</var> is
    a partial URL for the remote server. Syntax:</p>

    <div class="example"><p><code>
      <dfn>remote-server</dfn> =
          <var>scheme</var>://<var>hostname</var>[:<var>port</var>]
    </code></p></div>

    <p><var>scheme</var> is effectively the protocol that should be used to
    communicate with the remote server; only <code>http</code> is supported by
    this module.</p>

    <div class="example"><h3>Example</h3><p><code>
      ProxyRemote http://goodguys.example.com/ http://mirrorguys.example.com:8000<br />
      ProxyRemote * http://cleverproxy.localdomain<br />
      ProxyRemote ftp http://ftpproxy.mydomain:8080
    </code></p></div>

    <p>In the last example, the proxy will forward FTP requests, encapsulated
    as yet another HTTP proxy request, to another proxy which can handle
    them.</p>

    <p>This option also supports reverse proxy configuration - a backend
    webserver can be embedded within a virtualhost URL space even if that
    server is hidden by another forward proxy.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyRemoteMatch" id="ProxyRemoteMatch">ProxyRemoteMatch</a> <a name="proxyremotematch" id="proxyremotematch">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Remote proxy used to handle requests matched by regular
expressions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyRemoteMatch <var>regex</var> <var>remote-server</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>The <code class="directive">ProxyRemoteMatch</code> is identical to the
    <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> directive, except the
    first argument is a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
    match against the requested URL.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyRequests" id="ProxyRequests">ProxyRequests</a> <a name="proxyrequests" id="proxyrequests">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables forward (standard) proxy requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyRequests On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyRequests Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This allows or prevents Apache from functioning as a forward proxy
    server. (Setting ProxyRequests to <code>Off</code> does not disable use of
    the <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive.)</p>

    <p>In a typical reverse proxy or gateway configuration, this
    option should be set to
    <code>Off</code>.</p>

    <p>In order to get the functionality of proxying HTTP or FTP sites, you
    need also <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> or <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>
    (or both) present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying with <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> until you have <a href="#access">secured your server</a>.  Open proxy servers are dangerous
      both to your network and to the Internet at large.</p>
    </div>

<h3>See also</h3>
<ul>
<li><a href="#forwardreverse">Forward and Reverse Proxies/Gateways</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxySet" id="ProxySet">ProxySet</a> <a name="proxyset" id="proxyset">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Set various Proxy balancer or member parameters</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxySet <var>url</var> <var>key=value [key=value ...]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>ProxySet is only available in Apache 2.2
	and later.</td></tr>
</table>
    <p>This directive is used as an alternate method of setting any of the
    parameters available to Proxy balancers and workers normally done via the
    <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive. If used
    within a <code>&lt;Proxy <var>balancer url|worker url</var>&gt;</code>
    container directive, the <var>url</var> argument is not required. As a side
    effect the respective balancer or worker gets created. This can be useful
    when doing reverse proxying via a
    <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> instead of a
    <code class="directive"><a href="#proxypass">ProxyPass</a></code> directive.</p>

    <div class="example"><p><code>
      &lt;Proxy balancer://hotcluster&gt;<br />
      <span class="indent">
        BalancerMember http://www2.example.com:8009 loadfactor=1<br />
        BalancerMember http://www3.example.com:8009 loadfactor=2<br />
        ProxySet lbmethod=bytraffic<br />
      </span>
      &lt;/Proxy&gt;
    </code></p></div>

    <div class="example"><p><code>
      &lt;Proxy http://backend&gt;<br />
      <span class="indent">
        ProxySet keepalive=On<br />
      </span>
      &lt;/Proxy&gt;
    </code></p></div>

    <div class="example"><p><code>
        ProxySet balancer://foo lbmethod=bytraffic timeout=15
    </code></p></div>

    <div class="example"><p><code>
        ProxySet ajp://backend:7001 timeout=15
    </code></p></div>

   <div class="warning"><h3>Warning</h3>
      <p>Keep in mind that the same parameter key can have a different meaning
      depending whether it is applied to a balancer or a worker as shown by the two
      examples above regarding timeout.</p>
   </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyStatus" id="ProxyStatus">ProxyStatus</a> <a name="proxystatus" id="proxystatus">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Show Proxy LoadBalancer status in mod_status</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyStatus Off|On|Full</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyStatus Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.2 and later</td></tr>
</table>
    <p>This directive determines whether or not proxy
    loadbalancer status data is displayed via the <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>
    server-status page.</p>
    <div class="note"><h3>Note</h3>
      <p><strong>Full</strong> is synonymous with <strong>On</strong></p>
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyTimeout" id="ProxyTimeout">ProxyTimeout</a> <a name="proxytimeout" id="proxytimeout">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Network timeout for proxied requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyTimeout <var>seconds</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Value of <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.31 and later</td></tr>
</table>
    <p>This directive allows a user to specifiy a timeout on proxy requests.
    This is useful when you have a slow/buggy appserver which hangs, and you
    would rather just return a timeout and fail gracefully instead of waiting
    however long it takes the server to return.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxyVia" id="ProxyVia">ProxyVia</a> <a name="proxyvia" id="proxyvia">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Information provided in the <code>Via</code> HTTP response
header for proxied requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyVia On|Off|Full|Block</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyVia Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy</td></tr>
</table>
    <p>This directive controls the use of the <code>Via:</code> HTTP
    header by the proxy. Its intended use is to control the flow of
    proxy requests along a chain of proxy servers.  See <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> (HTTP/1.1), section
    14.45 for an explanation of <code>Via:</code> header lines.</p>

    <ul>
    <li>If set to <code>Off</code>, which is the default, no special processing
    is performed. If a request or reply contains a <code>Via:</code> header,
    it is passed through unchanged.</li>

    <li>If set to <code>On</code>, each request and reply will get a
    <code>Via:</code> header line added for the current host.</li>

    <li>If set to <code>Full</code>, each generated <code>Via:</code> header
    line will additionally have the Apache server version shown as a
    <code>Via:</code> comment field.</li>

    <li>If set to <code>Block</code>, every proxy request will have all its
    <code>Via:</code> header lines removed. No new <code>Via:</code> header will
    be generated.</li>
    </ul>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               mod/mod_proxy_ajp.html                                                                              100644       0       0        61772 11256641270  12565  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_ajp - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_ajp</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>AJP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_ajp_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_ajp.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the 
    <code>Apache JServ Protocol version 1.3</code> (hereafter
    <em>AJP13</em>).</p>

    <p>Thus, in order to get the ability of handling <code>AJP13</code>
    protocol, <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and
    <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code> have to be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#overviewprotocol">Overview of the protocol</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#basppacketstruct">Basic Packet Structure</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rpacetstruct">Request Packet Structure</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#resppacketstruct">Response Packet Structure</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="overviewprotocol" id="overviewprotocol">Overview of the protocol</a></h2>
    <p>The <code>AJP13</code> protocol is packet-oriented.  A binary format
    was presumably chosen over the more readable plain text for reasons of
    performance.  The web server communicates with the servlet container over
    TCP connections.  To cut down on the expensive process of socket creation,
    the web server will attempt to maintain persistent TCP connections to the
    servlet container, and to reuse a connection for multiple request/response
    cycles.</p>
    <p>Once a connection is assigned to a particular request, it will not be
    used for any others until the request-handling cycle has terminated.  In
    other words, requests are not multiplexed over connections.  This makes
    for much simpler code at either end of the connection, although it does
    cause more connections to be open at once.</p>
    <p>Once the web server has opened a connection to the servlet container,
    the connection can be in one of the following states:</p>
    <ul>
    <li> Idle <br /> No request is being handled over this connection. </li>
    <li> Assigned <br /> The connecton is handling a specific request.</li>
    </ul>
    <p>Once a connection is assigned to handle a particular request, the basic
    request informaton (e.g. HTTP headers, etc) is sent over the connection in
    a highly condensed form (e.g. common strings are encoded as integers).
    Details of that format are below in Request Packet Structure. If there is a
    body to the request <code>(content-length &gt; 0)</code>, that is sent in a
    separate packet immediately after.</p>
    <p>At this point, the servlet container is presumably ready to start
    processing the request.  As it does so, it can send the
    following messages back to the web server:</p>
    <ul>
    <li>SEND_HEADERS <br />Send a set of headers back to the browser.</li>
    <li>SEND_BODY_CHUNK <br />Send a chunk of body data back to the browser.
    </li>
    <li>GET_BODY_CHUNK <br />Get further data from the request if it hasn't all
    been transferred yet.  This is necessary because the packets have a fixed
    maximum size and arbitrary amounts of data can be included the body of a
    request (for uploaded files, for example).  (Note: this is unrelated to
    HTTP chunked tranfer).</li>
    <li>END_RESPONSE <br /> Finish the request-handling cycle.</li>
    </ul>
    <p>Each message is accompanied by a differently formatted packet of data.
    See Response Packet Structures below for details.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="basppacketstruct" id="basppacketstruct">Basic Packet Structure</a></h2>
    <p>There is a bit of an XDR heritage to this protocol, but it differs
    in lots of ways (no 4 byte alignment, for example).</p>
    <p>Byte order: I am not clear about the endian-ness of the individual
    bytes.  I'm guessing the bytes are little-endian, because that's what
    XDR specifies, and I'm guessing that sys/socket library is magically
    making that so (on the C side).  If anyone with a better knowledge of
    socket calls can step in, that would be great.</p>
    <p>There are four data types in the protocol: bytes, booleans,
    integers and strings.</p>
    <dl>
    <dt><strong>Byte</strong></dt><dd>A single byte.</dd>
    <dt><strong>Boolean</strong></dt>
      <dd>A single byte, <code>1 = true</code>, <code>0 = false</code>.
      Using other non-zero values as true (i.e. C-style) may work in some places,
      but it won't in others.</dd>
    <dt><strong>Integer</strong></dt>
      <dd>A number in the range of <code>0 to 2^16 (32768)</code>.  Stored in
      2 bytes with the high-order byte first.</dd>
    <dt><strong>String</strong></dt>
      <dd>A variable-sized string (length bounded by 2^16). Encoded with
      the length packed into two bytes first, followed by the string
      (including the terminating '\0').  Note that the encoded length does
      <strong>not</strong> include the trailing '\0' -- it is like
      <code>strlen</code>.  This is a touch confusing on the Java side, which
      is littered with odd autoincrement statements to skip over these
      terminators.  I believe the reason this was done was to allow the C
      code to be extra efficient when reading strings which the servlet
      container is sending back -- with the terminating \0 character, the
      C code can pass around references into a single buffer, without copying.
      if the \0 was missing, the C code would have to copy things out in order
      to get its notion of a string.</dd>
    </dl>

  <h3>Packet Size</h3>
    <p>According to much of the code, the max packet size is <code>
    8 * 1024 bytes (8K)</code>.  The actual length of the packet is encoded in
    the header.</p>
  
  <h3>Packet Headers</h3>
    <p>Packets sent from the server to the container begin with
    <code>0x1234</code>.  Packets sent from the container to the server
    begin with <code>AB</code> (that's the ASCII code for A followed by the
    ASCII code for B).  After those first two bytes, there is an integer
    (encoded as above) with the length of the payload.  Although this might
    suggest that the maximum payload could be as large as 2^16, in fact, the
    code sets the maximum to be 8K.</p>
    <table>
      <tr>
        <td colspan="6"><em>Packet Format (Server-&gt;Container)</em></td>
      </tr>
      <tr>
        <td>Byte</td>
        <td>0</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4...(n+3)</td>
      </tr>
      <tr>
        <td>Contents</td>
        <td>0x12</td>
        <td>0x34</td>
        <td colspan="2">Data Length (n)</td>
        <td>Data</td>
      </tr>
    </table>
    <table>
      <tr>
        <td colspan="6"><em>Packet Format (Container-&gt;Server)</em></td>
      </tr>
      <tr>
        <td>Byte</td>
        <td>0</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4...(n+3)</td>
      </tr>
      <tr>
        <td>Contents</td>
        <td>A</td>
        <td>B</td>
        <td colspan="2">Data Length (n)</td>
        <td>Data</td>
      </tr>
    </table>
    <p>For most packets, the first byte of the payload encodes the type of
     message.  The exception is for request body packets sent from the server to
     the container -- they are sent with a standard packet header (<code>
     0x1234</code> and then length of the packet), but without any prefix code
     after that.</p>
     <p>The web server can send the following messages to the servlet
     container:</p>
    <table>
      <tr>
        <td>Code</td>
        <td>Type of Packet</td>
        <td>Meaning</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Forward Request</td>
        <td>Begin the request-processing cycle with the following data</td>
      </tr>
      <tr>
        <td>7</td>
        <td>Shutdown</td>
        <td>The web server asks the container to shut itself down.</td>
      </tr>
      <tr>
        <td>8</td>
        <td>Ping</td>
        <td>The web server asks the container to take control
        (secure login phase).</td>
      </tr>
      <tr>
        <td>10</td>
        <td>CPing</td>
        <td>The web server asks the container to respond quickly with a CPong.
        </td>
      </tr>
      <tr>
        <td>none</td>
        <td>Data</td>
        <td>Size (2 bytes) and corresponding body data.</td>
      </tr>
    </table>
    <p>To ensure some basic security, the container will only actually do the
    <code>Shutdown</code> if the request comes from the same machine on which
    it's hosted.</p>
    <p>The first <code>Data</code> packet is send immediatly after the
    <code>Forward Request</code> by the web server.</p>
    <p>The servlet container can send the following types of messages to the
    webserver:</p>
    <table>
      <tr>
        <td>Code</td>
        <td>Type of Packet</td>
        <td>Meaning</td>
      </tr>
      <tr>
        <td>3</td>
        <td>Send Body Chunk</td>
        <td>Send a chunk of the body from the servlet container to the web
        server (and presumably, onto the browser). </td>
      </tr>
      <tr>
        <td>4</td>
        <td>Send Headers</td>
        <td>Send the response headers from the servlet container to the web
        server (and presumably, onto the browser).</td>
      </tr>
      <tr>
        <td>5</td>
        <td>End Response</td>
        <td>Marks the end of the response (and thus the request-handling cycle).
        </td>
      </tr>
      <tr>
        <td>6</td>
        <td>Get Body Chunk</td>
        <td>Get further data from the request if it hasn't all been
        transferred yet.</td>
      </tr>
      <tr>
        <td>9</td>
        <td>CPong Reply</td>
        <td>The reply to a CPing request</td>
      </tr>
    </table>
    <p>Each of the above messages has a different internal structure, detailed
    below.</p>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="rpacetstruct" id="rpacetstruct">Request Packet Structure</a></h2>
    <p>For messages from the server to the container of type
    <em>Forward Request</em>:</p>
    <div class="example"><pre>
AJP13_FORWARD_REQUEST :=
    prefix_code      (byte) 0x02 = JK_AJP13_FORWARD_REQUEST
    method           (byte)
    protocol         (string)
    req_uri          (string)
    remote_addr      (string)
    remote_host      (string)
    server_name      (string)
    server_port      (integer)
    is_ssl           (boolean)
    num_headers      (integer)
    request_headers *(req_header_name req_header_value)
    attributes      *(attribut_name attribute_value)
    request_terminator (byte) OxFF
    </pre></div>
    <p>The <code>request_headers</code> have the following structure:
    </p><div class="example"><pre>
req_header_name := 
    sc_req_header_name | (string)  [see below for how this is parsed]

sc_req_header_name := 0xA0xx (integer)

req_header_value := (string)
</pre></div>
    <p>The <code>attributes</code> are optional and have the following
    structure:</p>
    <div class="example"><pre>
attribute_name := sc_a_name | (sc_a_req_attribute string)

attribute_value := (string)

    </pre></div>
    <p>Not that the all-important header is <code>content-length</code>,
    because it determines whether or not the container looks for another
    packet immediately.</p>
  <h3>Detailed description of the elements of Forward Request
  </h3>
  <h3>Request prefix</h3>
    <p>For all requests, this will be 2. See above for details on other Prefix
    codes.</p>
  
  <h3>Method</h3>
    <p>The HTTP method, encoded as a single byte:</p>
    <table>
      <tr><td>Command Name</td><td>Code</td></tr>
      <tr><td>OPTIONS</td><td>1</td></tr>
      <tr><td>GET</td><td>2</td></tr>
      <tr><td>HEAD</td><td>3</td></tr>
      <tr><td>POST</td><td>4</td></tr>
      <tr><td>PUT</td><td>5</td></tr>
      <tr><td>DELETE</td><td>6</td></tr>
      <tr><td>TRACE</td><td>7</td></tr>
      <tr><td>PROPFIND</td><td>8</td></tr>
      <tr><td>PROPPATCH</td><td>9</td></tr>
      <tr><td>MKCOL</td><td>10</td></tr>
      <tr><td>COPY</td><td>11</td></tr>
      <tr><td>MOVE</td><td>12</td></tr>
      <tr><td>LOCK</td><td>13</td></tr>
      <tr><td>UNLOCK</td><td>14</td></tr>
      <tr><td>ACL</td><td>15</td></tr>
      <tr><td>REPORT</td><td>16</td></tr>
      <tr><td>VERSION-CONTROL</td><td>17</td></tr>
      <tr><td>CHECKIN</td><td>18</td></tr>
      <tr><td>CHECKOUT</td><td>19</td></tr>
      <tr><td>UNCHECKOUT</td><td>20</td></tr>
      <tr><td>SEARCH</td><td>21</td></tr>
      <tr><td>MKWORKSPACE</td><td>22</td></tr>
      <tr><td>UPDATE</td><td>23</td></tr>
      <tr><td>LABEL</td><td>24</td></tr>
      <tr><td>MERGE</td><td>25</td></tr>
      <tr><td>BASELINE_CONTROL</td><td>26</td></tr>
      <tr><td>MKACTIVITY</td><td>27</td></tr>
    </table>
    <p>Later version of ajp13, will transport 
    additional methods, even if they are not in this list.</p>
  
  <h3>protocol, req_uri, remote_addr, remote_host, server_name,
  server_port, is_ssl</h3>
    <p>These are all fairly self-explanatory.  Each of these is required, and
    will be sent for every request.</p>
  
  <h3>Headers</h3>
    <p>The structure of <code>request_headers</code> is the following:
    First, the number of headers <code>num_headers</code> is encoded.
    Then, a series of header name <code>req_header_name</code> / value
    <code>req_header_value</code> pairs follows.
    Common header names are encoded as integers,
    to save space.  If the header name is not in the list of basic headers,
    it is encoded normally (as a string, with prefixed length).  The list of
    common headers <code>sc_req_header_name</code>and their codes
    is as follows (all are case-sensitive):</p>
    <table>
      <tr><td>Name</td><td>Code value</td><td>Code name</td></tr>
      <tr><td>accept</td><td>0xA001</td><td>SC_REQ_ACCEPT</td></tr>
      <tr><td>accept-charset</td><td>0xA002</td><td>SC_REQ_ACCEPT_CHARSET
      </td></tr>
      <tr><td>accept-encoding</td><td>0xA003</td><td>SC_REQ_ACCEPT_ENCODING
      </td></tr>
      <tr><td>accept-language</td><td>0xA004</td><td>SC_REQ_ACCEPT_LANGUAGE
      </td></tr>
      <tr><td>authorization</td><td>0xA005</td><td>SC_REQ_AUTHORIZATION</td>
      </tr>
      <tr><td>connection</td><td>0xA006</td><td>SC_REQ_CONNECTION</td></tr>
      <tr><td>content-type</td><td>0xA007</td><td>SC_REQ_CONTENT_TYPE</td>
      </tr>
      <tr><td>content-length</td><td>0xA008</td><td>SC_REQ_CONTENT_LENGTH</td>
      </tr>
      <tr><td>cookie</td><td>0xA009</td><td>SC_REQ_COOKIE</td></tr>
      <tr><td>cookie2</td><td>0xA00A</td><td>SC_REQ_COOKIE2</td></tr>
      <tr><td>host</td><td>0xA00B</td><td>SC_REQ_HOST</td></tr>
      <tr><td>pragma</td><td>0xA00C</td><td>SC_REQ_PRAGMA</td></tr>
      <tr><td>referer</td><td>0xA00D</td><td>SC_REQ_REFERER</td></tr>
      <tr><td>user-agent</td><td>0xA00E</td><td>SC_REQ_USER_AGENT</td></tr>
    </table>
    <p>The Java code that reads this grabs the first two-byte integer and if
    it sees an <code>'0xA0'</code> in the most significant
    byte, it uses the integer in the second byte as an index into an array of
    header names.  If the first byte is not <code>0xA0</code>, it assumes that
    the two-byte integer is the length of a string, which is then read in.</p>
    <p>This works on the assumption that no header names will have length
    greater than <code>0x9999 (==0xA000 - 1)</code>, which is perfectly
    reasonable, though somewhat arbitrary.</p>
    <div class="note"><h3>Note:</h3>
    The <code>content-length</code> header is extremely
    important.  If it is present and non-zero, the container assumes that
    the request has a body (a POST request, for example), and immediately
    reads a separate packet off the input stream to get that body.
    </div>
  
  <h3>Attributes</h3>
    <p>The attributes prefixed with a <code>?</code>
    (e.g. <code>?context</code>) are all optional.  For each, there is a
    single byte code to indicate the type of attribute, and then its value
    (string or integer).  They can be sent in any order (though the C code
    always sends them in the order listed below).  A special terminating code
    is sent to signal the end of the list of optional attributes. The list of
    byte codes is:</p>
    <table>
      <tr><td>Information</td><td>Code Value</td><td>Type Of Value</td><td>Note</td></tr>
      <tr><td>?context</td><td>0x01</td><td>-</td><td>Not currently implemented
      </td></tr>
      <tr><td>?servlet_path</td><td>0x02</td><td>-</td><td>Not currently implemented
      </td></tr>
      <tr><td>?remote_user</td><td>0x03</td><td>String</td><td /></tr>
      <tr><td>?auth_type</td><td>0x04</td><td>String</td><td /></tr>
      <tr><td>?query_string</td><td>0x05</td><td>String</td><td /></tr>
      <tr><td>?jvm_route</td><td>0x06</td><td>String</td><td /></tr>
      <tr><td>?ssl_cert</td><td>0x07</td><td>String</td><td /></tr>
      <tr><td>?ssl_cipher</td><td>0x08</td><td>String</td><td /></tr>
      <tr><td>?ssl_session</td><td>0x09</td><td>String</td><td /></tr>
      <tr><td>?req_attribute</td><td>0x0A</td><td>String</td><td>Name (the name of the
      attribute follows)</td></tr>
      <tr><td>?ssl_key_size</td><td>0x0B</td><td>Integer</td><td /></tr>
      <tr><td>are_done</td><td>0xFF</td><td>-</td><td>request_terminator</td></tr>
    </table>
    <p>The <code>context</code> and <code>servlet_path</code> are not
    currently set by the C code, and most of the Java code completely ignores
    whatever is sent over for those fields (and some of it will actually break
    if a string is sent along after one of those codes).  I don't know if this
    is a bug or an unimplemented feature or just vestigial code, but it's
    missing from both sides of the connection.</p>
    <p>The <code>remote_user</code> and <code>auth_type</code> presumably
    refer to HTTP-level authentication, and communicate the remote user's
    username and the type of authentication used to establish their identity
    (e.g. Basic, Digest).</p>
    <p>The <code>query_string</code>, <code>ssl_cert</code>,
    <code>ssl_cipher</code>, and <code>ssl_session</code> refer to the
    corresponding pieces of HTTP and HTTPS.</p>
    <p>The <code>jvm_route</code>, is used to support sticky
    sessions -- associating a user's sesson with a particular Tomcat instance
    in the presence of multiple, load-balancing servers.</p>
    <p>Beyond this list of basic attributes, any number of other attributes
    can be sent via the <code>req_attribute</code> code <code>0x0A</code>.
    A pair of strings to represent the attribute name and value are sent
    immediately after each instance of that code.  Environment values are passed
    in via this method.</p>
    <p>Finally, after all the attributes have been sent, the attribute
    terminator, <code>0xFF</code>, is sent.  This signals both the end of the
    list of attributes and also then end of the Request Packet.</p>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="resppacketstruct" id="resppacketstruct">Response Packet Structure</a></h2>
    <p>for messages which the container can send back to the server.</p>
    <div class="example"><pre>
AJP13_SEND_BODY_CHUNK :=
  prefix_code   3
  chunk_length  (integer)
  chunk        *(byte)
  chunk_terminator (byte) Ox00

AJP13_SEND_HEADERS :=
  prefix_code       4
  http_status_code  (integer)
  http_status_msg   (string)
  num_headers       (integer)
  response_headers *(res_header_name header_value)

res_header_name :=
    sc_res_header_name | (string)   [see below for how this is parsed]

sc_res_header_name := 0xA0 (byte)

header_value := (string)

AJP13_END_RESPONSE :=
  prefix_code       5
  reuse             (boolean)


AJP13_GET_BODY_CHUNK :=
  prefix_code       6
  requested_length  (integer)
    </pre></div>
  <h3>Details:</h3>
  <h3>Send Body Chunk</h3>
    <p>The chunk is basically binary data, and is sent directly back to the
    browser.</p>
  
  <h3>Send Headers</h3>
    <p>The status code and message are the usual HTTP things
    (e.g. <code>200</code> and <code>OK</code>). The response header names are
    encoded the same way the request header names are. See header_encoding above
    for details about how the codes are distinguished from the strings.<br />
    The codes for common headers are:</p>
    <table>
      <tr><td>Name</td><td>Code value</td></tr>
      <tr><td>Content-Type</td><td>0xA001</td></tr>
      <tr><td>Content-Language</td><td>0xA002</td></tr>
      <tr><td>Content-Length</td><td>0xA003</td></tr>
      <tr><td>Date</td><td>0xA004</td></tr>
      <tr><td>Last-Modified</td><td>0xA005</td></tr>
      <tr><td>Location</td><td>0xA006</td></tr>
      <tr><td>Set-Cookie</td><td>0xA007</td></tr>
      <tr><td>Set-Cookie2</td><td>0xA008</td></tr>
      <tr><td>Servlet-Engine</td><td>0xA009</td></tr>
      <tr><td>Status</td><td>0xA00A</td></tr>
      <tr><td>WWW-Authenticate</td><td>0xA00B</td></tr>
    </table>
    <p> After the code or the string header name, the header value is
    immediately encoded.</p>
  
  <h3>End Response</h3>
    <p>Signals the end of this request-handling cycle.  If the
    <code>reuse</code> flag is true <code>(==1)</code>, this TCP connection can
    now be used to handle new incoming requests.  If <code>reuse</code> is false
    (anything other than 1 in the actual C code), the connection should
    be closed.</p>
  
  <h3>Get Body Chunk</h3>
    <p>The container asks for more data from the request (If the body was
    too large to fit in the first packet sent over or when the request is
    chuncked). The server will send a body packet back with an amount of data
    which is the minimum of the <code>request_length</code>, the maximum send
    body size <code>(8186 (8 Kbytes - 6))</code>, and the number of bytes
    actually left to send from the request body.<br />
    If there is no more data in the body (i.e. the servlet container is
    trying to read past the end of the body), the server will send back an
    <em>empty</em> packet, which is a body packet with a payload length of 0.
    <code>(0x12,0x34,0x00,0x00)</code></p>
  
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
      mod/mod_proxy_balancer.html                                                                         100644       0       0        41650 11256641270  13553  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_balancer - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_balancer</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> extension for load balancing </td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_balancer_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_balancer.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.1 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides load balancing support for
    <code>HTTP</code>, <code>FTP</code> and <code>AJP13</code> protocols
    </p>

    <p>Thus, in order to get the ability of load balancing,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
    have to be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#scheduler">Load balancer scheduler algorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#example">Example of a balancer configuration</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#requests">Request Counting Algorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#traffic">Weighted Traffic Counting Algorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#busyness">Pending Request Counting Algorithm</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#environment">Exported Environment Variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling Balancer Manager Support</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="scheduler" id="scheduler">Load balancer scheduler algorithm</a></h2>
    
    <p>At present, there are 3 load balancer scheduler algorithms available
    for use: Request Counting, Weighted Traffic Counting and Pending Request 
    Counting. These are controlled via the <code>lbmethod</code> value of
    the Balancer definition. See the <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> 
    directive for more information.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="example" id="example">Example of a balancer configuration</a></h2>
	
	<p>Before we dive into the technical details, here's an example of
	how you might use <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> to provide
	load balancing between two back-end servers:
	</p>

	<div class="example"><p><code>
	&lt;Proxy balancer://mycluster&gt;<br />
		BalancerMember http://192.168.1.50:80<br />
		BalancerMember http://192.168.1.51:80<br />
	&lt;/Proxy&gt;<br />
	ProxyPass /test balancer://mycluster/
	</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requests" id="requests">Request Counting Algorithm</a></h2>
    
    <p>Enabled via <code>lbmethod=byrequests</code>, the idea behind this
    scheduler is that we distribute the requests among the
    various workers to ensure that each gets their configured share
    of the number of requests. It works as follows:</p>

    <p><dfn>lbfactor</dfn> is <em>how much we expect this worker
    to work</em>, or <em>the workers's work quota</em>. This is
    a normalized value representing their "share" of the amount of
    work to be done.</p>

    <p><dfn>lbstatus</dfn> is <em>how urgent this worker has to work
    to fulfill its quota of work</em>.</p>

    <p>The <dfn>worker</dfn> is a member of the load balancer,
    usually a remote host serving one of the supported protocols.</p>

    <p>We distribute each worker's work quota to the worker, and then look
    which of them needs to work most urgently (biggest lbstatus).  This
    worker is then selected for work, and its lbstatus reduced by the
    total work quota we distributed to all workers.  Thus the sum of all
    lbstatus does not change(*) and we distribute the requests
    as desired.</p>

    <p>If some workers are disabled, the others will
    still be scheduled correctly.</p>

    <div class="example"><pre><code>for each worker in workers
    worker lbstatus += worker lbfactor
    total factor    += worker lbfactor
    if worker lbstatus &gt; candidate lbstatus
        candidate = worker

candidate lbstatus -= total factor</code></pre></div>

    <p>If a balancer is configured as follows:</p>
    
    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th>
        <th class="data">d</th></tr>
<tr><th>lbfactor</th>
        <td class="data">25</td>
        <td class="data">25</td>
        <td class="data">25</td>
        <td class="data">25</td></tr>
<tr><th>lbstatus</th>
        <td class="data">0</td>
        <td class="data">0</td>
        <td class="data">0</td>
        <td class="data">0</td></tr>
</table>

    <p>And <var>b</var> gets disabled, the following schedule is produced:</p>

    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th>
        <th class="data">d</th></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-50</em></td>
        <td class="data">0</td>
        <td class="data">25</td>
        <td class="data">25</td></tr>
<tr><th>lbstatus</th>
        <td class="data">-25</td>
        <td class="data">0</td>
        <td class="data"><em>-25</em></td>
        <td class="data">50</td></tr>
<tr><th>lbstatus</th>
        <td class="data">0</td>
        <td class="data">0</td>
        <td class="data">0</td>
        <td class="data"><em>0</em></td></tr>
<tr><td class="data" colspan="5">(repeat)</td></tr>
</table>

    <p>That is it schedules: <var>a</var> <var>c</var> <var>d</var>
    <var>a</var> <var>c</var> <var>d</var> <var>a</var> <var>c</var>
    <var>d</var> ... Please note that:</p>

    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th>
        <th class="data">d</th></tr>
<tr><th>lbfactor</th>
        <td class="data">25</td>
        <td class="data">25</td>
        <td class="data">25</td>
        <td class="data">25</td></tr>
</table>

    <p>Has the exact same behavior as:</p>

    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th>
        <th class="data">d</th></tr>
<tr><th>lbfactor</th>
        <td class="data">1</td>
        <td class="data">1</td>
        <td class="data">1</td>
        <td class="data">1</td></tr>
</table>

    <p>This is because all values of <dfn>lbfactor</dfn> are normalized
    with respect to the others. For:</p>

    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th></tr>
<tr><th>lbfactor</th>
        <td class="data">1</td>
        <td class="data">4</td>
        <td class="data">1</td></tr>
</table>

    <p>worker <var>b</var> will, on average, get 4 times the requests
    that <var>a</var> and <var>c</var> will.</p>

    <p>The following asymmetric configuration works as one would expect:</p>

    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th></tr>
<tr><th>lbfactor</th>
        <td class="data">70</td>
        <td class="data">30</td></tr>
<tr><td class="data" colspan="2">&nbsp;</td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-30</em></td>
        <td class="data">30</td></tr>
<tr><th>lbstatus</th>
        <td class="data">40</td>
        <td class="data"><em>-40</em></td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>10</em></td>
        <td class="data">-10</td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-20</em></td>
        <td class="data">20</td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-50</em></td>
        <td class="data">50</td></tr>
<tr><th>lbstatus</th>
        <td class="data">20</td>
        <td class="data"><em>-20</em></td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-10</em></td>
        <td class="data">10</td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>-40</em></td>
        <td class="data">40</td></tr>
<tr><th>lbstatus</th>
        <td class="data">30</td>
        <td class="data"><em>-30</em></td></tr>
<tr><th>lbstatus</th>
        <td class="data"><em>0</em></td>
        <td class="data">0</td></tr>
<tr><td class="data" colspan="3">(repeat)</td></tr>
</table>

    <p>That is after 10 schedules, the schedule repeats and 7 <var>a</var>
    are selected with 3 <var>b</var> interspersed.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="traffic" id="traffic">Weighted Traffic Counting Algorithm</a></h2>
    
    <p>Enabled via <code>lbmethod=bytraffic</code>, the idea behind this
    scheduler is very similar to the Request Counting method, with
    the following changes:</p>

    <p><dfn>lbfactor</dfn> is <em>how much traffic, in bytes, we want
    this worker to handle</em>. This is also a normalized value
    representing their "share" of the amount of work to be done,
    but instead of simply counting the number of requests, we take
    into account the amount of traffic this worker has seen.</p>

    <p>If a balancer is configured as follows:</p>
    
    <table><tr><th>worker</th>
        <th class="data">a</th>
        <th class="data">b</th>
        <th class="data">c</th></tr>
<tr><th>lbfactor</th>
        <td class="data">1</td>
        <td class="data">2</td>
        <td class="data">1</td></tr>
</table>

    <p>Then we mean that we want <var>b</var> to process twice the
    amount of bytes than <var>a</var> or <var>c</var> should. It does
    not necessarily mean that <var>b</var> would handle twice as
    many requests, but it would process twice the I/O. Thus, the
    size of the request and response are applied to the weighting
    and selection algorithm.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="busyness" id="busyness">Pending Request Counting Algorithm</a></h2>

    

    <p>Enabled via <code>lbmethod=bybusyness</code>, this scheduler keeps
    track of how many requests each worker is assigned at present. A new
    request is automatically assigned to the worker with the lowest
    number of active requests. This is useful in the case of workers
    that queue incoming requests independently of Apache, to ensure that
    queue length stays even and a request is always given to the worker
    most likely to service it fastest.</p>

    <p>In the case of multiple least-busy workers, the statistics (and
    weightings) used by the Request Counting method are used to break the
    tie. Over time, the distribution of work will come to resemble that
    characteristic of <code>byrequests</code>.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="environment" id="environment">Exported Environment Variables</a></h2>
    
    <p>At present there are 6 environment variables exported:</p>

    <dl>
    
    <dt><var><a name="balancer_session_sticky" id="balancer_session_sticky">BALANCER_SESSION_STICKY</a></var></dt>
    <dd>
    <p>This is assigned the <var>stickysession</var> value used in the current
    request.  It is the cookie or parameter name used for sticky sessions</p>
    </dd>

    
    <dt><var><a name="balancer_session_route" id="balancer_session_route">BALANCER_SESSION_ROUTE</a></var></dt>
    <dd>
    <p>This is assigned the <var>route</var> parsed from the current 
    request.</p>
    </dd>

    
    <dt><var><a name="balancer_name" id="balancer_name">BALANCER_NAME</a></var></dt>
    <dd>
    <p>This is assigned the name of the balancer used for the current 
    request. The value is something like <code>balancer://foo</code>.</p>
    </dd>

    
    <dt><var><a name="balancer_worker_name" id="balancer_worker_name">BALANCER_WORKER_NAME</a></var></dt>
    <dd>
    <p>This is assigned the name of the worker used for the current request.
    The value is something like <code>http://hostA:1234</code>.</p>
    </dd>

    
    <dt><var><a name="balancer_worker_route" id="balancer_worker_route">BALANCER_WORKER_ROUTE</a></var></dt>
    <dd>
    <p>This is assigned the <var>route</var> of the worker that will be 
    used for the current request.</p>
    </dd>

    
    <dt><var><a name="balancer_route_changed" id="balancer_route_changed">BALANCER_ROUTE_CHANGED</a></var></dt>
    <dd>
    <p>This is set to 1 if the session route does not match the
    worker route (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the
    session does not yet have an established route.  This can be used to
    determine when/if the client needs to be sent an updated route
    when sticky sessions are used.</p>
    </dd>
    </dl>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Enabling Balancer Manager Support</a></h2>
    
    <p>This module <em>requires</em> the service of 
    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>.
    Balancer manager enables dynamic update of balancer
    members. You can use balancer manager to change the balance
    factor or a particular member, or put it in the off line
    mode.
    </p>

    <p>Thus, in order to get the ability of load balancer management,
    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> and <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
    have to be present in the server.</p>

    <p>To enable load balancer management for browsers from the example.com
    domain add this code to your <code>httpd.conf</code>
    configuration file</p>
<div class="example"><p><code>
    &lt;Location /balancer-manager&gt;<br />
    SetHandler balancer-manager<br />
<br />
    Order Deny,Allow<br />
    Deny from all<br />
    Allow from .example.com<br />
    &lt;/Location&gt;
</code></p></div>

    <p>You can now access load balancer manager by using a Web browser
    to access the page
    <code>http://your.server.name/balancer-manager</code></p>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                        mod/mod_proxy_connect.html                                                                          100644       0       0         6775 11256641270  13426  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_connect - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_connect</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> extension for
<code>CONNECT</code> request handling</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_connect_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_connect.c</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the <code>CONNECT</code>
    HTTP method. This method is mainly used to tunnel SSL requests
    through proxy servers.</p>

    <p>Thus, in order to get the ability of handling <code>CONNECT</code>
    requests, <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and
    <code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code> have to be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>See also</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/mod_proxy.html#allowconnect">AllowCONNECT</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
</ul></div>

</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
   mod/mod_proxy_ftp.html                                                                              100644       0       0        21705 11256641270  12574  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_ftp - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_ftp</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>FTP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_ftp_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_ftp.c</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the proxying
    FTP sites.  Note that FTP support is currently limited to
    the GET method.</p>

    <p>Thus, in order to get the ability of handling FTP proxy requests,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>
    have to be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#mimetypes">Why doesn't file type <var>xxx</var>
    download via FTP?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#type">How can I force an FTP ASCII download of
    File <var>xxx</var>?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ftpnonget">How can I do FTP upload?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#percent2fhck">How can I access FTP files outside
    of my home directory?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ftppass">How can I hide the FTP cleartext password
    in my browser's URL line?</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mimetypes" id="mimetypes">Why doesn't file type <var>xxx</var>
    download via FTP?</a></h2>
      <p>You probably don't have that particular file type defined as
      <code>application/octet-stream</code> in your proxy's mime.types
      configuration file. A useful line can be</p>

      <div class="example"><pre>application/octet-stream   bin dms lha lzh exe class tgz taz</pre></div>
	<p>Alternatively you may prefer to default everything to binary:</p>
      <div class="example"><pre>DefaultType application/octet-stream</pre></div>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="type" id="type">How can I force an FTP ASCII download of
    File <var>xxx</var>?</a></h2>
      <p>In the rare situation where you must download a specific file using the
      FTP <code>ASCII</code> transfer method (while the default transfer is in
      <code>binary</code> mode), you can override <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>'s
      default by suffixing the request with <code>;type=a</code> to force an
      ASCII transfer. (FTP Directory listings are always executed in ASCII mode,
      however.)</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ftpnonget" id="ftpnonget">How can I do FTP upload?</a></h2>
	<p>Currently, only GET is supported for FTP in mod_proxy.  You can
	of course use HTTP upload (POST or PUT) through an Apache proxy.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="percent2fhck" id="percent2fhck">How can I access FTP files outside
    of my home directory?</a></h2>
      <p>An FTP URI is interpreted relative to the home directory of the user
      who is logging in. Alas, to reach higher directory levels you cannot
      use /../, as the dots are interpreted by the browser and not actually
      sent to the FTP server. To address this problem, the so called <dfn>Squid
      %2f hack</dfn> was implemented in the Apache FTP proxy; it is a
      solution which is also used by other popular proxy servers like the <a href="http://www.squid-cache.org/">Squid Proxy Cache</a>. By
      prepending <code>/%2f</code> to the path of your request, you can make
      such a proxy change the FTP starting directory to <code>/</code> (instead
      of the home directory). For example, to retrieve the file
      <code>/etc/motd</code>, you would use the URL:</p>

      <div class="example"><p><code>
        ftp://<var>user</var>@<var>host</var>/%2f/etc/motd
      </code></p></div>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ftppass" id="ftppass">How can I hide the FTP cleartext password
    in my browser's URL line?</a></h2>
      <p>To log in to an FTP server by username and password, Apache uses
      different strategies. In absense of a user name and password in the URL
      altogether, Apache sends an anonymous login to the FTP server,
      <em>i.e.</em>,</p>

      <div class="example"><p><code>
        user: anonymous<br />
        password: apache_proxy@
      </code></p></div>

      <p>This works for all popular FTP servers which are configured for
      anonymous access.</p>

      <p>For a personal login with a specific username, you can embed the user
      name into the URL, like in:</p>

      <div class="example"><p><code>
        ftp://<var>username</var>@<var>host</var>/myfile
      </code></p></div>

      <p>If the FTP server asks for a password when given this username (which
      it should), then Apache will reply with a <code>401</code> (Authorization
      required) response, which causes the Browser to pop up the
      username/password dialog. Upon entering the password, the connection
      attempt is retried, and if successful, the requested resource is
      presented. The advantage of this procedure is that your browser does not
      display the password in cleartext (which it would if you had used</p>

      <div class="example"><p><code>
        ftp://<var>username</var>:<var>password</var>@<var>host</var>/myfile
      </code></p></div>

      <p>in the first place).</p>

      <div class="note"><h3>Note</h3>
        <p>The password which is transmitted in such a way is not encrypted on
        its way. It travels between your browser and the Apache proxy server in
        a base64-encoded cleartext string, and between the Apache proxy and the
        FTP server as plaintext. You should therefore think twice before
        accessing your FTP server via HTTP (or before accessing your personal
        files via FTP at all!) When using unsecure channels, an eavesdropper
        might intercept your password on its way.</p>
      </div>
    </div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                           mod/mod_proxy_http.html                                                                             100644       0       0        16672 11256641270  12771  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_http - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_http</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>HTTP support module for
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_http_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_http.c</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides the features used for
    proxying HTTP requests. <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code>
    supports HTTP/0.9, HTTP/1.0 and HTTP/1.1. It does <em>not</em>
    provide any caching abilities. If you want to set up a caching
    proxy, you might want to use the additional service of the
    <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> module.</p>

    <p>Thus, in order to get the ability of handling HTTP proxy requests,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code>
    have to be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#env">Environment Variables</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="env" id="env">Environment Variables</a></h2>
    <p>In addition to the configuration directives that control the
    behaviour of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, there are a number of
    <dfn>environment variables</dfn> that control the HTTP protocol
    provider:</p>
    <dl>
        <dt>proxy-sendextracrlf</dt>
        <dd>Causes proxy to send an extra CR-LF newline on the end of a
        request.  This is a workaround for a bug in some browsers.</dd>
        <dt>force-proxy-request-1.0</dt>
        <dd>Forces the proxy to send requests to the backend as HTTP/1.0
        and disables HTTP/1.1 features.</dd>
        <dt>proxy-nokeepalive</dt>
        <dd>Forces the proxy to close the backend connection after
        each request.</dd>
        <dt>proxy-chain-auth</dt>
        <dd>If the proxy requires authentication, it will read and
        consume the proxy authentication credentials sent by the client.
        With <var>proxy-chain-auth</var> it will <em>also</em> forward
        the credentials to the next proxy in the chain.  This may
        be necessary if you have a chain of proxies that share
        authentication information.  <strong>Security Warning:</strong>
        Do not set this unless you know you need it, as it forwards
        sensitive information!</dd>
        <dt>proxy-sendcl</dt>
        <dd>HTTP/1.0 required all HTTP requests that include a body
        (e.g. POST requests) to include a <var>Content-Length</var>
        header.  This environment variable forces the Apache proxy to
        send this header to the backend server, regardless of what the
        Client sent to the proxy.  It ensures compatibility when
        proxying for an HTTP/1.0 or unknown backend.  However, it
        may require the entire request to be buffered by the proxy,
        so it becomes very inefficient for large requests.</dd>
        <dt>proxy-sendchunks or proxy-sendchunked</dt>
        <dd>This is the opposite of <var>proxy-sendcl</var>.  It allows
        request bodies to be sent to the backend using chunked transfer
        encoding.  This allows the request to be efficiently streamed,
        but requires that the backend server supports HTTP/1.1.</dd>
        <dt>proxy-interim-response</dt>
        <dd>This variable takes values <code>RFC</code> or
        <code>Suppress</code>.  Earlier httpd versions would suppress
        HTTP interim (1xx) responses sent from the backend.  This is
        technically a violation of the HTTP protocol.  In practice,
        if a backend sends an interim response, it may itself be
        extending the protocol in a manner we know nothing about,
        or just broken.  So this is now configurable: set
        <code>proxy-interim-response RFC</code> to be fully protocol
        compliant, or <code>proxy-interim-response Suppress</code>
        to suppress interim responses.</dd>
        <dt>proxy-initial-not-pooled</dt>
        <dd>If this variable is set no pooled connection will be reused
        if the client connection is an initial connection. This avoids
        the "proxy: error reading status line from remote server" error message
        caused by the race condition that the backend server closed the
        pooled connection after the connection check by the proxy and
        before data sent by the proxy reached the backend. It has to be
        kept in mind that setting this variable downgrades performance,
        especially with HTTP/1.0 clients.
        </dd>
    </dl>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                      mod/mod_proxy_scgi.html                                                                             100644       0       0        21726 11256641270  12733  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_proxy_scgi - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_proxy_scgi</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>SCGI gateway module for <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>proxy_scgi_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_proxy_scgi.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.3 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the
    <a href="http://python.ca/scgi/protocol.txt">SCGI protocol, version
    1</a>.</p>

    <p>Thus, in order to get the ability of handling the SCGI protocol,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_scgi.html">mod_proxy_scgi</a></code> have to
    be present in the server.</p>

    <div class="warning"><h3>Warning</h3>
      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#proxyscgiinternalredirect">ProxySCGIInternalRedirect</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyscgisendfile">ProxySCGISendfile</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Examples</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Examples</a></h2>
    <p>Remember, in order to make the following examples work, you have to
    enable <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_scgi.html">mod_proxy_scgi</a></code>.</p>

    <div class="example"><h3>Simple gateway</h3><p><code>
      ProxyPass /scgi-bin/ scgi://localhost:4000/
    </code></p></div>

    <p>The balanced gateway needs <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> in
    addition to the already mentioned proxy modules.</p>

    <div class="example"><h3>Balanced gateway</h3><p><code>
    ProxyPass /scgi-bin/ balancer://somecluster/<br />
    &lt;Proxy balancer://somecluster/&gt;<br />
    <span class="indent">
        BalancerMember scgi://localhost:4000/<br />
        BalancerMember scgi://localhost:4001/<br />
    </span>
    &lt;/Proxy&gt;
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxySCGIInternalRedirect" id="ProxySCGIInternalRedirect">ProxySCGIInternalRedirect</a> <a name="proxyscgiinternalredirect" id="proxyscgiinternalredirect">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable or disable internal redirect responses from the
backend</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxySCGIInternalRedirect On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxySCGIInternalRedirect On</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_scgi</td></tr>
</table>
    <p>The <code class="directive">ProxySCGIInternalRedirect</code> enables the backend
    to internally redirect the gateway to a different URL. This feature
    origins in <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, which internally redirects the
    response, if the response status is <code>OK</code> (<code>200</code>) and
    the response contains a <code>Location</code> header and its value starts
    with a slash (<code>/</code>). This value is interpreted as a new local
    URL the apache internally redirects to.</p>

    <p><code class="module"><a href="../mod/mod_proxy_scgi.html">mod_proxy_scgi</a></code> does the same as
    <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> in this regard, except that you can turn off the
    feature.</p>

    <div class="example"><h3>Example</h3><p><code>
    ProxySCGIInternalRedirect Off
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ProxySCGISendfile" id="ProxySCGISendfile">ProxySCGISendfile</a> <a name="proxyscgisendfile" id="proxyscgisendfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable evaluation of <var>X-Sendfile</var> pseudo response
header</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxySCGISendfile On|Off|<var>Headername</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxySCGISendfile Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_scgi</td></tr>
</table>
    <p>The <code class="directive">ProxySCGISendfile</code> directive enables the
    SCGI backend to let files serve directly by the gateway. This is useful
    performance purposes -- the httpd can use <code>sendfile</code> or other
    optimizations, which are not possible if the file comes over the backend
    socket.</p>
    <p>The <code class="directive">ProxySCGISendfile</code> argument determines the
    gateway behaviour:</p>
    <dl>
    <dt><code>Off</code></dt>
    <dd>No special handling takes place.</dd>

    <dt><code>On</code></dt>
    <dd>The gateway looks for a backend response header called
    <code>X-Sendfile</code> and interprets the value as filename to serve. The
    header is removed from the final response headers. This is equivalent to
    <code>ProxySCGIRequest X-Sendfile</code>.</dd>

    <dt>anything else</dt>
    <dd>Similar to <code>On</code>, but instead of the hardcoded header name
    the argument is applied as header name.</dd>
    </dl>

    <div class="example"><h3>Example</h3><p><code>
    # Use the default header (X-Sendfile)<br />
    ProxySCGISendfile On<br />
    <br />
    # Use a different header<br />
    ProxySCGISendfile X-Send-Static
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                          mod/mod_rewrite.html                                                                                100644       0       0       233473 11256641270  12252  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_rewrite - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_rewrite</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides a rule-based rewriting engine to rewrite requested
URLs on the fly</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>rewrite_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_rewrite.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 1.3 and later</td></tr></table>
<h3>Summary</h3>

      <p>This module uses a rule-based rewriting engine (based on a
      regular-expression parser) to rewrite requested URLs on the
      fly. It supports an unlimited number of rules and an
      unlimited number of attached rule conditions for each rule, to
      provide a really flexible and powerful URL manipulation
      mechanism. The URL manipulations can depend on various tests,
      of server variables, environment variables, HTTP
      headers, or time stamps. Even external database lookups in
      various formats can be used to achieve highly granular URL
      matching.</p>

      <p>This module operates on the full URLs (including the
      path-info part) both in per-server context
      (<code>httpd.conf</code>) and per-directory context
      (<code>.htaccess</code>) and can generate query-string
      parts on result. The rewritten result can lead to internal
      sub-processing, external request redirection or even to an
      internal proxy throughput.</p>

      <p>Further details, discussion, and examples, are provided in the
      <a href="../rewrite/index.html">detailed mod_rewrite documentation</a>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriteengine">RewriteEngine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritelock">RewriteLock</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritelog">RewriteLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriteloglevel">RewriteLogLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritemap">RewriteMap</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#quoting">Quoting Special Characters</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#EnvVar">Environment Variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#vhosts">Rewriting in Virtual Hosts</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Solutions">Practical Solutions</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="#rewriteflags">Rewrite Flags</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="quoting" id="quoting">Quoting Special Characters</a></h2>

      <p>As of Apache 1.3.20, special characters in
      <em>TestString</em> and <em>Substitution</em> strings can be
      escaped (that is, treated as normal characters without their
      usual special meaning) by prefixing them with a slash ('\')
      character. In other words, you can include an actual
      dollar-sign character in a <em>Substitution</em> string by
      using '<code>\$</code>'; this keeps mod_rewrite from trying
      to treat it as a backreference.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="EnvVar" id="EnvVar">Environment Variables</a></h2>

      <p>This module keeps track of two additional (non-standard)
      CGI/SSI environment variables named <code>SCRIPT_URL</code>
      and <code>SCRIPT_URI</code>. These contain the
      <em>logical</em> Web-view to the current resource, while the
      standard CGI/SSI variables <code>SCRIPT_NAME</code> and
      <code>SCRIPT_FILENAME</code> contain the <em>physical</em>
      System-view. </p>

      <p>Notice: These variables hold the URI/URL <em>as they were
      initially requested</em>, that is, <em>before</em> any
      rewriting. This is important to note because the rewriting process is
      primarily used to rewrite logical URLs to physical
      pathnames.</p>

<div class="example"><h3>Example</h3><pre>
SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
SCRIPT_FILENAME=/u/rse/.www/index.html
SCRIPT_URL=/u/rse/
SCRIPT_URI=http://en1.engelschall.com/u/rse/
</pre></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="vhosts" id="vhosts">Rewriting in Virtual Hosts</a></h2>

     <p>By default, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> configuration
     settings from the main server context are not inherited by
     virtual hosts. To make the main server settings apply to virtual
     hosts, you must place the following directives in each <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> section:</p>

     <div class="example"><p><code>
     RewriteEngine On<br />
     RewriteOptions Inherit
     </code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Solutions" id="Solutions">Practical Solutions</a></h2>

    <p>For numerous examples of common, and not-so-common, uses for
    mod_rewrite, see the <a href="../rewrite/rewrite_guide.html">Rewrite
    Guide</a>, and the <a href="../rewrite/rewrite_guide_advanced.html">Advanced Rewrite
    Guide</a> documents.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the base URL for per-directory rewrites</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteBase <em>URL-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>See usage for information.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>The <code class="directive">RewriteBase</code> directive explicitly
      sets the base URL for per-directory rewrites. As you will see
      below, <code class="directive"><a href="#rewriterule">RewriteRule</a></code>
      can be used in per-directory config files
      (<code>.htaccess</code>). In such a case, it will act locally,
      stripping the local directory prefix before processing, and applying
      rewrite rules only to the remainder. When processing is complete, the 
      prefix is automatically added back to the
      path. The default setting is; <code class="directive">RewriteBase</code> <em>physical-directory-path</em></p>

      <p>When a substitution occurs for a new URL, this module has
      to re-inject the URL into the server processing. To be able
      to do this it needs to know what the corresponding URL-prefix
      or URL-base is. By default this prefix is the corresponding
      filepath itself. <strong>However, for most websites, URLs are NOT
      directly related to physical filename paths, so this
      assumption will often be wrong!</strong> Therefore, you can 
      use the <code>RewriteBase</code> directive to specify the
      correct URL-prefix.</p>

<div class="note"> If your webserver's URLs are <strong>not</strong> directly
related to physical file paths, you will need to use
<code class="directive">RewriteBase</code> in every <code>.htaccess</code>
file where you want to use <code class="directive"><a href="#rewriterule">RewriteRule</a></code> directives.
</div>

        <p> For example, assume the following per-directory config file:</p>

<div class="example"><pre>
#
#  /abc/def/.htaccess -- per-dir config file for directory /abc/def
#  Remember: /abc/def is the physical path of /xyz, <em>i.e.</em>, the server
#            has a 'Alias /xyz /abc/def' directive <em>e.g.</em>
#

RewriteEngine On

#  let the server know that we were reached via /xyz and not
#  via the physical path prefix /abc/def
RewriteBase   /xyz

#  now the rewriting rules
RewriteRule   ^oldstuff\.html$  newstuff.html
</pre></div>

        <p>In the above example, a request to
        <code>/xyz/oldstuff.html</code> gets correctly rewritten to
        the physical file <code>/abc/def/newstuff.html</code>.</p>

<div class="note"><h3>For Apache Hackers</h3>
<p>The following list gives detailed information about
              the internal processing steps:</p>
<pre>
Request:
  /xyz/oldstuff.html

Internal Processing:
  /xyz/oldstuff.html     -&gt; /abc/def/oldstuff.html  (per-server Alias)
  /abc/def/oldstuff.html -&gt; /abc/def/newstuff.html  (per-dir    RewriteRule)
  /abc/def/newstuff.html -&gt; /xyz/newstuff.html      (per-dir    RewriteBase)
  /xyz/newstuff.html     -&gt; /abc/def/newstuff.html  (per-server Alias)

Result:
  /abc/def/newstuff.html
</pre>
              <p>This seems very complicated, but is in fact
              correct Apache internal processing. Because the
              per-directory rewriting comes late in the
              process, the rewritten request
              has to be re-injected into the Apache kernel, as if it
              were a new request. (See <a href="../rewrite/rewrite_tech.html">mod_rewrite technical
              details</a>.)
              This is not the serious overhead it may seem to be - 
              this re-injection is completely internal to the 
	      Apache server (and the same procedure is used by 
	      many other operations within Apache).</p> 
</div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteCond" id="RewriteCond">RewriteCond</a> <a name="rewritecond" id="rewritecond">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Defines a condition under which rewriting will take place
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> RewriteCond
      <em>TestString</em> <em>CondPattern</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>The <code class="directive">RewriteCond</code> directive defines a
      rule condition. One or more <code class="directive">RewriteCond</code>
      can precede a <code class="directive"><a href="#rewriterule">RewriteRule</a></code> 
      directive. The following rule is then only used if both
      the current state of the URI matches its pattern, <strong>and</strong> if these conditions are met.</p>

      <p><em>TestString</em> is a string which can contain the
      following expanded constructs in addition to plain text:</p>

      <ul>
        <li>
          <strong>RewriteRule backreferences</strong>: These are
          backreferences of the form <strong><code>$N</code></strong>
          (0 &lt;= N &lt;= 9), which provide access to the grouped
          parts (in parentheses) of the pattern, from the
          <code>RewriteRule</code> which is subject to the current 
	  set of <code>RewriteCond</code> conditions..
        </li>
        <li>
          <strong>RewriteCond backreferences</strong>: These are
          backreferences of the form <strong><code>%N</code></strong>
          (1 &lt;= N &lt;= 9), which provide access to the grouped
          parts (again, in parentheses) of the pattern, from the last matched
          <code>RewriteCond</code> in the current set
          of conditions.
        </li>
        <li>
          <strong>RewriteMap expansions</strong>: These are
          expansions of the form <strong><code>${mapname:key|default}</code></strong>.
          See <a href="#mapfunc">the documentation for
          RewriteMap</a> for more details.
        </li>
        <li>
          <strong>Server-Variables</strong>: These are variables of
          the form 
            <strong><code>%{</code> <em>NAME_OF_VARIABLE</em>
            <code>}</code></strong>
          where <em>NAME_OF_VARIABLE</em> can be a string taken
          from the following list: 

          <table>
          
            <tr>
              <th>HTTP headers:</th> <th>connection &amp; request:</th> <th />
	    </tr>

            <tr>
	      <td>
		 HTTP_USER_AGENT<br />
                 HTTP_REFERER<br />
                 HTTP_COOKIE<br />
                 HTTP_FORWARDED<br />
                 HTTP_HOST<br />
                 HTTP_PROXY_CONNECTION<br />
                 HTTP_ACCEPT<br />
              </td>

              <td>
                 REMOTE_ADDR<br />
                 REMOTE_HOST<br />
                 REMOTE_PORT<br />
                 REMOTE_USER<br />
                 REMOTE_IDENT<br />
                 REQUEST_METHOD<br />
                 SCRIPT_FILENAME<br />
                 PATH_INFO<br />
                 QUERY_STRING<br />
                 AUTH_TYPE<br />
              </td>
	      
	      <td />
            </tr>

            <tr>
              <th>server internals:</th> <th>date and time:</th> <th>specials:</th>
	    </tr>

            <tr>
	      <td>
	         DOCUMENT_ROOT<br />
                 SERVER_ADMIN<br />
                 SERVER_NAME<br />
                 SERVER_ADDR<br />
                 SERVER_PORT<br />
                 SERVER_PROTOCOL<br />
                 SERVER_SOFTWARE<br />
              </td>

              <td>
                 TIME_YEAR<br />
                 TIME_MON<br />
                 TIME_DAY<br />
                 TIME_HOUR<br />
                 TIME_MIN<br />
                 TIME_SEC<br />
                 TIME_WDAY<br />
                 TIME<br />
              </td>

              <td>
                 API_VERSION<br />
                 THE_REQUEST<br />
                 REQUEST_URI<br />
                 REQUEST_FILENAME<br />
                 IS_SUBREQ<br />
                 HTTPS<br />
              </td>
            </tr>
          </table>

                <p>These variables all
                correspond to the similarly named HTTP
                MIME-headers, C variables of the Apache server or
                <code>struct tm</code> fields of the Unix system.
                Most are documented elsewhere in the Manual or in
                the CGI specification. Those that are special to
                mod_rewrite include those below.</p>
	<div class="note">
                <dl>
                  <dt><code>IS_SUBREQ</code></dt>

                  <dd>Will contain the text "true" if the request
                  currently being processed is a sub-request,
                  "false" otherwise. Sub-requests may be generated
                  by modules that need to resolve additional files
                  or URIs in order to complete their tasks.</dd>

                  <dt><code>API_VERSION</code></dt>

                  <dd>This is the version of the Apache module API
                  (the internal interface between server and
                  module) in the current httpd build, as defined in
                  include/ap_mmn.h. The module API version
                  corresponds to the version of Apache in use (in
                  the release version of Apache 1.3.14, for
                  instance, it is 19990320:10), but is mainly of
                  interest to module authors.</dd>

                  <dt><code>THE_REQUEST</code></dt>

                  <dd>The full HTTP request line sent by the
                  browser to the server (e.g., "<code>GET
                  /index.html HTTP/1.1</code>"). This does not
                  include any additional headers sent by the
                  browser.</dd>

                  <dt><code>REQUEST_URI</code></dt>

                  <dd>The resource requested in the HTTP request
                  line. (In the example above, this would be
                  "/index.html".)</dd>

                  <dt><code>REQUEST_FILENAME</code></dt>

                  <dd>The full local filesystem path to the file or
                  script matching the request.</dd>

                  <dt><code>HTTPS</code></dt>

                  <dd>Will contain the text "on" if the connection is
                  using SSL/TLS, or "off" otherwise.  (This variable
                  can be safely used regardless of whether or not
                  <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is loaded).</dd>

                </dl>
</div>
        </li>
      </ul>

      <p>Other things you should be aware of:</p>

      <ol>
        <li>The variables SCRIPT_FILENAME and REQUEST_FILENAME
        contain the same value - the value of the
        <code>filename</code> field of the internal
        <code>request_rec</code> structure of the Apache server.
        The first name is the commonly known CGI variable name
        while the second is the appropriate counterpart of
        REQUEST_URI (which contains the value of the
        <code>uri</code> field of <code>request_rec</code>).</li>

        <li>
        <code>%{ENV:variable}</code>, where <em>variable</em> can be
	any environment variable, is also available. 
	This is looked-up via internal
        Apache structures and (if not found there) via
        <code>getenv()</code> from the Apache server process.</li>

        <li>
        <code>%{SSL:variable}</code>, where <em>variable</em> is the
        name of an <a href="mod_ssl.html#envvars">SSL environment
        variable</a>, can be used whether or not
        <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is loaded, but will always expand to
        the empty string if it is not.  Example:
        <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> may expand to
        <code>128</code>.</li>

        <li>
        <code>%{HTTP:header}</code>, where <em>header</em> can be
	any HTTP MIME-header name, can always be used to obtain the
	value of a header sent in the HTTP request.
        Example: <code>%{HTTP:Proxy-Connection}</code> is
        the value of the HTTP header
        ``<code>Proxy-Connection:</code>''.
        <p>If a HTTP header is used in a condition this header is added to
        the Vary header of the response in case the condition evaluates to
        to true for the request. It is <strong>not</strong> added if the
        condition evaluates to false for the request. Adding the HTTP header
        to the Vary header of the response is needed for proper caching.</p>
        <p>It has to be kept in mind that conditions follow a short circuit
        logic in the case of the '<strong><code>ornext|OR</code></strong>' flag
        so that certain conditions might not be evaluated at all.</p></li>

        <li>
        <code>%{LA-U:variable}</code> can be used for look-aheads which perform
        an internal (URL-based) sub-request to determine the final
	value of <em>variable</em>. This can be used to access
        variable for rewriting which is not available at the current 
	stage, but will be set in a later phase.
	<p>For instance, to rewrite according to the
        <code>REMOTE_USER</code> variable from within the
        per-server context (<code>httpd.conf</code> file) you must
        use <code>%{LA-U:REMOTE_USER}</code> - this
        variable is set by the authorization phases, which come
	<em>after</em> the URL translation phase (during which mod_rewrite
	operates).</p>
	<p>On the other hand, because mod_rewrite implements
        its per-directory context (<code>.htaccess</code> file) via
        the Fixup phase of the API and because the authorization
        phases come <em>before</em> this phase, you just can use
	<code>%{REMOTE_USER}</code> in that context.</p></li>

        <li>
        <code>%{LA-F:variable}</code> can be used to perform an internal
        (filename-based) sub-request, to determine the final value
        of <em>variable</em>. Most of the time, this is the same as
        LA-U above.</li>
      </ol>

      <p><em>CondPattern</em> is the condition pattern,
       a regular expression which is applied to the
      current instance of the <em>TestString</em>.
      <em>TestString</em> is first evaluated, before being matched against
      <em>CondPattern</em>.</p>

      <p><strong>Remember:</strong> <em>CondPattern</em> is a
      <em>perl compatible regular expression</em> with some
      additions:</p>

      <ol>
        <li>You can prefix the pattern string with a
        '<code>!</code>' character (exclamation mark) to specify a
        <strong>non</strong>-matching pattern.</li>

        <li>
          There are some special variants of <em>CondPatterns</em>.
          Instead of real regular expression strings you can also
          use one of the following: 

          <ul>
            <li>'<strong>&lt;CondPattern</strong>' (lexicographically 
	    precedes)<br />
            Treats the <em>CondPattern</em> as a plain string and
            compares it lexicographically to <em>TestString</em>. True if
            <em>TestString</em> lexicographically precedes
            <em>CondPattern</em>.</li>

            <li>'<strong>&gt;CondPattern</strong>' (lexicographically
            follows)<br />
            Treats the <em>CondPattern</em> as a plain string and
            compares it lexicographically to <em>TestString</em>. True if
            <em>TestString</em> lexicographically follows
            <em>CondPattern</em>.</li>

            <li>'<strong>=CondPattern</strong>' (lexicographically
            equal)<br />
            Treats the <em>CondPattern</em> as a plain string and
            compares it lexicographically to <em>TestString</em>. True if
            <em>TestString</em> is lexicographically equal to
            <em>CondPattern</em> (the two strings are exactly
            equal, character for character). If <em>CondPattern</em>
            is <code>""</code> (two quotation marks) this
            compares <em>TestString</em> to the empty string.</li>

            <li>'<strong>-d</strong>' (is
            <strong>d</strong>irectory)<br />
             Treats the <em>TestString</em> as a pathname and tests
            whether or not it exists, and is a directory.</li>

            <li>'<strong>-f</strong>' (is regular
            <strong>f</strong>ile)<br />
             Treats the <em>TestString</em> as a pathname and tests
            whether or not it exists, and is a regular file.</li>

            <li>'<strong>-s</strong>' (is regular file, with
            <strong>s</strong>ize)<br />
            Treats the <em>TestString</em> as a pathname and tests
            whether or not it exists, and is a regular file with size greater
            than zero.</li>

            <li>'<strong>-l</strong>' (is symbolic
            <strong>l</strong>ink)<br />
            Treats the <em>TestString</em> as a pathname and tests
            whether or not it exists, and is a symbolic link.</li>

            <li>'<strong>-x</strong>' (has e<strong>x</strong>ecutable
            permissions)<br />
            Treats the <em>TestString</em> as a pathname and tests
	    whether or not it exists, and has executable permissions. 
	    These permissions are determined according to 
	    the underlying OS.</li>

            <li>'<strong>-F</strong>' (is existing file, via
            subrequest)<br />
            Checks whether or not <em>TestString</em> is a valid file,
            accessible via all the server's currently-configured
            access controls for that path. This uses an internal
            subrequest to do the check, so use it with care -
            it can impact your server's performance!</li>

            <li>'<strong>-U</strong>' (is existing URL, via
            subrequest)<br />
            Checks whether or not <em>TestString</em> is a valid URL,
            accessible via all the server's currently-configured
            access controls for that path. This uses an internal
            subrequest to do the check, so use it with care - 
            it can impact your server's performance!</li>
          </ul>

<div class="note"><h3>Note:</h3>
              All of these tests can
              also be prefixed by an exclamation mark ('!') to
              negate their meaning.
</div>
        </li>

	<li>You can also set special flags for
      <em>CondPattern</em> by appending
        <strong><code>[</code><em>flags</em><code>]</code></strong>
      as the third argument to the <code>RewriteCond</code>
      directive, where <em>flags</em> is a comma-separated list of any of the
      following flags:

      <ul>
        <li>'<strong><code>nocase|NC</code></strong>'
        (<strong>n</strong>o <strong>c</strong>ase)<br />
        This makes the test case-insensitive - differences 
	between 'A-Z' and 'a-z' are ignored, both in the
        expanded <em>TestString</em> and the <em>CondPattern</em>.
        This flag is effective only for comparisons between
        <em>TestString</em> and <em>CondPattern</em>. It has no
        effect on filesystem and subrequest checks.</li>

        <li>
          '<strong><code>ornext|OR</code></strong>'
          (<strong>or</strong> next condition)<br />
          Use this to combine rule conditions with a local OR
          instead of the implicit AND. Typical example: 

<div class="example"><pre>
RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
RewriteCond %{REMOTE_HOST}  ^host3.*
RewriteRule ...some special stuff for any of these hosts...
</pre></div>

          Without this flag you would have to write the condition/rule
          pair three times.
        </li>

        <li>'<strong><code>novary|NV</code></strong>'
        (<strong>n</strong>o <strong>v</strong>ary)<br />
        If a HTTP header is used in the condition, this flag prevents
        this header from being added to the Vary header of the response. <br />
        Using this flag might break proper caching of the response if
        the representation of this response varies on the value of this header.
        So this flag should be only used if the meaning of the Vary header
        is well understood.
        </li>
      </ul>
      </li>
     </ol>

      <p><strong>Example:</strong></p>

       <p>To rewrite the Homepage of a site according to the
        ``<code>User-Agent:</code>'' header of the request, you can
        use the following: </p>

<div class="example"><pre>
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
RewriteRule  ^/$                 /homepage.max.html  [L]

RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  ^/$                 /homepage.min.html  [L]

RewriteRule  ^/$                 /homepage.std.html  [L]
</pre></div>

        <p>Explanation: If you use a browser which identifies itself 
	as 'Mozilla' (including Netscape Navigator, Mozilla etc), then you
        get the max homepage (which could include frames, or other special
	features).
        If you use the Lynx browser (which is terminal-based), then
	you get the min homepage (which could be a version designed for 
	easy, text-only browsing).
	If neither of these conditions apply (you use any other browser,
	or your browser identifies itself as something non-standard), you get
        the std (standard) homepage.</p>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables or disables runtime rewriting engine</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteEngine on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>RewriteEngine off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>       

      <p>The <code class="directive">RewriteEngine</code> directive enables or
      disables the runtime rewriting engine. If it is set to
      <code>off</code> this module does no runtime processing at
      all. It does not even update the <code>SCRIPT_URx</code>
      environment variables.</p>

      <p>Use this directive to disable the module instead of
      commenting out all the <code class="directive"><a href="#rewriterule">RewriteRule</a></code> directives!</p>

      <p>Note that rewrite configurations are not
      inherited by virtual hosts. This means that you need to have a
      <code>RewriteEngine on</code> directive for each virtual host
      in which you wish to use rewrite rules.</p>

      <p><code class="directive">RewriteMap</code> directives of the type <code>prg</code>
      are not started during server initialization if they're defined in a
      context that does not have <code class="directive">RewriteEngine</code>  set to
      <code>on</code></p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteLock" id="RewriteLock">RewriteLock</a> <a name="rewritelock" id="rewritelock">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of the lock file used for <code class="directive"><a href="#rewritemap">RewriteMap</a></code>
synchronization</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLock <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>This directive sets the filename for a synchronization
      lockfile which mod_rewrite needs to communicate with <code class="directive"><a href="#rewritemap">RewriteMap</a></code>
      <em>programs</em>. Set this lockfile to a local path (not on a
      NFS-mounted device) when you want to use a rewriting
      map-program. It is not required for other types of rewriting
      maps.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteLog" id="RewriteLog">RewriteLog</a> <a name="rewritelog" id="rewritelog">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of the file used for logging rewrite engine
processing</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLog <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>The <code class="directive">RewriteLog</code> directive sets the name
      of the file to which the server logs any rewriting actions it
      performs. If the name does not begin with a slash
      ('<code>/</code>') then it is assumed to be relative to the
      <em>Server Root</em>. The directive should occur only once per
      server config.</p>

<div class="note">    To disable the logging of
          rewriting actions it is not recommended to set
          <em>Filename</em> to <code>/dev/null</code>, because
          although the rewriting engine does not then output to a
          logfile it still creates the logfile output internally.
          <strong>This will slow down the server with no advantage
          to the administrator!</strong> To disable logging either
          remove or comment out the <code class="directive">RewriteLog</code>
          directive or use <code>RewriteLogLevel 0</code>!
</div>

<div class="note"><h3>Security</h3>

See the <a href="../misc/security_tips.html">Apache Security Tips</a>
document for details on how your security could be compromised if the
directory where logfiles are stored is writable by anyone other than
the user that starts the server.
</div>

<div class="example"><h3>Example</h3><p><code>
RewriteLog "/usr/local/var/apache/logs/rewrite.log"
</code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteLogLevel" id="RewriteLogLevel">RewriteLogLevel</a> <a name="rewriteloglevel" id="rewriteloglevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the verbosity of the log file used by the rewrite
engine</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLogLevel <em>Level</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>RewriteLogLevel 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>The <code class="directive">RewriteLogLevel</code> directive sets the
      verbosity level of the rewriting logfile. The default level 0
      means no logging, while 9 or more means that practically all
      actions are logged.</p>

      <p>To disable the logging of rewriting actions simply set
      <em>Level</em> to 0. This disables all rewrite action
      logs.</p>

<div class="note"> Using a high value for
          <em>Level</em> will slow down your Apache server
          dramatically! Use the rewriting logfile at a
          <em>Level</em> greater than 2 only for debugging!
</div>

<div class="example"><h3>Example</h3><p><code>
RewriteLogLevel 3
</code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Defines a mapping function for key-lookup</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em>
</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The choice of different dbm types is available in
Apache 2.0.41 and later</td></tr>
</table>
      <p>The <code class="directive">RewriteMap</code> directive defines a
      <em>Rewriting Map</em> which can be used inside rule
      substitution strings by the mapping-functions to
      insert/substitute fields through a key lookup. The source of
      this lookup can be of various types.</p>

      <p>The <a id="mapfunc" name="mapfunc"><em>MapName</em></a> is
      the name of the map and will be used to specify a
      mapping-function for the substitution strings of a rewriting
      rule via one of the following constructs:</p>

      <p class="indent">
        <strong><code>${</code> <em>MapName</em> <code>:</code>
        <em>LookupKey</em> <code>}</code><br />
         <code>${</code> <em>MapName</em> <code>:</code>
        <em>LookupKey</em> <code>|</code> <em>DefaultValue</em>
        <code>}</code></strong>
      </p>

      <p>When such a construct occurs, the map <em>MapName</em> is
      consulted and the key <em>LookupKey</em> is looked-up. If the
      key is found, the map-function construct is substituted by
      <em>SubstValue</em>. If the key is not found then it is
      substituted by <em>DefaultValue</em> or by the empty string
      if no <em>DefaultValue</em> was specified.</p>

      <p>For example, you might define a
      <code class="directive">RewriteMap</code> as:</p>

      <div class="example"><p><code>
      RewriteMap examplemap txt:/path/to/file/map.txt
      </code></p></div>

      <p>You would then be able to use this map in a
      <code class="directive">RewriteRule</code> as follows:</p>

      <div class="example"><p><code>
      RewriteRule ^/ex/(.*) ${examplemap:$1}
      </code></p></div>

      <p>The following combinations for <em>MapType</em> and
      <em>MapSource</em> can be used:</p>

      <ul>
        <li>
          <strong>Standard Plain Text</strong><br />
           MapType: <code>txt</code>, MapSource: Unix filesystem
          path to valid regular file 

          <p>This is the standard rewriting map feature where the
          <em>MapSource</em> is a plain ASCII file containing
          either blank lines, comment lines (starting with a '#'
          character) or pairs like the following - one per
          line.</p>

          <p class="indent">
            <strong><em>MatchingKey</em>
            <em>SubstValue</em></strong>
          </p>

<div class="example"><h3>Example</h3><pre>
##
##  map.txt -- rewriting map
##

Ralf.S.Engelschall    rse   # Bastard Operator From Hell
Mr.Joe.Average        joe   # Mr. Average
</pre></div>

<div class="example"><p><code>
RewriteMap real-to-user txt:/path/to/file/map.txt
</code></p></div>
        </li>

        <li>
          <strong>Randomized Plain Text</strong><br />
           MapType: <code>rnd</code>, MapSource: Unix filesystem
          path to valid regular file 

          <p>This is identical to the Standard Plain Text variant
          above but with a special post-processing feature: After
          looking up a value it is parsed according to contained
          ``<code>|</code>'' characters which have the meaning of
          ``or''. In other words they indicate a set of
          alternatives from which the actual returned value is
          chosen randomly. For example, you might use the following map
          file and directives to provide a random load balancing between
          several back-end server, via a reverse-proxy. Images are sent
          to one of the servers in the 'static' pool, while everything
          else is sent to one of the 'dynamic' pool.</p>
          <p>Example:</p>

<div class="example"><h3>Rewrite map file</h3><pre>
##
##  map.txt -- rewriting map
##

static   www1|www2|www3|www4
dynamic  www5|www6
</pre></div>

<div class="example"><h3>Configuration directives</h3><p><code>
RewriteMap servers rnd:/path/to/file/map.txt<br />
<br />
RewriteRule ^/(.*\.(png|gif|jpg)) http://${servers:static}/$1
[NC,P,L]<br />
RewriteRule ^/(.*) http://${servers:dynamic}/$1 [P,L]
</code></p></div>
        </li>

        <li>
          <strong>Hash File</strong><br /> MapType:
          <code>dbm[=<em>type</em>]</code>, MapSource: Unix filesystem
          path to valid regular file

          <p>Here the source is a binary format DBM file containing
          the same contents as a <em>Plain Text</em> format file, but
          in a special representation which is optimized for really
          fast lookups. The <em>type</em> can be sdbm, gdbm, ndbm, or
          db depending on <a href="../install.html#dbm">compile-time
          settings</a>.  If the <em>type</em> is omitted, the
          compile-time default will be chosen.</p>

          <p>To create a dbm file from a source text file, use the <a href="../programs/httxt2dbm.html">httxt2dbm</a> utility.</p>

<div class="example"><p><code>
$ httxt2dbm -i mapfile.txt -o mapfile.map
</code></p></div>
        </li>

        <li>
          <strong>Internal Function</strong><br />
           MapType: <code>int</code>, MapSource: Internal Apache
          function 

          <p>Here, the source is an internal Apache function.
          Currently you cannot create your own, but the following
          functions already exist:</p>

          <ul>
            <li><strong>toupper</strong>:<br />
             Converts the key to all upper case.</li>

            <li><strong>tolower</strong>:<br />
             Converts the key to all lower case.</li>

            <li><strong>escape</strong>:<br />
             Translates special characters in the key to
            hex-encodings.</li>

            <li><strong>unescape</strong>:<br />
             Translates hex-encodings in the key back to
            special characters.</li>
          </ul>
        </li>

        <li>
          <strong>External Rewriting Program</strong><br />
           MapType: <code>prg</code>, MapSource: Unix filesystem
          path to valid regular file 

          <p>Here the source is a program, not a map file. To
          create it you can use a language of your choice, but
          the result has to be an executable program (either
          object-code or a script with the magic cookie trick
          '<code>#!/path/to/interpreter</code>' as the first
          line).</p>

         <p>This program is started once, when the Apache server
          is started, and then communicates with the rewriting engine
          via its <code>stdin</code> and <code>stdout</code>
          file-handles. For each map-function lookup it will
          receive the key to lookup as a newline-terminated string
          on <code>stdin</code>. It then has to give back the
          looked-up value as a newline-terminated string on
          <code>stdout</code> or the four-character string
          ``<code>NULL</code>'' if it fails (<em>i.e.</em>, there
          is no corresponding value for the given key). A trivial
          program which will implement a 1:1 map (<em>i.e.</em>,
          key == value) could be:</p>

          <p>External rewriting programs are not started if they're defined in a
          context that does not have <code class="directive">RewriteEngine</code> set to
          <code>on</code></p>.

<div class="example"><pre>
#!/usr/bin/perl
$| = 1;
while (&lt;STDIN&gt;) {
    # ...put here any transformations or lookups...
    print $_;
}
</pre></div>

          <p>But be very careful:</p>

          <ol>
            <li>``<em>Keep it simple, stupid</em>'' (KISS).
	    If this program hangs, it will cause Apache to hang 
	    when trying to use the relevant rewrite rule.</li>

            <li>A common mistake is to use buffered I/O on
            <code>stdout</code>. Avoid this, as it will cause a deadloop!
            ``<code>$|=1</code>'' is used above, to prevent this.</li>

            <li>The <code class="directive"><a href="#rewritelock">RewriteLock</a></code> directive can 
	    be used to define a lockfile which mod_rewrite can use to synchronize 
            communication with the mapping program. By default no such
            synchronization takes place.</li>
          </ol>
        </li>
      </ul>
      <p>The <code class="directive">RewriteMap</code> directive can occur more than
      once. For each mapping-function use one
      <code class="directive">RewriteMap</code> directive to declare its rewriting
      mapfile. While you cannot <strong>declare</strong> a map in
      per-directory context it is of course possible to
      <strong>use</strong> this map in per-directory context. </p>

<div class="note"><h3>Note</h3> For plain text and DBM format files the
looked-up keys are cached in-core until the <code>mtime</code> of the
mapfile changes or the server does a restart. This way you can have
map-functions in rules which are used for <strong>every</strong>
request.  This is no problem, because the external lookup only happens
once!
</div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets some special options for the rewrite engine</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteOptions <var>Options</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td><code>MaxRedirects</code> is no longer available in version 2.1 and
later</td></tr>
</table>

      <p>The <code class="directive">RewriteOptions</code> directive sets some
      special options for the current per-server or per-directory
      configuration. The <em>Option</em> string can currently 
      only be one of the following:</p>

      <dl>
      <dt><code>inherit</code></dt>
      <dd>This forces the current configuration to inherit the
      configuration of the parent. In per-virtual-server context,
      this means that the maps, conditions and rules of the main
      server are inherited. In per-directory context this means
      that conditions and rules of the parent directory's
      <code>.htaccess</code> configuration are inherited.</dd>
      </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Defines rules for the rewriting engine</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteRule
      <em>Pattern</em> <em>Substitution</em> [<em>flags</em>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
</table>
      <p>The <code class="directive">RewriteRule</code> directive is the real
      rewriting workhorse. The directive can occur more than once, 
      with each instance defining a single rewrite rule. The
      order in which these rules are defined is important - this is the order
      in which they will be applied at run-time.</p>

      <p><a id="patterns" name="patterns"><em>Pattern</em></a> is
      a perl compatible <a id="regexp" name="regexp">regular
      expression</a>. On the first RewriteRule it is applied to the
      <a href="./directive-dict.html#Syntax">URL-path</a> of the request;
      subsequent patterns are applied to the output of the last matched
      RewriteRule.</p>

<div class="note"><h3>What is matched?</h3>
      <p>The <em>Pattern</em> will initially be matched against the part of the
      URL after the hostname and port, and before the query string. If you wish
      to match against the hostname, port, or query string, use a
      <code class="directive"><a href="#rewritecond">RewriteCond</a></code> with the
      <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, or
      <code>%{QUERY_STRING}</code> variables respectively.</p>
</div>

      <p>For some hints on <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular
      expressions</a>, see
      the <a href="../rewrite/rewrite_intro.html#regex">mod_rewrite
      Introduction</a>.</p>

      <p>In mod_rewrite, the NOT character	
       ('<code>!</code>') is also available as a possible pattern 
      prefix. This enables you to negate a pattern; to say, for instance:
      ``<em>if the current URL does <strong>NOT</strong> match this
      pattern</em>''. This can be used for exceptional cases, where
      it is easier to match the negative pattern, or as a last
      default rule.</p>

<div class="note"><h3>Note</h3>
When using the NOT character to negate a pattern, you cannot include 
grouped wildcard parts in that pattern. This is because, when the 
pattern does NOT match (ie, the negation matches), there are no 
contents for the groups. Thus, if negated patterns are used, you
cannot use <code>$N</code> in the substitution string!
</div>

      <p>The <a id="rhs" name="rhs"><em>Substitution</em></a> of a
      rewrite rule is the string that replaces the original URL-path that
      was matched by <em>Pattern</em>.  The <em>Substitution</em> may
      be a:</p>

      <dl>

        <dt>file-system path</dt>

        <dd>Designates the location on the file-system of the resource
        to be delivered to the client.</dd>

        <dt>URL-path</dt> 

        <dd>A <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>-relative path to the
        resource to be served. Note that <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
        tries to guess whether you have specified a file-system path
        or a URL-path by checking to see if the first segment of the
        path exists at the root of the file-system. For example, if
        you specify a <em>Substitution</em> string of
        <code>/www/file.html</code>, then this will be treated as a
        URL-path <em>unless</em> a directory named <code>www</code>
        exists at the root or your file-system, in which case it will
        be treated as a file-system path. If you wish other
        URL-mapping directives (such as <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>) to be applied to the
        resulting URL-path, use the <code>[PT]</code> flag as
        described below.</dd>

        <dt>Absolute URL</dt>

        <dd>If an absolute URL is specified,
        <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> checks to see whether the
        hostname matches the current host. If it does, the scheme and
        hostname are stripped out and the resulting path is treated as
        a URL-path. Otherwise, an external redirect is performed for
        the given URL. To force an external redirect back to the
        current host, see the <code>[R]</code> flag below.</dd>

        <dt><code>-</code> (dash)</dt>

        <dd>A dash indicates that no substitution should be performed
        (the existing path is passed through untouched). This is used
        when a flag (see below) needs to be applied without changing
        the path.</dd>

      </dl>

      <p>In addition to plain text, the <em>Substition</em> string can include</p>

      <ol>
        <li>back-references (<code>$N</code>) to the RewriteRule
        pattern</li>

        <li>back-references (<code>%N</code>) to the last matched
        RewriteCond pattern</li>

        <li>server-variables as in rule condition test-strings
        (<code>%{VARNAME}</code>)</li>

        <li><a href="#mapfunc">mapping-function</a> calls
        (<code>${mapname:key|default}</code>)</li>
      </ol>

      <p>Back-references are identifiers of the form 
	      <code>$</code><strong>N</strong>
      (<strong>N</strong>=0..9), which will be replaced
      by the contents of the <strong>N</strong>th group of the
      matched <em>Pattern</em>. The server-variables are the same
      as for the <em>TestString</em> of a <code>RewriteCond</code>
      directive. The mapping-functions come from the
      <code>RewriteMap</code> directive and are explained there.
      These three types of variables are expanded in the order above.</p>

      <p>As already mentioned, all rewrite rules are
      applied to the <em>Substitution</em> (in the order in which 
      they are defined
      in the config file). The URL is <strong>completely
      replaced</strong> by the <em>Substitution</em> and the
      rewriting process continues until all rules have been applied,
      or it is explicitly terminated by a
      <code><strong>L</strong></code> flag.</p>

     <div class="note"><h3>Modifying the Query String</h3>
      <p>By default, the query string is passed through unchanged. You
      can, however, create URLs in the substitution string containing
      a query string part. Simply use a question mark inside the
      substitution string to indicate that the following text should
      be re-injected into the query string. When you want to erase an
      existing query string, end the substitution string with just a
      question mark. To combine new and old query strings, use the
      <code>[QSA]</code> flag.</p> 
     </div>


      <p>Additionally you can set special <a name="rewriteflags" id="rewriteflags">actions</a> to be performed by 
      appending <strong><code>[</code><em>flags</em><code>]</code></strong>
      as the third argument to the <code>RewriteRule</code>
      directive. <em>Flags</em> is a comma-separated list, surround by square 
      brackets, of any of the following flags: </p>

      <dl>
        <dt>'<code>B</code>' (escape backreferences)</dt>
        <dd><p>Apache has to unescape URLs before mapping them,
        so backreferences will be unescaped at the time they are applied.
        Using the B flag, non-alphanumeric characters in backreferences
        will be escaped.  For example, consider the rule:</p>
        <pre><code> RewriteRule ^(.*)$ index.php?show=$1 </code></pre>
        <p>This will map <code>/C++</code> to <code>index.php?show=/C++</code>.
        But it will also map <code>/C%2b%2b</code> to
        <code>index.php?show=/C++</code>, because the <code>%2b</code>
        has been unescaped.  With the B flag, it will instead map to
        <code>index.php?show=/C%2b%2b</code>.</p>
        <p>This escaping is particularly necessary in a proxy situation,
        when the backend may break if presented with an unescaped URL.</p>
        </dd>

        <dt>'<code>chain|C</code>'
        (chained with next rule)</dt><dd>
         This flag chains the current rule with the next rule
        (which itself can be chained with the following rule,
        and so on). This has the following effect: if a rule
        matches, then processing continues as usual - 
        the flag has no effect. If the rule does
        <strong>not</strong> match, then all following chained
        rules are skipped. For instance, it can be used to remove the
        ``<code>.www</code>'' part, inside a per-directory rule set,
        when you let an external redirect happen (where the
        ``<code>.www</code>'' part should not occur!).</dd>

        <dt>'<code>cookie|CO=</code><em>NAME</em>:<em>VAL</em>:<em>domain</em>[:<em>lifetime</em>[:<em>path</em>[:<em>secure</em>[:<em>httponly</em>]]]]'
        (set cookie)</dt><dd>
        This sets a cookie in the client's browser.  The cookie's name
        is specified by <em>NAME</em> and the value is
        <em>VAL</em>. The <em>domain</em> field is the domain of the
        cookie, such as '.apache.org', the optional <em>lifetime</em>
        is the lifetime of the cookie in minutes, and the optional 
        <em>path</em> is the path of the cookie. If <em>secure</em>
        is set to 'secure', 'true' or '1', the cookie is only transmitted via secured
        connections. If <em>httponly</em> is set to 'HttpOnly', 'true' or '1', the
        <code>HttpOnly</code> flag is used, making the cookie not accessible
        to JavaScript code on browsers that support this feature.</dd>

        <dt>'<code>discardpathinfo|DPI'
        (discard PATH_INFO)</code></dt><dd>
        <p>In per-directory context, the URI each <code class="directive">RewriteRule</code>
        compares against is the concatenation of the current values of the URI 
        and PATH_INFO.</p>  

        <p>The current URI can be the initial URI as requested by the client, the
        result of a previous round of mod_rewrite processing, or the result of
        a prior rule in the current round of mod_rewrite processing.</p>

        <p>In contrast, the PATH_INFO that is appended to the URI before each 
        rule reflects only the value of PATH_INFO before this round of 
        mod_rewrite processing. As a consequence, if large portions
        of the URI are matched and copied into a substitution in multiple
        <code class="directive">RewriteRule</code> directives, without regard for
        which parts of the URI came from the current PATH_INFO, the final 
        URI may have multiple copies of PATH_INFO appended to it.</p>

        <p>Use this flag on any substitution where the PATH_INFO that resulted
        from the previous mapping of this request to the filesystem is not of 
        interest.  This flag permanently forgets the PATH_INFO established 
        before this round of mod_rewrite processing began. PATH_INFO will 
        not be recalculated until the current round of mod_rewrite processing
        completes.  Subsequent rules during this round of processing will see 
        only the direct result of substitutions, without any PATH_INFO 
        appended.</p></dd>

        <dt>
        '<code>env|E=</code><em>VAR</em>:<em>VAL</em>'
        (set environment variable)</dt><dd>
        This forces an environment variable named <em>VAR</em> to
        be set to the value <em>VAL</em>, where <em>VAL</em> can
        contain regexp backreferences (<code>$N</code> and
        <code>%N</code>) which will be expanded. You can use this
        flag more than once, to set more than one variable. The
        variables can later be dereferenced in many situations, most commonly
	from within XSSI (via <code>&lt;!--#echo
        var="VAR"--&gt;</code>) or CGI (<code>$ENV{'VAR'}</code>). 
	You can also dereference the variable in a later RewriteCond pattern, using
        <code>%{ENV:VAR}</code>. Use this to strip 
        information from URLs, while maintaining a record of that information.</dd>

        <dt>'<code>forbidden|F</code>' (force URL
        to be forbidden)</dt><dd>
        This forces the current URL to be forbidden - it immediately 
	sends back a HTTP response of 403 (FORBIDDEN). 
	Use this flag in conjunction with
        appropriate RewriteConds to conditionally block some
        URLs.</dd>

        <dt>'<code>gone|G</code>' (force URL to be
        gone)</dt><dd>
        This forces the current URL to be gone - it
        immediately sends back a HTTP response of 410 (GONE). Use
        this flag to mark pages which no longer exist as gone.</dd>

        <dt>
        '<code>handler|H</code>=<em>Content-handler</em>'
        (force Content handler)</dt><dd>
         Force the Content-handler of the target file to be
        <em>Content-handler</em>. For instance, this can be used to
        simulate the <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> directive
	<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>, 
	which internally forces all files
        inside the mapped directory to have a handler of
        ``<code>cgi-script</code>''.</dd>

        <dt>'<code>last|L</code>'
        (last rule)</dt><dd> Stop the rewriting process
        here and don't apply any more rewrite rules. This corresponds
        to the Perl <code>last</code> command or the
        <code>break</code> command in C. Use this flag to prevent the
        currently rewritten URL from being rewritten further by
        following rules. Remember, however, that if the
        <code class="directive">RewriteRule</code> generates an internal
        redirect (which frequently occurs when rewriting in a
        per-directory context), this will reinject the request and
        will cause processing to be repeated starting from the first
        <code class="directive">RewriteRule</code>.</dd>

        <dt>'<code>next|N</code>'
        (next round)</dt><dd>
        Re-run the rewriting process (starting again with the
        first rewriting rule). This time, the URL to match is no longer
        the original URL, but rather the URL returned by the last rewriting rule.
        This corresponds to the Perl <code>next</code> command or
        the <code>continue</code> command in C. Use
        this flag to restart the rewriting process -
        to immediately go to the top of the loop.
         <strong>Be careful not to create an infinite
        loop!</strong></dd>

        <dt>'<code>nocase|NC</code>'
        (no case)</dt><dd>
        This makes the <em>Pattern</em> case-insensitive,
        ignoring difference between 'A-Z' and
        'a-z' when <em>Pattern</em> is matched against the current
        URL.</dd>

        <dt>
          '<code>noescape|NE</code>'
          (no URI escaping of
          output)</dt><dd>
          This flag prevents mod_rewrite from applying the usual URI
          escaping rules to the result of a rewrite. Ordinarily,
          special characters (such as '%', '$', ';', and so on)
          will be escaped into their hexcode equivalents ('%25',
          '%24', and '%3B', respectively); this flag prevents this
          from happening. This allows percent symbols to appear in
          the output, as in 
<div class="example"><p><code>
    RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
</code></p></div>
          which would turn '<code>/foo/zed</code>' into a safe
          request for '<code>/bar?arg=P1=zed</code>'. 
        </dd>

        <dt>
          '<code>nosubreq|NS</code>'
          (not for internal
          sub-requests)</dt><dd>
          <p>This flag forces the rewriting engine to skip a
          rewriting rule if the current request is an internal
          sub-request. For instance, sub-requests occur internally
          in Apache when <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> tries to find out
          information about possible directory default files
          (<code>index.xxx</code> files). On sub-requests it is not
          always useful, and can even cause errors, if
          the complete set of rules are applied. Use this flag to
          exclude some rules.</p>
          <p>To decide whether or not to use this rule: if you
          prefix URLs with CGI-scripts, to force them to be
	  processed by the CGI-script, it's likely that you 
          will run into problems (or significant overhead) on
          sub-requests. In these cases, use this flag.</p>
        </dd>

        <dt>
          '<code>proxy|P</code>' (force
          proxy)</dt><dd>
          This flag forces the substitution part to be internally
	  sent as a proxy request and immediately (rewrite 
	  processing stops here) put through the <a href="mod_proxy.html">proxy module</a>. You must make
          sure that the substitution string is a valid URI
          (typically starting with
          <code>http://</code><em>hostname</em>) which can be
          handled by the Apache proxy module. If not, you will get an
          error from the proxy module. Use this flag to achieve a
          more powerful implementation of the <a href="mod_proxy.html#proxypass">ProxyPass</a> directive,
          to map remote content into the namespace of the local
          server. 

          <p>Note: <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> must be enabled in order
          to use this flag.</p>
        </dd>

        <dt>
          '<code>passthrough|PT</code>'
          (pass through to next
          handler)</dt><dd>
           This flag forces the rewrite engine to set the
          <code>uri</code> field of the internal
          <code>request_rec</code> structure to the value of the
          <code>filename</code> field. This flag is just a hack to
          enable post-processing of the output of
          <code>RewriteRule</code> directives, using
          <code>Alias</code>, <code>ScriptAlias</code>,
          <code>Redirect</code>, and other directives from
          various URI-to-filename translators. For example, to rewrite
          <code>/abc</code> to <code>/def</code> using
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, and then
          <code>/def</code> to <code>/ghi</code> using
          <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>: 
<div class="example"><p><code>
    RewriteRule ^/abc(.*)  /def$1 [PT]<br />
    Alias       /def       /ghi
</code></p></div>
          If you omit the <code>PT</code> flag,
          <code>mod_rewrite</code> will rewrite 
	  <code>uri=/abc/...</code> to
          <code>filename=/def/...</code> as a full API-compliant
          URI-to-filename translator should do. Then
          <code>mod_alias</code> will try to do a
          URI-to-filename transition, which will fail. 

          <p>Note: <strong>You must use this flag if you want to
          mix directives from different modules which allow
          URL-to-filename translators</strong>. The typical example
          is the use of <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> and
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>

          <p>The <code>PT</code> flag implies the <code>L</code> flag:
          rewriting will be stopped in order to pass the request to
          the next phase of processing.</p>
        </dd>

        <dt>'<code>qsappend|QSA</code>'
        (query string
        append)</dt><dd>
        This flag forces the rewrite engine to append a query
        string part of the substitution string to the existing string,
        instead of replacing it. Use this when you want to add more
        data to the query string via a rewrite rule.</dd>

        <dt>'<code>redirect|R</code>
          [=<em>code</em>]' (force <a id="redirect" name="redirect">redirect</a>)</dt><dd>
        <p>Prefix <em>Substitution</em> with
          <code>http://thishost[:thisport]/</code> (which makes the
          new URL a URI) to force a external redirection. If no
          <em>code</em> is given, a HTTP response of 302 (MOVED
          TEMPORARILY) will be returned. If you want to use other
          response codes, simply specify the appropriate number or use
          one of the following symbolic names: <code>temp</code>
          (default), <code>permanent</code>,
          <code>seeother</code>. Use this for rules to canonicalize
          the URL and return it to the client - to translate
          ``<code>/~</code>'' into ``<code>/u/</code>'', or to always
          append a slash to <code>/u/</code><em>user</em>, etc.<br />
          <strong>Note:</strong> When you use this flag, make sure
          that the substitution field is a valid URL! Otherwise, you
          will be redirecting to an invalid location. Remember that
          this flag on its own will only prepend
          <code>http://thishost[:thisport]/</code> to the URL, and
          rewriting will continue. Usually, you will want to stop
          rewriting at this point, and redirect immediately. To stop
          rewriting, you should add the 'L' flag.</p>
          <p>While this is typically used for redirects, any valid status
          code can be given here. If the status code is outside the redirect
          range (300-399), then the <em>Substitution</em> string is dropped
          and rewriting is stopped as if the <code>L</code> flag was
          used.</p>
        </dd>

        <dt>'<code>skip|S</code>=<em>num</em>'
        (skip next rule(s))</dt><dd>
        This flag forces the rewriting engine to skip the next
        <em>num</em> rules in sequence, if the current rule
        matches. Use this to make pseudo if-then-else constructs:
        The last rule of the then-clause becomes
        <code>skip=N</code>, where N is the number of rules in the
        else-clause. (This is <strong>not</strong> the same as the
        'chain|C' flag!)</dd>

        <dt>
        '<code>type|T</code>=<em>MIME-type</em>'
        (force MIME type)</dt><dd>
         Force the <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a> of the target file to be
        <em>MIME-type</em>. This can be used to
        set up the content-type based on some conditions.
        For example, the following snippet allows <code>.php</code> files to
        be <em>displayed</em> by <code>mod_php</code> if they are called with
        the <code>.phps</code> extension:
        <div class="example"><p><code>
            RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]
        </code></p></div>
        </dd>
      </dl>

<div class="note"><h3>Home directory expansion</h3>
<p> When the substitution string begins with a string
resembling "/~user" (via explicit text or backreferences), mod_rewrite performs
home directory expansion independent of the presence or configuration
of <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</p>

<p> This expansion does not occur when the <em>PT</em>
flag is used on the <code class="directive"><a href="#rewriterule">RewriteRule</a></code>
directive.</p>
</div>

<div class="note"><h3>Per-directory Rewrites</h3>
 
<p>The rewrite engine may be used in <a href="../howto/htaccess.html">.htaccess</a> files.  To enable the
rewrite engine for these files you need to set
"<code>RewriteEngine On</code>" <strong>and</strong>
"<code>Options FollowSymLinks</code>" must be enabled. If your
administrator has disabled override of <code>FollowSymLinks</code> for
a user's directory, then you cannot use the rewrite engine. This
restriction is required for security reasons.</p>

<p>When using the rewrite engine in <code>.htaccess</code> files the
per-directory prefix (which always is the same for a specific
directory) is automatically <em>removed</em> for the pattern matching
and automatically <em>added</em> after the substitution has been
done. This feature is essential for many sorts of rewriting; without
this, you would always have to match the parent directory, which is
not always possible.  There is one exception: If a substitution string
starts with <code>http://</code>, then the directory prefix will
<strong>not</strong> be added, and an external redirect (or proxy
throughput, if using flag <strong>P</strong>) is forced.  See the
<code class="directive"><a href="#rewritebase">RewriteBase</a></code> directive for
more information.</p>

<p>The rewrite engine may also be used in <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> sections with the same
prefix-matching rules as would be applied to <code>.htaccess</code>
files.  It is usually simpler, however, to avoid the prefix substitution
complication by putting the rewrite rules in the main server or
virtual host context, rather than in a <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section.</p>

<p>Although rewrite rules are syntactically permitted in <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> sections, this
should never be necessary and is unsupported.</p>

</div>

     <p>Here are all possible substitution combinations and their
      meanings:</p>

      <p><strong>Inside per-server configuration
      (<code>httpd.conf</code>)<br />
       for request ``<code>GET
      /somepath/pathinfo</code>'':</strong><br />
      </p>

<div class="note"><pre>
<strong>Given Rule</strong>                                      <strong>Resulting Substitution</strong>
----------------------------------------------  ----------------------------------
^/somepath(.*) otherpath$1                      invalid, not supported

^/somepath(.*) otherpath$1  [R]                 invalid, not supported

^/somepath(.*) otherpath$1  [P]                 invalid, not supported
----------------------------------------------  ----------------------------------
^/somepath(.*) /otherpath$1                     /otherpath/pathinfo

^/somepath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) /otherpath$1 [P]                 doesn't make sense, not supported
----------------------------------------------  ----------------------------------
^/somepath(.*) http://thishost/otherpath$1      /otherpath/pathinfo

^/somepath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) http://thishost/otherpath$1 [P]  doesn't make sense, not supported
----------------------------------------------  ----------------------------------
^/somepath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                via external redirection

^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                via external redirection
                                                (the [R] flag is redundant)

^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                via internal proxy
</pre></div>

      <p><strong>Inside per-directory configuration for
      <code>/somepath</code><br />
       (<code>/physical/path/to/somepath/.htacccess</code>, with
      <code>RewriteBase /somepath</code>)<br />
       for request ``<code>GET
      /somepath/localpath/pathinfo</code>'':</strong><br /> 
     </p>

<div class="note"><pre>
<strong>Given Rule</strong>                                      <strong>Resulting Substitution</strong>
----------------------------------------------  ----------------------------------
^localpath(.*) otherpath$1                      /somepath/otherpath/pathinfo

^localpath(.*) otherpath$1  [R]                 http://thishost/somepath/otherpath/pathinfo
                                                via external redirection

^localpath(.*) otherpath$1  [P]                 doesn't make sense, not supported
----------------------------------------------  ----------------------------------
^localpath(.*) /otherpath$1                     /otherpath/pathinfo

^localpath(.*) /otherpath$1 [R]                 http://thishost/otherpath/pathinfo
                                                via external redirection

^localpath(.*) /otherpath$1 [P]                 doesn't make sense, not supported
----------------------------------------------  ----------------------------------
^localpath(.*) http://thishost/otherpath$1      /otherpath/pathinfo

^localpath(.*) http://thishost/otherpath$1 [R]  http://thishost/otherpath/pathinfo
                                                via external redirection

^localpath(.*) http://thishost/otherpath$1 [P]  doesn't make sense, not supported
----------------------------------------------  ----------------------------------
^localpath(.*) http://otherhost/otherpath$1     http://otherhost/otherpath/pathinfo
                                                via external redirection

^localpath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo
                                                via external redirection
                                                (the [R] flag is redundant)

^localpath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
                                                via internal proxy
</pre></div>
  
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                     mod/mod_setenvif.html                                                                               100644       0       0        36576 11256641270  12401  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_setenvif - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_setenvif</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerinin isteğin özelliklerine uygun olarak atanmasını sağlar</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>setenvif_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_setenvif.c</td></tr></table>
<h3>Özet</h3>


    <p><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> modülü ortam değişkenlerinin isteğin
      farklı bileşenlerinin belirttiğiniz düzenli ifade ile eşleşmesine bağlı
      olarak atanmasını mümkün kılar. Bu ortam değişkenleri sunucunun çeşitli
      kısımlarında yapılacak eylemlere karar verirken kullanılır.</p>

    <p>Yönergeler yapılandırma dosyasında yer aldıkları sıraya göre ele
      alınırlar. Böylece daha karmaşık dizilimler kullanılabilir, bu örnekteki
      tarayıcı Mozilla ise <code>netscape</code> ortam değişkeni atanmakta,
      MSIE ise atanmamaktadır.</p>

    <div class="example"><p><code>
      BrowserMatch ^Mozilla netscape<br />
      BrowserMatch MSIE !netscape<br />
    </code></p></div>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#browsermatch">BrowserMatch</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#browsermatchnocase">BrowserMatchNoCase</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvif">SetEnvIf</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvifnocase">SetEnvIfNoCase</a></li>
</ul>
<h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../env.html">Apache’de Ortam Değişkenleri</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BrowserMatch" id="BrowserMatch">BrowserMatch</a> <a name="browsermatch" id="browsermatch">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini HTTP kullanıcı arayüzüne göre belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>BrowserMatch <em>düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
[[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_setenvif</td></tr>
</table>
  <p><code class="directive">BrowserMatch</code> yönergesi <code class="directive"><a href="#setenvif">SetEnvIf</a></code> yönergesinin özel bir halidir
    ve ortam değişkenlerine <code>User-Agent</code> HTTP istek başlığının
    değerine göre atama yapar. Aşağıdaki iki satır aynı etkiye sahiptir:</p>

  <div class="example"><p><code>
    BrowserMatchNoCase Robot is_a_robot<br />
    SetEnvIfNoCase User-Agent Robot is_a_robot<br />
  </code></p></div>

  <p>Başka örnekler:</p>

  <div class="example"><p><code>
      BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br />
      BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br />
      BrowserMatch MSIE !javascript<br />
  </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="BrowserMatchNoCase" id="BrowserMatchNoCase">BrowserMatchNoCase</a> <a name="browsermatchnocase" id="browsermatchnocase">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini HTTP kullanıcı arayüzünün harf büyüklüğüne
duyarsız eşleşmelerine bağlı olarak belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>BrowserMatchNoCase <em>düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
[[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_setenvif</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 1.2 ve sonrasında bulunur (Apache 1.2 sürümünde bu
yönerge artık atıl olan mod_browser modülüyle sağlanırdı).</td></tr>
</table>

    <p><code class="directive">BrowserMatchNoCase</code> yönergesi sözdizimsel ve
      anlamsal olarak <code class="directive"><a href="#browsermatch">BrowserMatch</a></code> yönergesinin eşdeğeridir.
      Ancak, eşleşmelerde harf büyüklüğüne duyarsızdır. Örnek:</p>

    <div class="example"><p><code>
        BrowserMatchNoCase mac platform=macintosh<br />
        BrowserMatchNoCase win platform=windows<br />
    </code></p></div>

    <p><code class="directive">BrowserMatch</code> ve
      <code class="directive">BrowserMatchNoCase</code> yönergeleri <code class="directive"><a href="#setenvif">SetEnvIf</a></code> ve <code class="directive"><a href="#setenvifnocase">SetEnvIfNoCase</a></code> yönergelerinin özel
      halleridir. Bu bakımda aşağıdaki iki satır aynı etkiye sahiptir:</p>

    <div class="example"><p><code>
      BrowserMatchNoCase Robot is_a_robot<br />
      SetEnvIfNoCase User-Agent Robot is_a_robot<br />
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnvIf" id="SetEnvIf">SetEnvIf</a> <a name="setenvif" id="setenvif">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini isteğin özniteliklerine göre atar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetEnvIf <em>öznitelik
    düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
    [[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_setenvif</td></tr>
</table>
    <p><code class="directive">SetEnvIf</code> yönergesi ortam değişkenlerini isteğin
      özniteliklerine göre tanımlar. İlk bileşen olarak belirtilen
      <code><em>öznitelik</em></code> şu üç şeyden biri olabilir:</p>

    <ol>
      <li>Bir HTTP istek başlığı alanı (ayrıntılı bilgi için bak: <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>);
        örneğin: <code>Host</code>, <code>User-Agent</code>,
        <code>Referer</code> ve <code>Accept-Language</code>.  Bir düzenli
        ifade kullanılarak birden fazla istek başlığı  belirtilebilir.</li>

      <li>İsteğin aşağıdaki bileşenlerinden biri:
        <ul>
          <li><code>Remote_Host</code> - isteği yapan istemcinin konak ismi
            (varsa)</li>

          <li><code>Remote_Addr</code> -isteği yapan istemcinin IP adresi</li>

          <li><code>Server_Addr</code> - isteği alan sunucunun IP adresi
            (sadece 2.0.43 sonrası sürümler için)</li>

          <li><code>Request_Method</code> - kullanılan yöntemin ismi
            (<code>GET</code>, <code>POST</code>, vs.)</li>

          <li><code>Request_Protocol</code> - İsteğin yapıldığı protokolün
            ismi ve numarası ("HTTP/0.9", "HTTP/1.1" gibi)</li>

          <li><code>Request_URI</code> - HTTP istek satırında belirtilen
            özkaynak; genellikle sorgu dizgesi olmaksızın şema ve konak ismini
            içeren bir URL parçasıdır. Sorgu dizgeleriyle eşleşmeler hakkında
            ayrıntılı bilgi edinmek için <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
            modülünün <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
            yönergesinin açıklamasına bakınız.</li>
        </ul>
      </li>

      <li>İstek ile evvelce ilişkilendirilmiş bir ortam değişkeninin ismi. Bu
        sayede önceki bir eşleşmenin sonucuna karşı yeni bir sınama yapma
        imkanı ortaya çıkar. Böyle bir sınama için sadece evvelce
        <code>SetEnvIf[NoCase]</code> yönergeleri ile yapılmış atamalardaki
        ortam değişkenleri kullanılabilir.  ‘Evvelce’ derken, sunucu genelinde
        veya bölüm içinde bu yönergeden önce yer alan
        <code>SetEnvIf[NoCase]</code> yönerge satırları kastedilmektedir.
        Ortam değişkenlerinin dikkate alınabilmesi için istek öznitelikleri
        arasında hiçbir eşleşme olmaması ve <code><em>öznitelik</em></code>
        olarak bir düzenli ifade belirtilmemiş olması gerekir.</li>
    </ol>

    <p>İkinci bileşen (<code><em>düzifd</em></code>) bir <a class="glossarylink" href="../glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a>dir.  <code><em>düzifd</em></code>
      ile <code><em>öznitelik</em></code> eşleştiği takdirde yönergenin kalan
      bileşenleri değerlendirmeye alınır.</p>

    <p>Kalan bileşenler atanacak ortam değişkenlerinin isimleri ve isteğe
      bağlı olarak bunlara atanacak değerlerden oluşur. Bunlar şöyle
      belirtilebilir:</p>

    <ol>
      <li><code><em>değişken-adı</em></code> veya</li>

      <li><code>!<em>değişken-adı</em></code> ya da </li>

      <li><code><em>değişken-adı</em>=<em>değer</em></code></li>
    </ol>

    <p>İlk biçemde değişkene "1" değeri atanır. İkincisinde atanmış bir
      değişken atanmamış yapılır. Üçüncüsünde ise değişkene belirtilen
      <code><em>değer</em></code> bire bir atanır. 2.0.52 sürümünden itibaren
      parantezli düzenli ifadelerin sonuçları ile değiştirilmek üzere
      <code><em>value</em></code> içinde <code>$1</code>..<code>$9</code>
      gösterimleri tanınmaktadır.</p>

    <div class="example"><h3>Örnek:</h3><p><code>
      SetEnvIf Request_URI "\.gif$" nesne_bir_resim=gif<br />
      SetEnvIf Request_URI "\.jpg$" nesne_bir_resim=jpg<br />
      SetEnvIf Request_URI "\.xbm$" nesne_bir_resim=xbm<br />
            :<br />
      SetEnvIf Referer belgeler\.alanismi\.mesela\.dom dahili_site_istendi<br />
            :<br />
      SetEnvIf object_is_image xbm XBIT_PROCESSING=1<br />
            :<br />
      SetEnvIf ^TS*  ^[a-z].*  TS_VAR<br />
    </code></p></div>

    <p>İlk üçünde istek bir resim dosyası için yapılmışsa
      <code>nesne_bir_resim</code> ortam değişkeni atanmakta, dördüncüsünde
      istenen sayfa <code>belgeler.alanismi.mesela.dom</code> adlı sitede
      bulunuyorsa <code>dahili_site_istendi</code> ortam değişkeni
      atanmaktadır.</p>

    <p>Son örnekte ise istekte "TS" ile başlayıp [a-z] arasındaki
      karakterlerle devam eden bir başlık alanı varsa <code>TS_VAR</code>
      ortam değişkeni atanmaktadır.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../env.html">Apache’de Ortam Değişkenleri</a> belgesinde
daha fazla örnek bulunabilir.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SetEnvIfNoCase" id="SetEnvIfNoCase">SetEnvIfNoCase</a> <a name="setenvifnocase" id="setenvifnocase">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ortam değişkenlerini isteğin özniteliklerinde harf büyüklüğüne
bağlı olmaksızın yapılmış tanımlara göre atar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SetEnvIfNoCase <em>öznitelik
    düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
    [[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak, dizin, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Geçersizleştirme:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_setenvif</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 1.3 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">SetEnvIfNoCase</code> yönergesi sözdizimsel ve anlamsal
      olarak <code class="directive"><a href="#setenvif">SetEnvIf</a></code>
      yönergesinin eşdeğeridir. Ancak, eşleşmelerde harf büyüklüğüne
      duyarsızdır. Örnek:</p>

    <div class="example"><p><code>
      SetEnvIfNoCase Host Apache\.Org site=apache
    </code></p></div>

    <p>Burada, <code>Host:</code> HTTP istek başlığında
      <code>Apache.Org</code>, <code>apache.org</code> veya harf büyüklüğünce
      farklı benzerleri belirtilmişse <code>site</code> ortam değişkenine
      "<code>apache</code>" değeri atanmaktadır.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                  mod/mod_so.html                                                                                     100644       0       0        25272 11256641270  11166  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_so - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_so</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Modüllerin ve çalıştırılabilir kodun sunucunun başlatılması veya
yeniden başlatılması sırasında yüklenmesini sağlar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>so_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_so.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Uyumluluk:</a></th><td>Windows için bu bir temel modüldür (sunucu bunu daima içerir).</td></tr></table>
<h3>Özet</h3>


    <p>Seçilen işletim sistemleri üzerinde bu modül Apache’nin yeniden
      derlenmesini gerektirmeden modüllerin <a href="../dso.html">Devingen
      Paylaşımlı Nesne</a> (DSO) mekanizması üzerinden kullanılabilmesini
      sağlar.</p>

    <p>Unix’te yüklenen kod genellikle paylaşımlı nesne dosyalarından
      (<code>.so</code> uzantılı dosyalar), Windows’ta ise ya <code>.so</code>
      ya da <code>.dll</code> uzantılı dosyalardan gelir.</p>

    <div class="warning"><h3>Uyarı</h3>
    <p>Apache 1.3 modülleri Apache 2.0’da doğrudan kullanılamazlar - modül ya
      devingen olarak yüklenecek hale getirilmeli ya da Apache 2.0’ın içinde
      derlenmelidir.</p>
    </div>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#loadfile">LoadFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#loadmodule">LoadModule</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#windows">Yüklenebilir Modüllerin Windows için Oluşturulması</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="windows" id="windows">Yüklenebilir Modüllerin Windows için Oluşturulması</a></h2>
    

    <div class="note"><h3>Bilginize</h3>
    <p>Windows için modül isimlendirme biçemi Apache 1.3.15 ve 2.0
      sürümlerinde değişmiştir; modüllere artık mod_filanca.so biçeminde isim
      verilmektedir.</p>

    <p><code>mod_so</code> modülü  ApacheModuleFoo.dll biçeminde
      isimlendirilmiş modülleri hala yüklemekteyse de yeni adlandırma uzlaşımı
      tercih edilmelidir. Yüklenebilir modülleri 2.0’a dönüştürüyorsanız,
      lütfen isimlerini de 2.0 uzlaşımına uygun hale getiriniz.</p></div>

    <p>Apache modül programlama arayüzü Unix ve Windows sürümleri arasında
      değişiklik göstermez. Unix için kullanılan çoğu modül hiç değişiklik
      yapmadan ya da çok küçük bir değişiklikle Windows’ta da çalışmaktadır.
      Çalışmayanlar Unix platformunun sahip olduğu ancak Windows platformunun
      sahip olmadığı nitelikleri kullanan modüllerdir.</p>

    <p>Bir modül Windows’ta çalıştığı zaman, sunucuya iki şekilde
      yüklenebilir. Unix’te olduğu gibi, doğrudan sunucunun içinde
      derlenebilir. Windows için hazırlanan Apache paketi, Unix için geçerli
      olan  <code>Configure</code> betiğini içermediğinden modülün kaynak
      dosyası ApacheCore proje dosyasına, sembolleri de
      <code>os\win32\modules.c</code> dosyasına eklenmelidir.</p>

    <p>İkinci yol ise modülü bir paylaşımlı kütüphane olarak çalışma anında
      <code class="directive"><a href="#loadmodule">LoadModule</a></code> yönergesi ile yüklemek
      için bir DLL olarak derlemektir. Bu DLL modüller dağıtılabilir ve
      sunucuyu yeniden derlemek gerekmeksizin her Windows için Apache
      kurulumunda çalışabilir.</p>

    <p>Bir modül DLL’i oluşturmak için modülün kaynak dosyasında küçük bir
      değişiklik yapmak gerekir: Modül kaydının daha sonra oluşturulacak olan
      DLL’den ihraç edilebilmesi gerekir (aşağıya bakınız). Bunu yapmak için
      modülün modül kaydı tanımına (Apache başlık dosyalarında tanımlanmış
      olan) <code>AP_MODULE_DECLARE_DATA</code> eklenmelidir. Örneğin,
      modülünüz</p>

    <div class="example"><p><code>
        module foo_module;
    </code></p></div>

    <p>diye bir satır içeriyorsa bunu,</p>

    <div class="example"><p><code>
        module AP_MODULE_DECLARE_DATA foo_module;
    </code></p></div>

    <p>olarak değiştirmelisiniz. Bunun yalnız Windows üzerinde etkili olduğunu
      ve Unix için modül kodunda bir değişiklik gerekmediğini unutmayınız.
      Ayrıca, <code>.DEF</code> dosyaları hakkında bilgi sahibi iseniz modül
      kodunda değişiklik yapmak yerine modül kaydını bu yöntemle de ihraç
      edebilirsiniz.</p>

    <p>Artık modülü içeren bir DLL oluşturmaya hazırsınız. Bunu, libhttpd.dll
      paylaşımlı kütüphanesi derlenirken oluşturulan libhttpd.lib ihraç
      kütüphanesi ile ilintilemeniz gerekecektir. Ayrıca, Apache başlık
      dosyalarının doğru konumlandığından emin olmak için derleyici
      seçeneklerinde değişiklik yapmanız gerekebilir. Bu kütüphaneyi
      sunucunuzun kök dizini altındaki <code>modules</code> dizininde
      bulabilirsiniz. En iyisi derleme ortamının doğru yapılandırıldığından
      emin olmak için ya ağaçta mevcut modüllerden birinin <code>.dsp</code>
      dosyasını gaspedersiniz ya da kendi <code>.dsp</code> dosyanızın
      ilintileme seçenekleriyle derleyicininkileri karşılaştırırsınız.</p>

    <p>Artık modülünüzün DLL sürümünü oluşturmalısınız. DLL’i sunucunuzun kök
      dizininin altında bulunan <code>modules</code> dizinine yerleştirdikten
      sonra <code class="directive">LoadModule</code> yönergesi ile sunucunuza
      yükleyebilirsiniz.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LoadFile" id="LoadFile">LoadFile</a> <a name="loadfile" id="loadfile">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LoadFile <em>dosya-ismi</em> [<em>dosya-ismi</em>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_so</td></tr>
</table>

    <p><code class="directive">LoadFile</code> yönergesi ismi belirtilen kütüphaneleri
      veya nesne dosyalarını sunucu başlatılırken veya yeniden başlatılırken
      sunucu ile ilintiler. Yönerge, bazı modüllerin çalışması sırasında
      gereken ek kodların yüklenmesi için kullanılır.
      <code><em>dosya-ismi</em></code> olarak mutlak bir dosya yolu
      belirtilebileceği gibi <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>’a
      göreli bir dosya yolu da  belirtilebilir.</p>

    <p>Örnek:</p>

    <div class="example"><p><code>LoadFile libexec/libxmlparse.so</code></p></div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LoadModule" id="LoadModule">LoadModule</a> <a name="loadmodule" id="loadmodule">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler
ve etkin modül listesine ekler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LoadModule <em>modül dosya-ismi</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_so</td></tr>
</table>
    <p><code class="directive">LoadModule</code> yönergesi
      <code><em>dosya-ismi</em></code> ile belirtilen nesne dosyasını veya
      kütüphaneyi sunucu ile ilintiler ve etkin modül listesine belirtilen
      <code><em>modül</em></code> ismiyle ekler. <code><em>modül</em></code>,
      modülün kaynak dosyasında <code>module</code> türündeki tek harici
      değişkenin ismi olup modül belgelerinde <a href="module-dict.html#ModuleIdentifier">Modül Betimleyici</a> olarak
      geçer. Örneğin,</p>

    <div class="example"><p><code>
      LoadModule status_module modules/mod_status.so
    </code></p></div>

    <p>satırı ile ismi belirtilen dosya <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> dizini altındaki
      <code>modules</code> alt dizininden yüklenir.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                      mod/mod_speling.html                                                                                100644       0       0        17006 11256641270  12202  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_speling - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_speling</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Attempts to correct mistaken URLs that
users might have entered by ignoring capitalization and by
allowing up to one misspelling</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>speling_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_speling.c</td></tr></table>
<h3>Summary</h3>


    <p>Requests to documents sometimes cannot be served by the core
    apache server because the request was misspelled or
    miscapitalized. This module addresses this problem by trying to
    find a matching document, even after all other modules gave up.
    It does its work by comparing each document name in the
    requested directory against the requested document name
    <strong>without regard to case</strong>, and allowing
    <strong>up to one misspelling</strong> (character insertion /
    omission / transposition or wrong character). A list is built
    with all document names which were matched using this
    strategy.</p>

    <p>If, after scanning the directory,</p>

    <ul>
      <li>no matching document was found, Apache will proceed as
      usual and return a "document not found" error.</li>

      <li>only one document is found that "almost" matches the
      request, then it is returned in the form of a redirection
      response.</li>

      <li>more than one document with a close match was found, then
      the list of the matches is returned to the client, and the
      client can select the correct candidate.</li>
    </ul>

</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#checkcaseonly">CheckCaseOnly</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#checkspelling">CheckSpelling</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CheckCaseOnly" id="CheckCaseOnly">CheckCaseOnly</a> <a name="checkcaseonly" id="checkcaseonly">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Limits the action of the speling module to case corrections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CheckCaseOnly on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CheckCaseOnly Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_speling</td></tr>
</table>
    <p>When set, this directive limits the action of the spelling correction to lower/upper case changes. 
    Other potential corrections are not performed.</p>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CheckSpelling" id="CheckSpelling">CheckSpelling</a> <a name="checkspelling" id="checkspelling">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables the spelling 
module</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CheckSpelling on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CheckSpelling Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_speling</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>CheckSpelling was available as a separately available
module for Apache 1.1, but was limited to miscapitalizations. As
of Apache 1.3, it is part of the Apache distribution. Prior to Apache
1.3.2, the <code>CheckSpelling</code> directive was only available in the
"server" and "virtual host" contexts.</td></tr>
</table>
    <p>This directive enables or disables the spelling module. When
    enabled, keep in mind that</p>

    <ul>
      <li>the directory scan which is necessary for the spelling
      correction will have an impact on the server's performance
      when many spelling corrections have to be performed at the
      same time.</li>

      <li>the document trees should not contain sensitive files
      which could be matched inadvertently by a spelling
      "correction".</li>

      <li>the module is unable to correct misspelled user names (as
      in <code>http://my.host/~apahce/</code>), just file names or
      directory names.</li>

      <li>spelling corrections apply strictly to existing files, so
      a request for the <code>&lt;Location /status&gt;</code> may
      get incorrectly treated as the negotiated file
      "<code>/stats.html</code>".</li>
    </ul>

    
    <p>mod_speling should not be enabled in <a href="mod_dav.html">DAV</a>
    enabled directories, because it will try to "spell fix" newly created
    resource names against existing filenames, e.g., when trying to upload
    a new document <code>doc43.html</code> it might redirect to an existing
    document <code>doc34.html</code>, which is not what was intended.
    </p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          mod/mod_ssl.html                                                                                    100644       0       0       342437 11256641270  11373  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_ssl - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_ssl</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Strong cryptography using the Secure Sockets
Layer (SSL) and Transport Layer Security (TLS) protocols</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>ssl_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_ssl.c</td></tr></table>
<h3>Summary</h3>

<p>This module provides SSL v2/v3 and TLS v1 support for the Apache
HTTP Server.  It was contributed by Ralf S. Engeschall based on his
mod_ssl project and originally derived from work by Ben Laurie.</p>

<p>This module relies on <a href="http://www.openssl.org/">OpenSSL</a>
to provide the cryptography engine.</p>

<p>Further details, discussion, and examples are provided in the
<a href="../ssl/index.html">SSL documentation</a>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#sslcacertificatefile">SSLCACertificateFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcacertificatepath">SSLCACertificatePath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcadnrequestfile">SSLCADNRequestFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcadnrequestpath">SSLCADNRequestPath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcarevocationfile">SSLCARevocationFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcarevocationpath">SSLCARevocationPath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcertificatechainfile">SSLCertificateChainFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcertificatefile">SSLCertificateFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslciphersuite">SSLCipherSuite</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslcryptodevice">SSLCryptoDevice</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslengine">SSLEngine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslhonorcipherorder">SSLHonorCipherOrder</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslmutex">SSLMutex</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssloptions">SSLOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslpassphrasedialog">SSLPassPhraseDialog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslprotocol">SSLProtocol</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycacertificatefile">SSLProxyCACertificateFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycarevocationfile">SSLProxyCARevocationFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycheckpeercn">SSLProxyCheckPeerCN</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxycheckpeerexpire">SSLProxyCheckPeerExpire</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxyciphersuite">SSLProxyCipherSuite</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxyengine">SSLProxyEngine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxymachinecertificatefile">SSLProxyMachineCertificateFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxymachinecertificatepath">SSLProxyMachineCertificatePath</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxyprotocol">SSLProxyProtocol</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxyverify">SSLProxyVerify</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslproxyverifydepth">SSLProxyVerifyDepth</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslrandomseed">SSLRandomSeed</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslrenegbuffersize">SSLRenegBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslrequire">SSLRequire</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslrequiressl">SSLRequireSSL</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslsessioncache">SSLSessionCache</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslsessioncachetimeout">SSLSessionCacheTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslstrictsnivhostcheck">SSLStrictSNIVHostCheck</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslusername">SSLUserName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslverifyclient">SSLVerifyClient</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sslverifydepth">SSLVerifyDepth</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#envvars">Environment Variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#logformats">Custom Log Formats</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="envvars" id="envvars">Environment Variables</a></h2>

<p>This module provides a lot of SSL information as additional environment
variables to the SSI and CGI namespace. The generated variables are listed in
the table below. For backward compatibility the information can
be made available under different names, too. Look in the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter for details on the
compatibility variables.</p>

<table class="bordered">

<tr>
 <th><a name="table3">Variable Name:</a></th>
 <th>Value Type:</th>
 <th>Description:</th>
</tr>
<tr><td><code>HTTPS</code></td>                         <td>flag</td>      <td>HTTPS is being used.</td></tr>
<tr><td><code>SSL_PROTOCOL</code></td>                  <td>string</td>    <td>The SSL protocol version (SSLv2, SSLv3, TLSv1)</td></tr>
<tr><td><code>SSL_SESSION_ID</code></td>                <td>string</td>    <td>The hex-encoded SSL session id</td></tr>
<tr><td><code>SSL_CIPHER</code></td>                    <td>string</td>    <td>The cipher specification name</td></tr>
<tr><td><code>SSL_CIPHER_EXPORT</code></td>             <td>string</td>    <td><code>true</code> if cipher is an export cipher</td></tr>
<tr><td><code>SSL_CIPHER_USEKEYSIZE</code></td>         <td>number</td>    <td>Number of cipher bits (actually used)</td></tr>
<tr><td><code>SSL_CIPHER_ALGKEYSIZE</code></td>         <td>number</td>    <td>Number of cipher bits (possible)</td></tr>
<tr><td><code>SSL_COMPRESS_METHOD</code></td>           <td>string</td>    <td>SSL compression method negotiated</td></tr>
<tr><td><code>SSL_VERSION_INTERFACE</code></td>         <td>string</td>    <td>The mod_ssl program version</td></tr>
<tr><td><code>SSL_VERSION_LIBRARY</code></td>           <td>string</td>    <td>The OpenSSL program version</td></tr>
<tr><td><code>SSL_CLIENT_M_VERSION</code></td>          <td>string</td>    <td>The version of the client certificate</td></tr>
<tr><td><code>SSL_CLIENT_M_SERIAL</code></td>           <td>string</td>    <td>The serial of the client certificate</td></tr>
<tr><td><code>SSL_CLIENT_S_DN</code></td>               <td>string</td>    <td>Subject DN in client's certificate</td></tr>
<tr><td><code>SSL_CLIENT_S_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of client's Subject DN</td></tr>
<tr><td><code>SSL_CLIENT_I_DN</code></td>               <td>string</td>    <td>Issuer DN of client's certificate</td></tr>
<tr><td><code>SSL_CLIENT_I_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of client's Issuer DN</td></tr>
<tr><td><code>SSL_CLIENT_V_START</code></td>            <td>string</td>    <td>Validity of client's certificate (start time)</td></tr>
<tr><td><code>SSL_CLIENT_V_END</code></td>              <td>string</td>    <td>Validity of client's certificate (end time)</td></tr>
<tr><td><code>SSL_CLIENT_V_REMAIN</code></td>           <td>string</td>    <td>Number of days until client's certificate expires</td></tr>
<tr><td><code>SSL_CLIENT_A_SIG</code></td>              <td>string</td>    <td>Algorithm used for the signature of client's certificate</td></tr>
<tr><td><code>SSL_CLIENT_A_KEY</code></td>              <td>string</td>    <td>Algorithm used for the public key of client's certificate</td></tr>
<tr><td><code>SSL_CLIENT_CERT</code></td>               <td>string</td>    <td>PEM-encoded client certificate</td></tr>
<tr><td><code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em></td> <td>string</td>    <td>PEM-encoded certificates in client certificate chain</td></tr>
<tr><td><code>SSL_CLIENT_VERIFY</code></td>             <td>string</td>    <td><code>NONE</code>, <code>SUCCESS</code>, <code>GENEROUS</code> or <code>FAILED:</code><em>reason</em></td></tr>
<tr><td><code>SSL_SERVER_M_VERSION</code></td>          <td>string</td>    <td>The version of the server certificate</td></tr>
<tr><td><code>SSL_SERVER_M_SERIAL</code></td>           <td>string</td>    <td>The serial of the server certificate</td></tr>
<tr><td><code>SSL_SERVER_S_DN</code></td>               <td>string</td>    <td>Subject DN in server's certificate</td></tr>
<tr><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of server's Subject DN</td></tr>
<tr><td><code>SSL_SERVER_I_DN</code></td>               <td>string</td>    <td>Issuer DN of server's certificate</td></tr>
<tr><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>string</td>    <td>Component of server's Issuer DN</td></tr>
<tr><td><code>SSL_SERVER_V_START</code></td>            <td>string</td>    <td>Validity of server's certificate (start time)</td></tr>
<tr><td><code>SSL_SERVER_V_END</code></td>              <td>string</td>    <td>Validity of server's certificate (end time)</td></tr>
<tr><td><code>SSL_SERVER_A_SIG</code></td>              <td>string</td>    <td>Algorithm used for the signature of server's certificate</td></tr>
<tr><td><code>SSL_SERVER_A_KEY</code></td>              <td>string</td>    <td>Algorithm used for the public key of server's certificate</td></tr>
<tr><td><code>SSL_SERVER_CERT</code></td>               <td>string</td>    <td>PEM-encoded server certificate</td></tr>
</table>

<p><em>x509</em> specifies a component of an X.509 DN; one of
<code>C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email</code>.  In Apache 2.1 and
later, <em>x509</em> may also include a numeric <code>_n</code>
suffix.  If the DN in question contains multiple attributes of the
same name, this suffix is used as an index to select a particular
attribute.  For example, where the server certificate subject DN
included two OU fields, <code>SSL_SERVER_S_DN_OU_0</code> and
<code>SSL_SERVER_S_DN_OU_1</code> could be used to reference each.</p>

<p><code>SSL_CLIENT_V_REMAIN</code> is only available in version 2.1
and later.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="logformats" id="logformats">Custom Log Formats</a></h2>

<p>When <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is built into Apache or at least
loaded (under DSO situation) additional functions exist for the <a href="mod_log_config.html#formats">Custom Log Format</a> of 
<code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>. First there is an
additional ``<code>%{</code><em>varname</em><code>}x</code>''
eXtension format function which can be used to expand any variables
provided by any module, especially those provided by mod_ssl which can
you find in the above table.</p>
<p>
For backward compatibility there is additionally a special
``<code>%{</code><em>name</em><code>}c</code>'' cryptography format function
provided. Information about this function is provided in the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter.</p>
<div class="example"><h3>Example</h3><p><code>
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCACertificateFile" id="SSLCACertificateFile">SSLCACertificateFile</a> <a name="sslcacertificatefile" id="sslcacertificatefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded CA Certificates 
for Client Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCACertificateFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the <em>all-in-one</em> file where you can assemble the
Certificates of Certification Authorities (CA) whose <em>clients</em> you deal
with. These are used for Client Authentication. Such a file is simply the
concatenation of the various PEM-encoded Certificate files, in order of
preference. This can be used alternatively and/or additionally to 
<code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCACertificatePath" id="SSLCACertificatePath">SSLCACertificatePath</a> <a name="sslcacertificatepath" id="sslcacertificatepath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded CA Certificates for 
Client Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCACertificatePath <em>directory-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the directory where you keep the Certificates of
Certification Authorities (CAs) whose clients you deal with. These are used to
verify the client certificate on Client Authentication.</p>
<p>
The files in this directory have to be PEM-encoded and are accessed through
hash filenames. So usually you can't just place the Certificate files
there: you also have to create symbolic links named
<em>hash-value</em><code>.N</code>. And you should always make sure this directory
contains the appropriate symbolic links. Use the <code>Makefile</code> which
comes with mod_ssl to accomplish this task.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCACertificatePath /usr/local/apache2/conf/ssl.crt/
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCADNRequestFile" id="SSLCADNRequestFile">SSLCADNRequestFile</a> <a name="sslcadnrequestfile" id="sslcadnrequestfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded CA Certificates 
for defining acceptable CA names</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCADNRequestFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>When a client certificate is requested by mod_ssl, a list of
<em>acceptable Certificate Authority names</em> is sent to the client
in the SSL handshake.  These CA names can be used by the client to
select an appropriate client certificate out of those it has
available.</p>

<p>If neither of the directives <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> or <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> are given, then the
set of acceptable CA names sent to the client is the names of all the
CA certificates given by the <code class="directive"><a href="#sslcacertificatefile">SSLCACertificateFile</a></code> and <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> directives; in other
words, the names of the CAs which will actually be used to verify the
client certificate.</p>

<p>In some circumstances, it is useful to be able to send a set of
acceptable CA names which differs from the actual CAs used to verify
the client certificate - for example, if the client certificates are
signed by intermediate CAs.  In such cases, <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> and/or <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> can be used; the
acceptable CA names are then taken from the complete set of
certificates in the directory and/or file specified by this pair of
directives.</p>

<p><code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> must
specify an <em>all-in-one</em> file containing a concatenation of
PEM-encoded CA certificates.</p>

<div class="example"><h3>Example</h3><p><code>
SSLCADNRequestFile /usr/local/apache2/conf/ca-names.crt
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCADNRequestPath" id="SSLCADNRequestPath">SSLCADNRequestPath</a> <a name="sslcadnrequestpath" id="sslcadnrequestpath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded CA Certificates for 
defining acceptable CA names</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCADNRequestPath <em>directory-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>

<p>This optional directive can be used to specify the set of
<em>acceptable CA names</em> which will be sent to the client when a
client certificate is requested.  See the <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> directive for more
details.</p>

<p>The files in this directory have to be PEM-encoded and are accessed
through hash filenames. So usually you can't just place the
Certificate files there: you also have to create symbolic links named
<em>hash-value</em><code>.N</code>. And you should always make sure
this directory contains the appropriate symbolic links. Use the
<code>Makefile</code> which comes with mod_ssl to accomplish this
task.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCADNRequestPath /usr/local/apache2/conf/ca-names.crt/
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCARevocationFile" id="SSLCARevocationFile">SSLCARevocationFile</a> <a name="sslcarevocationfile" id="sslcarevocationfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded CA CRLs for 
Client Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCARevocationFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the <em>all-in-one</em> file where you can
assemble the Certificate Revocation Lists (CRL) of Certification
Authorities (CA) whose <em>clients</em> you deal with. These are used
for Client Authentication.  Such a file is simply the concatenation of
the various PEM-encoded CRL files, in order of preference. This can be
used alternatively and/or additionally to <code class="directive"><a href="#sslcarevocationpath">SSLCARevocationPath</a></code>.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCARevocationFile /usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCARevocationPath" id="SSLCARevocationPath">SSLCARevocationPath</a> <a name="sslcarevocationpath" id="sslcarevocationpath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded CA CRLs for 
Client Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCARevocationPath <em>directory-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the directory where you keep the Certificate Revocation
Lists (CRL) of Certification Authorities (CAs) whose clients you deal with.
These are used to revoke the client certificate on Client Authentication.</p>
<p>
The files in this directory have to be PEM-encoded and are accessed through
hash filenames. So usually you have not only to place the CRL files there.
Additionally you have to create symbolic links named
<em>hash-value</em><code>.rN</code>. And you should always make sure this directory
contains the appropriate symbolic links. Use the <code>Makefile</code> which
comes with <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> to accomplish this task.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCARevocationPath /usr/local/apache2/conf/ssl.crl/
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCertificateChainFile" id="SSLCertificateChainFile">SSLCertificateChainFile</a> <a name="sslcertificatechainfile" id="sslcertificatechainfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of PEM-encoded Server CA Certificates</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCertificateChainFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the optional <em>all-in-one</em> file where you can
assemble the certificates of Certification Authorities (CA) which form the
certificate chain of the server certificate. This starts with the issuing CA
certificate of the server certificate and can range up to the root CA
certificate. Such a file is simply the concatenation of the various
PEM-encoded CA Certificate files, usually in certificate chain order.</p>
<p>
This should be used alternatively and/or additionally to <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> for explicitly
constructing the server certificate chain which is sent to the browser
in addition to the server certificate. It is especially useful to
avoid conflicts with CA certificates when using client
authentication. Because although placing a CA certificate of the
server certificate chain into <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> has the same effect
for the certificate chain construction, it has the side-effect that
client certificates issued by this same CA certificate are also
accepted on client authentication.</p>
<p>
But be careful: Providing the certificate chain works only if you are using a
<em>single</em> RSA <em>or</em> DSA based server certificate. If you are
using a coupled RSA+DSA certificate pair, this will work only if actually both
certificates use the <em>same</em> certificate chain. Else the browsers will be
confused in this situation.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCertificateChainFile /usr/local/apache2/conf/ssl.crt/ca.crt
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCertificateFile" id="SSLCertificateFile">SSLCertificateFile</a> <a name="sslcertificatefile" id="sslcertificatefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Server PEM-encoded X.509 Certificate file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCertificateFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive points to the PEM-encoded Certificate file for the server and
optionally also to the corresponding RSA or DSA Private Key file for it
(contained in the same file). If the contained Private Key is encrypted the
Pass Phrase dialog is forced at startup time. This directive can be used up to
two times (referencing different filenames) when both a RSA and a DSA based
server certificate is used in parallel.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCertificateKeyFile" id="SSLCertificateKeyFile">SSLCertificateKeyFile</a> <a name="sslcertificatekeyfile" id="sslcertificatekeyfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Server PEM-encoded Private Key file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCertificateKeyFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive points to the PEM-encoded Private Key file for the
server. If the Private Key is not combined with the Certificate in the
<code class="directive">SSLCertificateFile</code>, use this additional directive to
point to the file with the stand-alone Private Key. When
<code class="directive">SSLCertificateFile</code> is used and the file
contains both the Certificate and the Private Key this directive need
not be used. But we strongly discourage this practice.  Instead we
recommend you to separate the Certificate and the Private Key. If the
contained Private Key is encrypted, the Pass Phrase dialog is forced
at startup time. This directive can be used up to two times
(referencing different filenames) when both a RSA and a DSA based
private key is used in parallel.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCipherSuite" id="SSLCipherSuite">SSLCipherSuite</a> <a name="sslciphersuite" id="sslciphersuite">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Cipher Suite available for negotiation in SSL 
handshake</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCipherSuite <em>cipher-spec</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This complex directive uses a colon-separated <em>cipher-spec</em> string
consisting of OpenSSL cipher specifications to configure the Cipher Suite the
client is permitted to negotiate in the SSL handshake phase. Notice that this
directive can be used both in per-server and per-directory context. In
per-server context it applies to the standard SSL handshake when a connection
is established. In per-directory context it forces a SSL renegotation with the
reconfigured Cipher Suite after the HTTP request was read but before the HTTP
response is sent.</p>
<p>
An SSL cipher specification in <em>cipher-spec</em> is composed of 4 major
attributes plus a few extra minor ones:</p>
<ul>
<li><em>Key Exchange Algorithm</em>:<br />
    RSA or Diffie-Hellman variants.
</li>
<li><em>Authentication Algorithm</em>:<br />
    RSA, Diffie-Hellman, DSS or none.
</li>
<li><em>Cipher/Encryption Algorithm</em>:<br />
    DES, Triple-DES, RC4, RC2, IDEA or none.
</li>
<li><em>MAC Digest Algorithm</em>:<br />
    MD5, SHA or SHA1.
</li>
</ul>
<p>An SSL cipher can also be an export cipher and is either a SSLv2 or SSLv3/TLSv1
cipher (here TLSv1 is equivalent to SSLv3). To specify which ciphers to use,
one can either specify all the Ciphers, one at a time, or use aliases to
specify the preference and order for the ciphers (see <a href="#table1">Table
1</a>).</p>

<table class="bordered">

<tr><th><a name="table1">Tag</a></th> <th>Description</th></tr>
<tr><td colspan="2"><em>Key Exchange Algorithm:</em></td></tr>
<tr><td><code>kRSA</code></td>   <td>RSA key exchange</td></tr>
<tr><td><code>kDHr</code></td>   <td>Diffie-Hellman key exchange with RSA key</td></tr>
<tr><td><code>kDHd</code></td>   <td>Diffie-Hellman key exchange with DSA key</td></tr>
<tr><td><code>kEDH</code></td>   <td>Ephemeral (temp.key) Diffie-Hellman key exchange (no cert)</td>   </tr>
<tr><td colspan="2"><em>Authentication Algorithm:</em></td></tr>
<tr><td><code>aNULL</code></td>  <td>No authentication</td></tr>
<tr><td><code>aRSA</code></td>   <td>RSA authentication</td></tr>
<tr><td><code>aDSS</code></td>   <td>DSS authentication</td> </tr>
<tr><td><code>aDH</code></td>    <td>Diffie-Hellman authentication</td></tr>
<tr><td colspan="2"><em>Cipher Encoding Algorithm:</em></td></tr>
<tr><td><code>eNULL</code></td>  <td>No encoding</td>         </tr>
<tr><td><code>DES</code></td>    <td>DES encoding</td>        </tr>
<tr><td><code>3DES</code></td>   <td>Triple-DES encoding</td> </tr>
<tr><td><code>RC4</code></td>    <td>RC4 encoding</td>       </tr>
<tr><td><code>RC2</code></td>    <td>RC2 encoding</td>       </tr>
<tr><td><code>IDEA</code></td>   <td>IDEA encoding</td>       </tr>
<tr><td colspan="2"><em>MAC Digest Algorithm</em>:</td></tr>
<tr><td><code>MD5</code></td>    <td>MD5 hash function</td></tr>
<tr><td><code>SHA1</code></td>   <td>SHA1 hash function</td></tr>
<tr><td><code>SHA</code></td>    <td>SHA hash function</td> </tr>
<tr><td colspan="2"><em>Aliases:</em></td></tr>
<tr><td><code>SSLv2</code></td>  <td>all SSL version 2.0 ciphers</td></tr>
<tr><td><code>SSLv3</code></td>  <td>all SSL version 3.0 ciphers</td> </tr>
<tr><td><code>TLSv1</code></td>  <td>all TLS version 1.0 ciphers</td> </tr>
<tr><td><code>EXP</code></td>    <td>all export ciphers</td>  </tr>
<tr><td><code>EXPORT40</code></td> <td>all 40-bit export ciphers only</td>  </tr>
<tr><td><code>EXPORT56</code></td> <td>all 56-bit export ciphers only</td>  </tr>
<tr><td><code>LOW</code></td>    <td>all low strength ciphers (no export, single DES)</td></tr>
<tr><td><code>MEDIUM</code></td> <td>all ciphers with 128 bit encryption</td> </tr>
<tr><td><code>HIGH</code></td>   <td>all ciphers using Triple-DES</td>     </tr>
<tr><td><code>RSA</code></td>    <td>all ciphers using RSA key exchange</td> </tr>
<tr><td><code>DH</code></td>     <td>all ciphers using Diffie-Hellman key exchange</td> </tr>
<tr><td><code>EDH</code></td>    <td>all ciphers using Ephemeral Diffie-Hellman key exchange</td> </tr>
<tr><td><code>ADH</code></td>    <td>all ciphers using Anonymous Diffie-Hellman key exchange</td> </tr>
<tr><td><code>DSS</code></td>    <td>all ciphers using DSS authentication</td> </tr>
<tr><td><code>NULL</code></td>   <td>all ciphers using no encryption</td> </tr>
</table>
<p>
Now where this becomes interesting is that these can be put together
to specify the order and ciphers you wish to use. To speed this up
there are also aliases (<code>SSLv2, SSLv3, TLSv1, EXP, LOW, MEDIUM,
HIGH</code>) for certain groups of ciphers. These tags can be joined
together with prefixes to form the <em>cipher-spec</em>. Available
prefixes are:</p>
<ul>
<li>none: add cipher to list</li>
<li><code>+</code>: add ciphers to list and pull them to current location in list</li>
<li><code>-</code>: remove cipher from list (can be added later again)</li>
<li><code>!</code>: kill cipher from list completely (can <strong>not</strong> be added later again)</li>
</ul>
<p>A simpler way to look at all of this is to use the ``<code>openssl ciphers
-v</code>'' command which provides a nice way to successively create the
correct <em>cipher-spec</em> string. The default <em>cipher-spec</em> string
is ``<code>ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code>'' which
means the following: first, remove from consideration any ciphers that do not
authenticate, i.e. for SSL only the Anonymous Diffie-Hellman ciphers. Next,
use ciphers using RC4 and RSA. Next include the high, medium and then the low
security ciphers. Finally <em>pull</em> all SSLv2 and export ciphers to the
end of the list.</p>
<div class="example"><pre>
$ openssl ciphers -v 'ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP'
NULL-SHA                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=SHA1
NULL-MD5                SSLv3 Kx=RSA      Au=RSA  Enc=None      Mac=MD5
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
...                     ...               ...     ...           ...
EXP-RC4-MD5             SSLv3 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export
EXP-RC2-CBC-MD5         SSLv2 Kx=RSA(512) Au=RSA  Enc=RC2(40)   Mac=MD5  export
EXP-RC4-MD5             SSLv2 Kx=RSA(512) Au=RSA  Enc=RC4(40)   Mac=MD5  export
</pre></div>
<p>The complete list of particular RSA &amp; DH ciphers for SSL is given in <a href="#table2">Table 2</a>.</p>
<div class="example"><h3>Example</h3><p><code>
SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW
</code></p></div>
<table class="bordered">

<tr><th><a name="table2">Cipher-Tag</a></th> <th>Protocol</th> <th>Key Ex.</th> <th>Auth.</th> <th>Enc.</th> <th>MAC</th> <th>Type</th> </tr>
<tr><td colspan="7"><em>RSA Ciphers:</em></td></tr>
<tr><td><code>DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>DES-CBC3-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>IDEA-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>RC4-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>RC4-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>IDEA-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>RC2-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC2(128)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>RC4-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>RC4-64-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>RC4(64)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>DES-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>EXP-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
<tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td>  export</td> </tr>
<tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
<tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv2</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td>  export</td> </tr>
<tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv2</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
<tr><td><code>NULL-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>NULL-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>MD5</td> <td /> </tr>
<tr><td colspan="7"><em>Diffie-Hellman Ciphers:</em></td></tr>
<tr><td><code>ADH-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>3DES(168)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>DES(56)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>RC4(128)</td> <td>MD5</td> <td /> </tr>
<tr><td><code>EDH-RSA-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>EDH-DSS-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>3DES(168)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>DES(56)</td> <td>SHA1</td> <td /> </tr>
<tr><td><code>EXP-EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
<tr><td><code>EXP-EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>DSS</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
<tr><td><code>EXP-ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
<tr><td><code>EXP-ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
</table>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLCryptoDevice" id="SSLCryptoDevice">SSLCryptoDevice</a> <a name="sslcryptodevice" id="sslcryptodevice">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable use of a cryptographic hardware accelerator</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLCryptoDevice <em>engine</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLCryptoDevice builtin</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later, if using -engine flavor of OpenSSL 
               0.9.6, or OpenSSL 0.9.7 or later</td></tr>
</table>
<p>
This directive enables use of a cryptographic hardware accelerator
board to offload some of the SSL processing overhead.  This directive
can only be used if the SSL toolkit is built with "engine" support;
OpenSSL 0.9.7 and later releases have "engine" support by default, the
separate "-engine" releases of OpenSSL 0.9.6 must be used.</p>

<p>To discover which engine names are supported, run the command
"<code>openssl engine</code>".</p>

<div class="example"><h3>Example</h3><p><code>
# For a Broadcom accelerator:<br />
SSLCryptoDevice ubsec
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLEngine" id="SSLEngine">SSLEngine</a> <a name="sslengine" id="sslengine">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>SSL Engine Operation Switch</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLEngine on|off|optional</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLEngine off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive toggles the usage of the SSL/TLS Protocol Engine. This
is usually used inside a <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> section to enable SSL/TLS for a
particular virtual host. By default the SSL/TLS Protocol Engine is
disabled for both the main server and all configured virtual hosts.</p>
<div class="example"><h3>Example</h3><p><code>
&lt;VirtualHost _default_:443&gt;<br />
SSLEngine on<br />
...<br />
&lt;/VirtualHost&gt;
</code></p></div>
<p>In Apache 2.1 and later, <code class="directive">SSLEngine</code> can be set to 
<code>optional</code>. This enables support for 
<a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>, Upgrading to TLS 
Within HTTP/1.1. At this time no web browsers support RFC 2817.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLHonorCipherOrder" id="SSLHonorCipherOrder">SSLHonorCipherOrder</a> <a name="sslhonorcipherorder" id="sslhonorcipherorder">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Option to prefer the server's cipher preference order</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLHonorCiperOrder <em>flag</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later, if using OpenSSL 0.9.7 or later</td></tr>
</table>
<p>When choosing a cipher during an SSLv3 or TLSv1 handshake, normally
the client's preference is used.  If this directive is enabled, the
server's preference will be used instead.</p>
<div class="example"><h3>Example</h3><p><code>
SSLHonorCipherOrder on
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLMutex" id="SSLMutex">SSLMutex</a> <a name="sslmutex" id="sslmutex">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Semaphore for internal mutual exclusion of 
operations</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLMutex <em>type</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLMutex none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This configures the SSL engine's semaphore (aka. lock) which is used for mutual
exclusion of operations which have to be done in a synchronized way between the
pre-forked Apache server processes. This directive can only be used in the
global server context because it's only useful to have one global mutex.
This directive is designed to closely match the
<code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> directive.</p>
<p>
The following Mutex <em>types</em> are available:</p>
<ul>
<li><code>none | no</code>
    <p>
    This is the default where no Mutex is used at all. Use it at your own
    risk. But because currently the Mutex is mainly used for synchronizing
    write access to the SSL Session Cache you can live without it as long
    as you accept a sometimes garbled Session Cache. So it's not recommended
    to leave this the default. Instead configure a real Mutex.</p></li>
<li><code>posixsem</code>
    <p>
    This is an elegant Mutex variant where a Posix Semaphore is used when possible.
    It is only available when the underlying platform
    and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports it.</p></li>
<li><code>sysvsem</code>
    <p>
    This is a somewhat elegant Mutex variant where a SystemV IPC Semaphore is used when
    possible. It is possible to "leak" SysV semaphores if processes crash before
    the semaphore is removed. It is only available when the underlying platform
    and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports it.</p></li>
<li><code>sem</code>
    <p>
    This directive tells the SSL Module to pick the "best" semaphore implementation
    available to it, choosing between Posix and SystemV IPC, in that order. It is only
    available when the underlying platform and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports at least one of the 2.</p></li>
<li><code>pthread</code>
    <p>
    This directive tells the SSL Module to use Posix thread mutexes. It is only available
    if the underlying platform and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports it.</p></li>
<li><code>fcntl:/path/to/mutex</code>
    <p>
    This is a portable Mutex variant where a physical (lock-)file and the <code>fcntl()</code>
    function are used as the Mutex.
    Always use a local disk filesystem for <code>/path/to/mutex</code> and never a file
    residing on a NFS- or AFS-filesystem. It is only available when the underlying platform
    and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports it. Note: Internally, the Process ID (PID) of the
    Apache parent process is automatically appended to
    <code>/path/to/mutex</code> to make it unique, so you don't have to worry
    about conflicts yourself. Notice that this type of mutex is not available
    under the Win32 environment. There you <em>have</em> to use the semaphore
    mutex.</p></li>
<li><code>flock:/path/to/mutex</code>
    <p>
    This is similar to the <code>fcntl:/path/to/mutex</code> method with the
    exception that the <code>flock()</code> function is used to provide file
    locking. It is only available when the underlying platform
    and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports it.</p></li>
<li><code>file:/path/to/mutex</code>
    <p>
    This directive tells the SSL Module to pick the "best" file locking implementation
    available to it, choosing between <code>fcntl</code> and <code>flock</code>,
    in that order. It is only available when the underlying platform and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> supports
    at least one of the 2.</p></li>
<li><code>default | yes</code>
    <p>
    This directive tells the SSL Module to pick the default locking implementation
    as determined by the platform and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>.</p></li>
</ul>
<div class="example"><h3>Example</h3><p><code>
SSLMutex file:/usr/local/apache/logs/ssl_mutex
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLOptions" id="SSLOptions">SSLOptions</a> <a name="ssloptions" id="ssloptions">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure various SSL engine run-time options</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLOptions [+|-]<em>option</em> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive can be used to control various run-time options on a
per-directory basis. Normally, if multiple <code>SSLOptions</code>
could apply to a directory, then the most specific one is taken
completely; the options are not merged. However if <em>all</em> the
options on the <code>SSLOptions</code> directive are preceded by a
plus (<code>+</code>) or minus (<code>-</code>) symbol, the options
are merged. Any options preceded by a <code>+</code> are added to the
options currently in force, and any options preceded by a
<code>-</code> are removed from the options currently in force.</p>
<p>
The available <em>option</em>s are:</p>
<ul>
<li><code>StdEnvVars</code>
    <p>
    When this option is enabled, the standard set of SSL related CGI/SSI
    environment variables are created. This per default is disabled for
    performance reasons, because the information extraction step is a
    rather expensive operation. So one usually enables this option for
    CGI and SSI requests only.</p>
</li>
<li><code>CompatEnvVars</code>
    <p>
    When this option is enabled, additional CGI/SSI environment variables are
    created for backward compatibility to other Apache SSL solutions. Look in
    the <a href="../ssl/ssl_compat.html">Compatibility</a> chapter for details
    on the particular variables generated.</p>
</li>
<li><code>ExportCertData</code>
    <p>
    When this option is enabled, additional CGI/SSI environment variables are
    created: <code>SSL_SERVER_CERT</code>, <code>SSL_CLIENT_CERT</code> and
    <code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em> (with <em>n</em> = 0,1,2,..).
    These contain the PEM-encoded X.509 Certificates of server and client for
    the current HTTPS connection and can be used by CGI scripts for deeper
    Certificate checking. Additionally all other certificates of the client
    certificate chain are provided, too. This bloats up the environment a
    little bit which is why you have to use this option to enable it on
    demand.</p>
</li>
<li><code>FakeBasicAuth</code>
    <p>
    When this option is enabled, the Subject Distinguished Name (DN) of the
    Client X509 Certificate is translated into a HTTP Basic Authorization
    username. This means that the standard Apache authentication methods can
    be used for access control. The user name is just the Subject of the
    Client's X509 Certificate (can be determined by running OpenSSL's
    <code>openssl x509</code> command: <code>openssl x509 -noout -subject -in
    </code><em>certificate</em><code>.crt</code>). Note that no password is
    obtained from the user. Every entry in the user file needs this password:
    ``<code>xxj31ZMTZzkVA</code>'', which is the DES-encrypted version of the
    word `<code>password</code>''. Those who live under MD5-based encryption
    (for instance under FreeBSD or BSD/OS, etc.) should use the following MD5
    hash of the same word: ``<code>$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/</code>''.</p>
</li>
<li><code>StrictRequire</code>
    <p>
    This <em>forces</em> forbidden access when <code>SSLRequireSSL</code> or
    <code>SSLRequire</code> successfully decided that access should be
    forbidden. Usually the default is that in the case where a ``<code>Satisfy
    any</code>'' directive is used, and other access restrictions are passed,
    denial of access due to <code>SSLRequireSSL</code> or
    <code>SSLRequire</code> is overridden (because that's how the Apache
    <code>Satisfy</code> mechanism should work.) But for strict access restriction
    you can use <code>SSLRequireSSL</code> and/or <code>SSLRequire</code> in
    combination with an ``<code>SSLOptions +StrictRequire</code>''. Then an
    additional ``<code>Satisfy Any</code>'' has no chance once mod_ssl has
    decided to deny access.</p>
</li>
<li><code>OptRenegotiate</code>
    <p>
    This enables optimized SSL connection renegotiation handling when SSL
    directives are used in per-directory context. By default a strict
    scheme is enabled where <em>every</em> per-directory reconfiguration of
    SSL parameters causes a <em>full</em> SSL renegotiation handshake. When this
    option is used mod_ssl tries to avoid unnecessary handshakes by doing more
    granular (but still safe) parameter checks. Nevertheless these granular
    checks sometimes maybe not what the user expects, so enable this on a
    per-directory basis only, please.</p>
</li>
</ul>
<div class="example"><h3>Example</h3><p><code>
SSLOptions +FakeBasicAuth -StrictRequire<br />
&lt;Files ~ "\.(cgi|shtml)$"&gt;<br />
    SSLOptions +StdEnvVars +CompatEnvVars -ExportCertData<br />
&lt;Files&gt;
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLPassPhraseDialog" id="SSLPassPhraseDialog">SSLPassPhraseDialog</a> <a name="sslpassphrasedialog" id="sslpassphrasedialog">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Type of pass phrase dialog for encrypted private 
keys</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLPassPhraseDialog <em>type</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLPassPhraseDialog builtin</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
When Apache starts up it has to read the various Certificate (see
<code class="directive"><a href="#sslcertificatefile">SSLCertificateFile</a></code>) and
Private Key (see <code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code>) files of the
SSL-enabled virtual servers. Because for security reasons the Private
Key files are usually encrypted, mod_ssl needs to query the
administrator for a Pass Phrase in order to decrypt those files. This
query can be done in two ways which can be configured by
<em>type</em>:</p>
<ul>
<li><code>builtin</code>
    <p>
    This is the default where an interactive terminal dialog occurs at startup
    time just before Apache detaches from the terminal. Here the administrator
    has to manually enter the Pass Phrase for each encrypted Private Key file.
    Because a lot of SSL-enabled virtual hosts can be configured, the
    following reuse-scheme is used to minimize the dialog: When a Private Key
    file is encrypted, all known Pass Phrases (at the beginning there are
    none, of course) are tried. If one of those known Pass Phrases succeeds no
    dialog pops up for this particular Private Key file. If none succeeded,
    another Pass Phrase is queried on the terminal and remembered for the next
    round (where it perhaps can be reused).</p>
    <p>
    This scheme allows mod_ssl to be maximally flexible (because for N encrypted
    Private Key files you <em>can</em> use N different Pass Phrases - but then
    you have to enter all of them, of course) while minimizing the terminal
    dialog (i.e. when you use a single Pass Phrase for all N Private Key files
    this Pass Phrase is queried only once).</p></li>

<li><code>|/path/to/program [args...]</code> 

   <p>This mode allows an external program to be used which acts as a
   pipe to a particular input device; the program is sent the standard
   prompt text used for the <code>builtin</code> mode on
   <code>stdin</code>, and is expected to write password strings on
   <code>stdout</code>.  If several passwords are needed (or an
   incorrect password is entered), additional prompt text will be
   written subsequent to the first password being returned, and more
   passwords must then be written back.</p></li>

<li><code>exec:/path/to/program</code>
    <p>
    Here an external program is configured which is called at startup for each
    encrypted Private Key file. It is called with two arguments (the first is
    of the form ``<code>servername:portnumber</code>'', the second is either
    ``<code>RSA</code>'' or ``<code>DSA</code>''), which indicate for which
    server and algorithm it has to print the corresponding Pass Phrase to
    <code>stdout</code>. The intent is that this external program first runs
    security checks to make sure that the system is not compromised by an
    attacker, and only when these checks were passed successfully it provides
    the Pass Phrase.</p>
    <p>
    Both these security checks, and the way the Pass Phrase is determined, can
    be as complex as you like. Mod_ssl just defines the interface: an
    executable program which provides the Pass Phrase on <code>stdout</code>.
    Nothing more or less! So, if you're really paranoid about security, here
    is your interface. Anything else has to be left as an exercise to the
    administrator, because local security requirements are so different.</p>
    <p>
    The reuse-algorithm above is used here, too. In other words: The external
    program is called only once per unique Pass Phrase.</p></li>
</ul>
<div class="example"><h3>Example</h3><p><code>
SSLPassPhraseDialog exec:/usr/local/apache/sbin/pp-filter
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProtocol" id="SSLProtocol">SSLProtocol</a> <a name="sslprotocol" id="sslprotocol">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure usable SSL protocol flavors</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProtocol [+|-]<em>protocol</em> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProtocol all</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive can be used to control the SSL protocol flavors mod_ssl should
use when establishing its server environment. Clients then can only connect
with one of the provided protocols.</p>
<p>
The available (case-insensitive) <em>protocol</em>s are:</p>
<ul>
<li><code>SSLv2</code>
    <p>
    This is the Secure Sockets Layer (SSL) protocol, version 2.0. It is the
    original SSL protocol as designed by Netscape Corporation.  Though it's
    use has been deprecated, because of weaknesses in the security of the protocol.</p></li>

<li><code>SSLv3</code>
    <p>
    This is the Secure Sockets Layer (SSL) protocol, version 3.0, from
    the Netscape Corporation. 
    It is the successor to SSLv2 and the predecessor to TLSv1. It's supported by
    almost all popular browsers.</p></li>

<li><code>TLSv1</code>
    <p>
    This is the Transport Layer Security (TLS) protocol, version 1.0. It is the
    successor to SSLv3 and is defined in <a href="http://www.ietf.org/rfc/rfc2246.txt">RFC2246</a>. 
    Which has been obsoleted by <a href="http://www.ietf.org/rfc/rfc4346.txt">RFC4346</a>.</p></li>

<li><code>All</code>
    <p>
    This is a shortcut for ``<code>+SSLv2 +SSLv3 +TLSv1</code>'' and a
    convenient way for enabling all protocols except one when used in
    combination with the minus sign on a protocol as the example above 
    shows.</p></li>
</ul>
<div class="example"><h3>Example</h3><p><code>
#   enable SSLv3 and TLSv1, but not SSLv2<br />
SSLProtocol all -SSLv2
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCACertificateFile" id="SSLProxyCACertificateFile">SSLProxyCACertificateFile</a> <a name="sslproxycacertificatefile" id="sslproxycacertificatefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded CA Certificates 
for Remote Server Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCACertificateFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the <em>all-in-one</em> file where you can assemble the
Certificates of Certification Authorities (CA) whose <em>remote servers</em> you deal
with. These are used for Remote Server Authentication. Such a file is simply the
concatenation of the various PEM-encoded Certificate files, in order of
preference. This can be used alternatively and/or additionally to 
<code class="directive"><a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></code>.</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCACertificateFile /usr/local/apache2/conf/ssl.crt/ca-bundle-remote-server.crt
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCACertificatePath" id="SSLProxyCACertificatePath">SSLProxyCACertificatePath</a> <a name="sslproxycacertificatepath" id="sslproxycacertificatepath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded CA Certificates for 
Remote Server Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCACertificatePath <em>directory-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the directory where you keep the Certificates of
Certification Authorities (CAs) whose remote servers you deal with. These are used to
verify the remote server certificate on Remote Server Authentication.</p>
<p>
The files in this directory have to be PEM-encoded and are accessed through
hash filenames. So usually you can't just place the Certificate files
there: you also have to create symbolic links named
<em>hash-value</em><code>.N</code>. And you should always make sure this directory
contains the appropriate symbolic links. Use the <code>Makefile</code> which
comes with mod_ssl to accomplish this task.</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCACertificatePath /usr/local/apache2/conf/ssl.crt/
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCARevocationFile" id="SSLProxyCARevocationFile">SSLProxyCARevocationFile</a> <a name="sslproxycarevocationfile" id="sslproxycarevocationfile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded CA CRLs for 
Remote Server Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCARevocationFile <em>file-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the <em>all-in-one</em> file where you can
assemble the Certificate Revocation Lists (CRL) of Certification
Authorities (CA) whose <em>remote servers</em> you deal with. These are used
for Remote Server Authentication.  Such a file is simply the concatenation of
the various PEM-encoded CRL files, in order of preference. This can be
used alternatively and/or additionally to <code class="directive"><a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></code>.</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCARevocationFile /usr/local/apache2/conf/ssl.crl/ca-bundle-remote-server.crl
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCARevocationPath" id="SSLProxyCARevocationPath">SSLProxyCARevocationPath</a> <a name="sslproxycarevocationpath" id="sslproxycarevocationpath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded CA CRLs for 
Remote Server Auth</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCARevocationPath <em>directory-path</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the directory where you keep the Certificate Revocation
Lists (CRL) of Certification Authorities (CAs) whose remote servers you deal with.
These are used to revoke the remote server certificate on Remote Server Authentication.</p>
<p>
The files in this directory have to be PEM-encoded and are accessed through
hash filenames. So usually you have not only to place the CRL files there.
Additionally you have to create symbolic links named
<em>hash-value</em><code>.rN</code>. And you should always make sure this directory
contains the appropriate symbolic links. Use the <code>Makefile</code> which
comes with <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> to accomplish this task.</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCARevocationPath /usr/local/apache2/conf/ssl.crl/
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCheckPeerCN" id="SSLProxyCheckPeerCN">SSLProxyCheckPeerCN</a> <a name="sslproxycheckpeercn" id="sslproxycheckpeercn">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether to check the remote server certificates CN field
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCheckPeerCN on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyCheckPeerCN off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets whether the remote server certificates CN field is
compared against the hostname of the request URL. If both are not equal
a 502 status code (Bad Gateway) is sent.
</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCheckPeerCN on
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCheckPeerExpire" id="SSLProxyCheckPeerExpire">SSLProxyCheckPeerExpire</a> <a name="sslproxycheckpeerexpire" id="sslproxycheckpeerexpire">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether to check if remote server certificate is expired
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCheckPeerExpire on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyCheckPeerExpire off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets whether it is checked if the remote server certificate
is expired or not. If the check fails a 502 status code (Bad Gateway) is
sent.
</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyCheckPeerExpire on
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyCipherSuite" id="SSLProxyCipherSuite">SSLProxyCipherSuite</a> <a name="sslproxyciphersuite" id="sslproxyciphersuite">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Cipher Suite available for negotiation in SSL 
proxy handshake</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyCipherSuite <em>cipher-spec</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Equivalent to <code>SSLCipherSuite</code>, but for the proxy connection.
Please refer to <code class="directive"><a href="#sslciphersuite">SSLCipherSuite</a></code>
for additional information.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyEngine" id="SSLProxyEngine">SSLProxyEngine</a> <a name="sslproxyengine" id="sslproxyengine">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>SSL Proxy Engine Operation Switch</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyEngine on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyEngine off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive toggles the usage of the SSL/TLS Protocol Engine for proxy. This
is usually used inside a <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> section to enable SSL/TLS for proxy
usage in a particular virtual host. By default the SSL/TLS Protocol Engine is
disabled for proxy image both for the main server and all configured virtual hosts.</p>
<div class="example"><h3>Example</h3><p><code>
&lt;VirtualHost _default_:443&gt;<br />
SSLProxyEngine on<br />
...<br />
&lt;/VirtualHost&gt;
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyMachineCertificateFile" id="SSLProxyMachineCertificateFile">SSLProxyMachineCertificateFile</a> <a name="sslproxymachinecertificatefile" id="sslproxymachinecertificatefile">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File of concatenated PEM-encoded client certificates and keys to be used by the proxy</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyMachineCertificateFile <em>filename</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Not applicable</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the all-in-one file where you keep the certificates and
keys used for authentication of the proxy server to remote servers.
</p>
<p>
This referenced file is simply the concatenation of the various PEM-encoded
certificate files, in order of preference. Use this directive alternatively
or additionally to <code>SSLProxyMachineCertificatePath</code>.
</p>
<div class="warning">
<p>Currently there is no support for encrypted private keys</p>
</div>
<div class="example"><h3>Example</h3><p><code>
SSLProxyMachineCertificateFile /usr/local/apache2/conf/ssl.crt/proxy.pem
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyMachineCertificatePath" id="SSLProxyMachineCertificatePath">SSLProxyMachineCertificatePath</a> <a name="sslproxymachinecertificatepath" id="sslproxymachinecertificatepath">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory of PEM-encoded client certificates and keys to be used by the proxy</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyMachineCertificatePath <em>directory</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Not applicable</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the directory where you keep the certificates and
keys used for authentication of the proxy server to remote servers.
</p>
<p>The files in this directory must be PEM-encoded and are accessed through
hash filenames. Additionally, you must create symbolic links named
<code><em>hash-value</em>.N</code>. And you should always make sure this
directory contains the appropriate symbolic links. Use the Makefile which
comes with mod_ssl to accomplish this task.
</p>
<div class="warning">
<p>Currently there is no support for encrypted private keys</p>
</div>
<div class="example"><h3>Example</h3><p><code>
SSLProxyMachineCertificatePath /usr/local/apache2/conf/proxy.crt/
</code></p></div> 

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyProtocol" id="SSLProxyProtocol">SSLProxyProtocol</a> <a name="sslproxyprotocol" id="sslproxyprotocol">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure usable SSL protocol flavors for proxy usage</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyProtocol [+|-]<em>protocol</em> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyProtocol all</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>

<p>
This directive can be used to control the SSL protocol flavors mod_ssl should
use when establishing its server environment for proxy . It will only connect
to servers using one of the provided protocols.</p>
<p>Please refer to <code class="directive"><a href="#sslprotocol">SSLProtocol</a></code>
for additional information.
</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyVerify" id="SSLProxyVerify">SSLProxyVerify</a> <a name="sslproxyverify" id="sslproxyverify">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Type of remote server Certificate verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyVerify <em>level</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyVerify none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>

<p>When a proxy is configured to forward requests to a remote SSL
server, this directive can be used to configure certificate
verification of the remote server.  Notice that this directive can be
used both in per-server and per-directory context. In per-server
context it applies to the remote server authentication process used in
the standard SSL handshake when a connection is established by the
proxy. In per-directory context it forces a SSL renegotation with the
reconfigured remote server verification level after the HTTP request
was read but before the HTTP response is sent.</p>

<div class="warning">
<p>Note that even when certificate verification is enabled,
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> does <strong>not</strong> check whether the
<code>commonName</code> (hostname) attribute of the server certificate
matches the hostname used to connect to the server.  In other words,
the proxy does not guarantee that the SSL connection to the backend
server is "secure" beyond the fact that the certificate is signed by
one of the CAs configured using the
<code class="directive">SSLProxyCACertificatePath</code> and/or
<code class="directive">SSLProxyCACertificateFile</code> directives.</p>
</div>

<p>
The following levels are available for <em>level</em>:</p>
<ul>
<li><strong>none</strong>:
     no remote server Certificate is required at all</li>
<li><strong>optional</strong>:
     the remote server <em>may</em> present a valid Certificate</li>
<li><strong>require</strong>:
     the remote server <em>has to</em> present a valid Certificate</li>
<li><strong>optional_no_ca</strong>:
     the remote server may present a valid Certificate<br />
     but it need not to be (successfully) verifiable.</li>
</ul>
<p>In practice only levels <strong>none</strong> and
<strong>require</strong> are really interesting, because level
<strong>optional</strong> doesn't work with all servers and level
<strong>optional_no_ca</strong> is actually against the idea of
authentication (but can be used to establish SSL test pages, etc.)</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyVerify require
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLProxyVerifyDepth" id="SSLProxyVerifyDepth">SSLProxyVerifyDepth</a> <a name="sslproxyverifydepth" id="sslproxyverifydepth">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum depth of CA Certificates in Remote Server
Certificate verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLProxyVerifyDepth <em>number</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLProxyVerifyDepth 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets how deeply mod_ssl should verify before deciding that the
remote server does not have a valid certificate. Notice that this directive can be
used both in per-server and per-directory context. In per-server context it
applies to the client authentication process used in the standard SSL
handshake when a connection is established. In per-directory context it forces
a SSL renegotation with the reconfigured remote server verification depth after the
HTTP request was read but before the HTTP response is sent.</p>
<p>
The depth actually is the maximum number of intermediate certificate issuers,
i.e. the number of CA certificates which are max allowed to be followed while
verifying the remote server certificate. A depth of 0 means that self-signed
remote server certificates are accepted only, the default depth of 1 means
the remote server certificate can be self-signed or has to be signed by a CA
which is directly known to the server (i.e. the CA's certificate is under
<code class="directive"><a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></code>), etc.</p>
<div class="example"><h3>Example</h3><p><code>
SSLProxyVerifyDepth 10
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLRandomSeed" id="SSLRandomSeed">SSLRandomSeed</a> <a name="sslrandomseed" id="sslrandomseed">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Pseudo Random Number Generator (PRNG) seeding 
source</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLRandomSeed <em>context</em> <em>source</em> 
[<em>bytes</em>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This configures one or more sources for seeding the Pseudo Random Number
Generator (PRNG) in OpenSSL at startup time (<em>context</em> is
<code>startup</code>) and/or just before a new SSL connection is established
(<em>context</em> is <code>connect</code>). This directive can only be used
in the global server context because the PRNG is a global facility.</p>
<p>
The following <em>source</em> variants are available:</p>
<ul>
<li><code>builtin</code>
    <p> This is the always available builtin seeding source. It's usage
    consumes minimum CPU cycles under runtime and hence can be always used
    without drawbacks. The source used for seeding the PRNG contains of the
    current time, the current process id and (when applicable) a randomly
    choosen 1KB extract of the inter-process scoreboard structure of Apache.
    The drawback is that this is not really a strong source and at startup
    time (where the scoreboard is still not available) this source just
    produces a few bytes of entropy. So you should always, at least for the
    startup, use an additional seeding source.</p></li>
<li><code>file:/path/to/source</code>
    <p>
    This variant uses an external file <code>/path/to/source</code> as the
    source for seeding the PRNG. When <em>bytes</em> is specified, only the
    first <em>bytes</em> number of bytes of the file form the entropy (and
    <em>bytes</em> is given to <code>/path/to/source</code> as the first
    argument). When <em>bytes</em> is not specified the whole file forms the
    entropy (and <code>0</code> is given to <code>/path/to/source</code> as
    the first argument). Use this especially at startup time, for instance
    with an available <code>/dev/random</code> and/or
    <code>/dev/urandom</code> devices (which usually exist on modern Unix
    derivates like FreeBSD and Linux).</p>
    <p>
    <em>But be careful</em>: Usually <code>/dev/random</code> provides only as
    much entropy data as it actually has, i.e. when you request 512 bytes of
    entropy, but the device currently has only 100 bytes available two things
    can happen: On some platforms you receive only the 100 bytes while on
    other platforms the read blocks until enough bytes are available (which
    can take a long time). Here using an existing <code>/dev/urandom</code> is
    better, because it never blocks and actually gives the amount of requested
    data. The drawback is just that the quality of the received data may not
    be the best.</p>
    <p>
    On some platforms like FreeBSD one can even control how the entropy is
    actually generated, i.e. by which system interrupts. More details one can
    find under <em>rndcontrol(8)</em> on those platforms. Alternatively, when
    your system lacks such a random device, you can use tool
    like <a href="http://www.lothar.com/tech/crypto/">EGD</a>
    (Entropy Gathering Daemon) and run it's client program with the
    <code>exec:/path/to/program/</code> variant (see below) or use
    <code>egd:/path/to/egd-socket</code> (see below).</p></li>

<li><code>exec:/path/to/program</code>
    <p>
    This variant uses an external executable
    <code>/path/to/program</code> as the source for seeding the
    PRNG. When <em>bytes</em> is specified, only the first
    <em>bytes</em> number of bytes of its <code>stdout</code> contents
    form the entropy. When <em>bytes</em> is not specified, the
    entirety of the data produced on <code>stdout</code> form the
    entropy. Use this only at startup time when you need a very strong
    seeding with the help of an external program (for instance as in
    the example above with the <code>truerand</code> utility you can
    find in the mod_ssl distribution which is based on the AT&amp;T
    <em>truerand</em> library). Using this in the connection context
    slows down the server too dramatically, of course.  So usually you
    should avoid using external programs in that context.</p></li>
<li><code>egd:/path/to/egd-socket</code> (Unix only)
    <p>
    This variant uses the Unix domain socket of the
    external Entropy Gathering Daemon (EGD) (see <a href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech
    /crypto/</a>) to seed the PRNG. Use this if no random device exists
    on your platform.</p></li>
</ul>
<div class="example"><h3>Example</h3><p><code>
SSLRandomSeed startup builtin<br />
SSLRandomSeed startup file:/dev/random<br />
SSLRandomSeed startup file:/dev/urandom 1024<br />
SSLRandomSeed startup exec:/usr/local/bin/truerand 16<br />
SSLRandomSeed connect builtin<br />
SSLRandomSeed connect file:/dev/random<br />
SSLRandomSeed connect file:/dev/urandom 1024<br />
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLRenegBufferSize" id="SSLRenegBufferSize">SSLRenegBufferSize</a> <a name="sslrenegbuffersize" id="sslrenegbuffersize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Set the size for the SSL renegotiation buffer</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLRenegBufferSize <var>bytes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLRenegBufferSize 131072</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>

<p>If an SSL renegotiation is required in per-location context, for
example, any use of <code class="directive"><a href="#sslverifyclient">SSLVerifyClient</a></code> in a Directory or
Location block, then <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> must buffer any HTTP
request body into memory until the new SSL handshake can be performed.
This directive can be used to set the amount of memory that will be
used for this buffer. </p>

<div class="warning"><p>
Note that in many configurations, the client sending the request body
will be untrusted so a denial of service attack by consumption of
memory must be considered when changing this configuration setting.
</p></div>

<div class="example"><h3>Example</h3><p><code>
SSLRenegBufferSize 262144
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLRequire" id="SSLRequire">SSLRequire</a> <a name="sslrequire" id="sslrequire">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Allow access only when an arbitrarily complex 
boolean expression is true</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLRequire <em>expression</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive specifies a general access requirement which has to be
fulfilled in order to allow access. It is a very powerful directive because the
requirement specification is an arbitrarily complex boolean expression
containing any number of access checks.</p>
<div class="warning">
<p>The implementation of <code>SSLRequire</code> is not thread safe.  
   Using <code>SSLRequire</code> inside <code>.htaccess</code> files
   on a threaded <a href="../mpm.html">MPM</a> may cause random crashes.
</p>
</div>
<p>
The <em>expression</em> must match the following syntax (given as a BNF
grammar notation):</p>
<blockquote>
<pre>
expr     ::= "<strong>true</strong>" | "<strong>false</strong>"
           | "<strong>!</strong>" expr
           | expr "<strong>&amp;&amp;</strong>" expr
           | expr "<strong>||</strong>" expr
           | "<strong>(</strong>" expr "<strong>)</strong>"
           | comp

comp     ::= word "<strong>==</strong>" word | word "<strong>eq</strong>" word
           | word "<strong>!=</strong>" word | word "<strong>ne</strong>" word
           | word "<strong>&lt;</strong>"  word | word "<strong>lt</strong>" word
           | word "<strong>&lt;=</strong>" word | word "<strong>le</strong>" word
           | word "<strong>&gt;</strong>"  word | word "<strong>gt</strong>" word
           | word "<strong>&gt;=</strong>" word | word "<strong>ge</strong>" word
           | word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
           | word "<strong>in</strong>" "<strong>OID(</strong>" word "<strong>)</strong>"
           | word "<strong>=~</strong>" regex
           | word "<strong>!~</strong>" regex

wordlist ::= word
           | wordlist "<strong>,</strong>" word

word     ::= digit
           | cstring
           | variable
           | function

digit    ::= [0-9]+
cstring  ::= "..."
variable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
function ::= funcname "<strong>(</strong>" funcargs "<strong>)</strong>"
</pre>
</blockquote>
<p>while for <code>varname</code> any variable from <a href="#table3">Table 3</a> can be used. Finally for
<code>funcname</code> the following functions are available:</p>
<ul>
<li><code>file(</code><em>filename</em><code>)</code>
    <p>
    This function takes one string argument and expands to the contents of the
    file. This is especially useful for matching this contents against a
    regular expression, etc.</p>
</li>
</ul>
<p>Notice that <em>expression</em> is first parsed into an internal machine
representation and then evaluated in a second step. Actually, in Global and
Per-Server Class context <em>expression</em> is parsed at startup time and
at runtime only the machine representation is executed. For Per-Directory
context this is different: here <em>expression</em> has to be parsed and
immediately executed for every request.</p>
<div class="example"><h3>Example</h3><p><code>
SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \<br />
            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \<br />
            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \<br />
            and %{TIME_WDAY} &gt;= 1 and %{TIME_WDAY} &lt;= 5 \<br />
            and %{TIME_HOUR} &gt;= 8 and %{TIME_HOUR} &lt;= 20       ) \<br />
           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
</code></p></div>
<p>The <code>OID()</code> function expects to find zero or more instances
of the given OID in the client certificate, and compares the left-hand side
string against the value of matching OID attributes. Every matching OID is
checked, until a match is found.
</p>

<p><em>Standard CGI/1.0 and Apache variables:</em></p>
<pre>
HTTP_USER_AGENT        PATH_INFO             AUTH_TYPE
HTTP_REFERER           QUERY_STRING          SERVER_SOFTWARE
HTTP_COOKIE            REMOTE_HOST           API_VERSION
HTTP_FORWARDED         REMOTE_IDENT          TIME_YEAR
HTTP_HOST              IS_SUBREQ             TIME_MON
HTTP_PROXY_CONNECTION  DOCUMENT_ROOT         TIME_DAY
HTTP_ACCEPT            SERVER_ADMIN          TIME_HOUR
HTTP:headername        SERVER_NAME           TIME_MIN
THE_REQUEST            SERVER_PORT           TIME_SEC
REQUEST_METHOD         SERVER_PROTOCOL       TIME_WDAY
REQUEST_SCHEME         REMOTE_ADDR           TIME
REQUEST_URI            REMOTE_USER           ENV:<strong>variablename</strong>
REQUEST_FILENAME
</pre>
<p><em>SSL-related variables:</em></p>
<pre>
HTTPS                  SSL_CLIENT_M_VERSION   SSL_SERVER_M_VERSION
                       SSL_CLIENT_M_SERIAL    SSL_SERVER_M_SERIAL
SSL_PROTOCOL           SSL_CLIENT_V_START     SSL_SERVER_V_START
SSL_SESSION_ID         SSL_CLIENT_V_END       SSL_SERVER_V_END
SSL_CIPHER             SSL_CLIENT_S_DN        SSL_SERVER_S_DN
SSL_CIPHER_EXPORT      SSL_CLIENT_S_DN_C      SSL_SERVER_S_DN_C
SSL_CIPHER_ALGKEYSIZE  SSL_CLIENT_S_DN_ST     SSL_SERVER_S_DN_ST
SSL_CIPHER_USEKEYSIZE  SSL_CLIENT_S_DN_L      SSL_SERVER_S_DN_L
SSL_VERSION_LIBRARY    SSL_CLIENT_S_DN_O      SSL_SERVER_S_DN_O
SSL_VERSION_INTERFACE  SSL_CLIENT_S_DN_OU     SSL_SERVER_S_DN_OU
                       SSL_CLIENT_S_DN_CN     SSL_SERVER_S_DN_CN
                       SSL_CLIENT_S_DN_T      SSL_SERVER_S_DN_T
                       SSL_CLIENT_S_DN_I      SSL_SERVER_S_DN_I
                       SSL_CLIENT_S_DN_G      SSL_SERVER_S_DN_G
                       SSL_CLIENT_S_DN_S      SSL_SERVER_S_DN_S
                       SSL_CLIENT_S_DN_D      SSL_SERVER_S_DN_D
                       SSL_CLIENT_S_DN_UID    SSL_SERVER_S_DN_UID
                       SSL_CLIENT_S_DN_Email  SSL_SERVER_S_DN_Email
                       SSL_CLIENT_I_DN        SSL_SERVER_I_DN
                       SSL_CLIENT_I_DN_C      SSL_SERVER_I_DN_C
                       SSL_CLIENT_I_DN_ST     SSL_SERVER_I_DN_ST
                       SSL_CLIENT_I_DN_L      SSL_SERVER_I_DN_L
                       SSL_CLIENT_I_DN_O      SSL_SERVER_I_DN_O
                       SSL_CLIENT_I_DN_OU     SSL_SERVER_I_DN_OU
                       SSL_CLIENT_I_DN_CN     SSL_SERVER_I_DN_CN
                       SSL_CLIENT_I_DN_T      SSL_SERVER_I_DN_T
                       SSL_CLIENT_I_DN_I      SSL_SERVER_I_DN_I
                       SSL_CLIENT_I_DN_G      SSL_SERVER_I_DN_G
                       SSL_CLIENT_I_DN_S      SSL_SERVER_I_DN_S
                       SSL_CLIENT_I_DN_D      SSL_SERVER_I_DN_D
                       SSL_CLIENT_I_DN_UID    SSL_SERVER_I_DN_UID
                       SSL_CLIENT_I_DN_Email  SSL_SERVER_I_DN_Email
                       SSL_CLIENT_A_SIG       SSL_SERVER_A_SIG
                       SSL_CLIENT_A_KEY       SSL_SERVER_A_KEY
                       SSL_CLIENT_CERT        SSL_SERVER_CERT
                       SSL_CLIENT_CERT_CHAIN_<strong>n</strong>
                       SSL_CLIENT_VERIFY
</pre>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLRequireSSL" id="SSLRequireSSL">SSLRequireSSL</a> <a name="sslrequiressl" id="sslrequiressl">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Deny access when SSL is not used for the 
HTTP request</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLRequireSSL</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive forbids access unless HTTP over SSL (i.e. HTTPS) is enabled for
the current connection. This is very handy inside the SSL-enabled virtual
host or directories for defending against configuration errors that expose
stuff that should be protected. When this directive is present all requests
are denied which are not using SSL.</p>
<div class="example"><h3>Example</h3><p><code>
SSLRequireSSL
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLSessionCache" id="SSLSessionCache">SSLSessionCache</a> <a name="sslsessioncache" id="sslsessioncache">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Type of the global/inter-process SSL Session 
Cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLSessionCache <em>type</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLSessionCache none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This configures the storage type of the global/inter-process SSL Session
Cache. This cache is an optional facility which speeds up parallel request
processing. For requests to the same server process (via HTTP keep-alive),
OpenSSL already caches the SSL session information locally. But because modern
clients request inlined images and other data via parallel requests (usually
up to four parallel requests are common) those requests are served by
<em>different</em> pre-forked server processes. Here an inter-process cache
helps to avoid unneccessary session handshakes.</p>
<p>
The following four storage <em>type</em>s are currently supported:</p>
<ul>
<li><code>none</code>

    <p>This disables the global/inter-process Session Cache.  This
    will incur a noticeable speed penalty and may cause problems if
    using certain browsers, particularly if client certificates are
    enabled.  This setting is not recommended.</p></li>

<li><code>nonenotnull</code>

    <p>This disables any global/inter-process Session Cache.  However
    it does force OpenSSL to send a non-null session ID to
    accommodate buggy clients that require one.</p></li>

<li><code>dbm:/path/to/datafile</code>

    <p>This makes use of a DBM hashfile on the local disk to
    synchronize the local OpenSSL memory caches of the server
    processes.  This session cache may suffer reliability issues under
    high load.</p></li>

<li><code>shm:/path/to/datafile</code>[<code>(</code><em>size</em><code>)</code>]

    <p>This makes use of a high-performance cyclic buffer
    (approx. <em>size</em> bytes in size) inside a shared memory
    segment in RAM (established via <code>/path/to/datafile</code>) to
    synchronize the local OpenSSL memory caches of the server
    processes.  This is the recommended session cache.</p></li>

<li><code>dc:UNIX:/path/to/socket</code>

    <p>This makes use of the <a href="http://www.distcache.org/">distcache</a> distributed session
    caching libraries.  The argument should specify the location of
    the server or proxy to be used using the distcache address syntax;
    for example, <code>UNIX:/path/to/socket</code> specifies a UNIX
    domain socket (typically a local dc_client proxy);
    <code>IP:server.example.com:9001</code> specifies an IP
    address.</p></li>

</ul>
<div class="example"><h3>Examples</h3><p><code>
SSLSessionCache dbm:/usr/local/apache/logs/ssl_gcache_data<br />
SSLSessionCache shm:/usr/local/apache/logs/ssl_gcache_data(512000)
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLSessionCacheTimeout" id="SSLSessionCacheTimeout">SSLSessionCacheTimeout</a> <a name="sslsessioncachetimeout" id="sslsessioncachetimeout">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of seconds before an SSL session expires
in the Session Cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLSessionCacheTimeout <em>seconds</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLSessionCacheTimeout 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the timeout in seconds for the information stored in the
global/inter-process SSL Session Cache and the OpenSSL internal memory cache.
It can be set as low as 15 for testing, but should be set to higher
values like 300 in real life.</p>
<div class="example"><h3>Example</h3><p><code>
SSLSessionCacheTimeout 600
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLStrictSNIVHostCheck" id="SSLStrictSNIVHostCheck">SSLStrictSNIVHostCheck</a> <a name="sslstrictsnivhostcheck" id="sslstrictsnivhostcheck">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether to allow non SNI clients to access a name based virtual
host.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLStrictSNIVHostCheck on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLStrictSNIVHostCheck off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.12 and later</td></tr>
</table>
<p>
This directive sets whether a non SNI client is allowed to access a name based
virtual host. If set to <code>on</code> in the non default name based virtual
host, non SNI clients are not allowed to access this particular virtual host.
If set to <code>on</code> in the default name based virtual host, non SNI
clients are not allowed to access any name based virtual host belonging to
this IP / port combination.
</p>

<div class="warning"><p>
This option is only available if httpd was compiled against an SNI capable
version of OpenSSL.
</p></div>

<div class="example"><h3>Example</h3><p><code>
SSLStrictSNIVHostCheck on
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLUserName" id="SSLUserName">SSLUserName</a> <a name="sslusername" id="sslusername">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Variable name to determine user name</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLUserName <em>varname</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.0.51 and later</td></tr>
</table>
<p>
This directive sets the "user" field in the Apache request object.
This is used by lower modules to identify the user with a character
string. In particular, this may cause the environment variable
<code>REMOTE_USER</code> to be set.  The <em>varname</em> can be
any of the <a href="#envvars">SSL environment variables</a>.</p>

<p>Note that this directive has no effect if the
<code>FakeBasic</code> option is used (see <a href="#ssloptions">SSLOptions</a>).</p>

<div class="example"><h3>Example</h3><p><code>
SSLUserName SSL_CLIENT_S_DN_CN
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLVerifyClient" id="SSLVerifyClient">SSLVerifyClient</a> <a name="sslverifyclient" id="sslverifyclient">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Type of Client Certificate verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLVerifyClient <em>level</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLVerifyClient none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets the Certificate verification level for the Client
Authentication. Notice that this directive can be used both in per-server and
per-directory context. In per-server context it applies to the client
authentication process used in the standard SSL handshake when a connection is
established. In per-directory context it forces a SSL renegotation with the
reconfigured client verification level after the HTTP request was read but
before the HTTP response is sent.</p>
<p>
The following levels are available for <em>level</em>:</p>
<ul>
<li><strong>none</strong>:
     no client Certificate is required at all</li>
<li><strong>optional</strong>:
     the client <em>may</em> present a valid Certificate</li>
<li><strong>require</strong>:
     the client <em>has to</em> present a valid Certificate</li>
<li><strong>optional_no_ca</strong>:
     the client may present a valid Certificate<br />
     but it need not to be (successfully) verifiable.</li>
</ul>
<p>In practice only levels <strong>none</strong> and
<strong>require</strong> are really interesting, because level
<strong>optional</strong> doesn't work with all browsers and level
<strong>optional_no_ca</strong> is actually against the idea of
authentication (but can be used to establish SSL test pages, etc.)</p>
<div class="example"><h3>Example</h3><p><code>
SSLVerifyClient require
</code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SSLVerifyDepth" id="SSLVerifyDepth">SSLVerifyDepth</a> <a name="sslverifydepth" id="sslverifydepth">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum depth of CA Certificates in Client 
Certificate verification</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>SSLVerifyDepth <em>number</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>SSLVerifyDepth 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
This directive sets how deeply mod_ssl should verify before deciding that the
clients don't have a valid certificate. Notice that this directive can be
used both in per-server and per-directory context. In per-server context it
applies to the client authentication process used in the standard SSL
handshake when a connection is established. In per-directory context it forces
a SSL renegotation with the reconfigured client verification depth after the
HTTP request was read but before the HTTP response is sent.</p>
<p>
The depth actually is the maximum number of intermediate certificate issuers,
i.e. the number of CA certificates which are max allowed to be followed while
verifying the client certificate. A depth of 0 means that self-signed client
certificates are accepted only, the default depth of 1 means the client
certificate can be self-signed or has to be signed by a CA which is directly
known to the server (i.e. the CA's certificate is under
<code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>), etc.</p>
<div class="example"><h3>Example</h3><p><code>
SSLVerifyDepth 10
</code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                 mod/mod_status.html                                                                                 100644       0       0        24121 11256641270  12060  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_status - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_status</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Sunucu etkinliği ve başarımı hakkında bilgi sağlar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>status_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_status.c</td></tr></table>
<h3>Özet</h3>

    <p><code>mod_status</code> modülü, sunucu yöneticisinin, HTTP sunucusunun
      ne kadar başarılı olduğu hakkında bilgi edinmesini sağlar. Bilgiler,
      kolayca okunabilen bir HTML sayfası olarak sunulur ve o anki sunucu
      istatistiklerinden oluşur. Gerekirse sayfa kendiliğinden tazelenebilir
      (uyumlu bir tarayıcı gerekir). Diğer sayfa o anki sunucu durumunu makine
      tarafından okunabilen biçimde listeler.</p>

    <p>Sunulan bilgiler şunlardır:</p>

    <ul>
      <li>İstekleri sunan çocuk süreç sayısı</li>

      <li>Boştaki çocuk süreçlerin sayısı</li>

      <li>Her çocuk sürecin durumu, çocuk sürecin işleme tabi tuttuğu istek
        sayısı ve sunduğu bayt sayısı (*)</li>

      <li>Toplam erişim sayısı ve sunulan toplam bayt sayısı (*)</li>

      <li>Sunucunun kaç kere başlatıldığı/yeniden başlatıldığı ve ne kadar
        zamandır çalışmakta olduğu</li>

      <li>Saniyedeki ortalama istek sayısı, saniyedeki bayt sayısı ve istek
        başına ortalama bayt sayısı (*)</li>

      <li>Apache tarafınan toplamda ve her çocuk süreç tarafından ayrı ayrı
        kullanılan o anki işlemci zamanı yüzdesi (*)</li>

      <li>O an işlem görmekte olan konakların ve isteklerin sayısı (*)</li>
    </ul>

    <p>"(*)" imli bilgiler sadece <code class="directive"><a href="#extendedstatus">ExtendedStatus</a></code> yönergesinin değeri <code>On</code> olduğu
      takdirde mevcuttur.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#extendedstatus">ExtendedStatus</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#seerequesttail">SeeRequestTail</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Durum Bilgisi Desteğinin Etkinleştirilmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#autoupdate">Sayfanın Tazelenmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#machinereadable">Makine Tarafından Okunabilen Durum Dosyası</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Durum Bilgisi Desteğinin Etkinleştirilmesi</a></h2>
    

    <p>Durum raporları, sadece mesela.dom alanından ve sadece tarayıcılar için
      etkin kılınmak istenirse <code>httpd.conf</code> dosyasına şu satırlar
      eklenebilir:</p>

    <div class="example"><p><code>
      &lt;Location /server-status&gt;<br />
      <span class="indent">
        SetHandler server-status<br />
        <br />
        Order Deny,Allow<br />
        Deny from all<br />
        Allow from .mesela.dom<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

    <p>Sunucu istatistiklerine tarayıcınızla erişmek isterseniz,
      <code>http://sunucunuzun.ismi.buraya/server-status</code>
      şeklinde bir istek yapabilirsiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="autoupdate" id="autoupdate">Sayfanın Tazelenmesi</a></h2>

    
    <p>Tarayıcınız “tazeleme” yeteneğine sahipse durum sayfası düzenli
      aralıklarla güncellenecektir. Sayfanın N saniyede bir güncellenmesini
      isterseniz isteği şöyle yapabilirsiniz:<br />
      <code>http://sunucunuzun.ismi.buraya/server-status?refresh=N</code></p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="machinereadable" id="machinereadable">Makine Tarafından Okunabilen Durum Dosyası</a></h2>

    
    <p>Durum dosyasının makine tarafından okunabilen sürümüne
      <code>http://sunucunuzun.ismi.buraya/server-status?auto</code>
      şeklinde bir istek yaparak erişebilirsiniz. Bu, kendiliğinden çalıştığı
      takdirde yararlıdır; Apache dağıtımının <code>/support</code> dizininde
      bulunan <code>log_server_status</code> isimli perl betiğine bakınız.</p>

    <div class="note"><h3>Güvenlik</h3>
      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> sunucu içinde derlendiği takdirde
       istatistikleri raporlama yeteneği dizin içi yapılandırma dosyaları
       (<code>.htaccess</code> gibi) dahil <em>tüm</em> yapılandırma dosyaları
       için kullanılabilir olacaktır. Bu durum güvenlik ile ilgili olarak
       siteniz için içinden çıkılması güç durumlara yol açabilir (çapanoğlu
       durumu).</div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExtendedStatus" id="ExtendedStatus">ExtendedStatus</a> <a name="extendedstatus" id="extendedstatus">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Her istekte ek durum bilgisinin toplanmasını sağlar.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ExtendedStatus On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ExtendedStatus Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_status</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 1.3.2 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu ayarlama sunucunun tamamını etkiler ve sanal konaklar için ayrı ayrı
      etkin kılınamaz veya iptal edilemez. Ek durum bilgisinin toplanması
      sunucuyu yavaşlatabilir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SeeRequestTail" id="SeeRequestTail">SeeRequestTail</a> <a name="seerequesttail" id="seerequesttail">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsteğin kendisi 63 karakterden uzun olduğunda, isteğin ilk 63
karakterinin mi yoksa son 63 karakterinin mi gösterileceğini belirler.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SeeRequestTail On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>SeeRequestTail Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_status</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.2.7 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code>mod_status</code>, <code>ExtendedStatus On</code> olduğunda
      isteğin kendisini de gösterir. Tarihsel nedenlerle, göstermek için
      isteğin sadece 63 karakteri saklanır. Bu yönerge ilk 63 karakterin mi
      yoksa son 63 karakterin mi saklanacağını belirtmek için kullanılır. Bu,
      elbette, istek 64 karakterlik veya daha uzunsa uygulanır.</p>

    <p>Apache şöyle bir istek alsaydı:<br /><code>GET&nbsp;
      /disk1/storage/apache/htdocs/images/imagestore1/food/apples.jpg&nbsp;
      HTTP/1.1</code><br /><code>mod_status</code> bu isteği şöyle gösterirdi:
    </p>

    <table class="bordered">
      <tr>
        <th>Off (öntanımlı)</th>
        <td>GET&nbsp;/disk1/storage/apache/htdocs/images/imagestore1/food/apples</td>
      </tr>
      <tr>
        <th>On</th>
        <td>orage/apache/htdocs/images/imagestore1/food/apples.jpg&nbsp;HTTP/1.1</td>
      </tr>
    </table>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                               mod/mod_substitute.html                                                                             100644       0       0        13060 11256641270  12750  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_substitute - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_substitute</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Perform search and replace operations on response bodies</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>substitute_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_substitute.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.7 and later</td></tr></table>
<h3>Summary</h3>

    <p><code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> provides a mechanism to perform
    both regular expression and fixed string substitutions on
    response bodies.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#substitute">Substitute</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Substitute" id="Substitute">Substitute</a> <a name="substitute" id="substitute">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Pattern to filter the response content</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Substitute <var>s/pattern/substitution/[infq]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_substitute</td></tr>
</table>
    <p>The <code class="directive">Substitute</code> directive specifies a
    search and replace pattern to apply to the response body.</p>
    
    <p>The meaning of the pattern can be modified by using any
    combination of these flags:</p>
    
    <dl>
        <dt><code>i</code></dt>
        <dd>Perform a case-insensitive match.</dd>
        <dt><code>n</code></dt>
        <dd>By default the pattern is treated as a regular expression.
        Using the <code>n</code> flag forces the pattern to be treated
        as a fixed string.</dd>
        <dt><code>f</code></dt>
        <dd>The <code>f</code> flag causes mod_substitute to flatten the
        result of a substitution allowing for later substitutions to
        take place on the boundary of this one. This is the default.</dd>
        <dt><code>q</code></dt>
        <dd>The <code>q</code> flag causes mod_substitute to not
        flatten the buckets after each substitution. This can
        result in much faster response and a decrease in memory
        utilization, but should only be used if there is no possibility
        that the result of one substitution will ever match a pattern
        or regex of a subsequent one.</dd>
    </dl>
    
    <div class="example"><h3>Example</h3><p><code>
        &lt;Location /&gt;
        <span class="indent">
            AddOutputFilterByType SUBSTITUTE text/html<br />
            Substitute s/foo/bar/ni<br />
        </span>
        &lt;/Location&gt;
    </code></p></div>
    
    <p>If either the pattern or the substitution contain a slash
    character then an alternative delimiter should be used:</p>
    
    <div class="example"><h3>Example of using an alternate delimiter</h3><p><code>
        &lt;Location /&gt;
        <span class="indent">
            AddOutputFilterByType SUBSTITUTE text/html<br />
            Substitute "s|&lt;BR */?&gt;|&lt;br /&gt;|i"
        </span>
        &lt;/Location&gt;
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                mod/mod_suexec.html                                                                                 100644       0       0        11004 11256641270  12025  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_suexec - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_suexec</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>CGI betiklerinin belli bir kullanıcı ve grubun aidiyetinde
çalışmasını mümkün kılar.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>suexec_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_suexec.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0 ve sonrasında mevcuttur.</td></tr></table>
<h3>Özet</h3>

    <p>Bu modül <code class="program"><a href="../programs/suexec.html">suexec</a></code> programı ile birlikte CGI
      betiklerinin belli bir kullanıcı ve grubun aidiyetinde çalışmasını
      mümkün kılar.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#suexecusergroup">SuexecUserGroup</a></li>
</ul>
<h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../suexec.html">SuEXEC Desteği</a></li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SuexecUserGroup" id="SuexecUserGroup">SuexecUserGroup</a> <a name="suexecusergroup" id="suexecusergroup">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>CGI betiklerini çalıştıracak kullanıcı ve grup belirtilir.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SuexecUserGroup <em>Kullanıcı Grup</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_suexec</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">SuexecUserGroup</code> yönergesi CGI programlarını
      çalıştıracak kullanıcı ve grubu belirtmeye yarar. CGI harici istekler
      hala <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> yönergesinde
      belirtilen kullanıcı tarafından yerine getirilir. Bu yönerge,  Apache
      1.3 yapılandırmasında sanal konak bölümlerindeki <code>User</code> ve
      <code>Group</code> yönergelerinin yerini almak üzere tasarlanmıştır.</p>

    <div class="example"><h3>Örnek</h3><p><code>
    
    SuexecUserGroup nobody nogroup
    </code></p></div>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            mod/mod_unique_id.html                                                                              100644       0       0        26312 11256641270  12523  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_unique_id - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_unique_id</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Provides an environment variable with a unique
identifier for each request</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>unique_id_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_unique_id.c</td></tr></table>
<h3>Summary</h3>


    <p>This module provides a magic token for each request which is
    guaranteed to be unique across "all" requests under very
    specific conditions. The unique identifier is even unique
    across multiple machines in a properly configured cluster of
    machines. The environment variable <code>UNIQUE_ID</code> is
    set to the identifier for each request. Unique identifiers are
    useful for various reasons which are beyond the scope of this
    document.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<p>This module provides no
            directives.</p>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#theory">Theory</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="theory" id="theory">Theory</a></h2>
    

    <p>First a brief recap of how the Apache server works on Unix
    machines. This feature currently isn't supported on Windows NT.
    On Unix machines, Apache creates several children, the children
    process requests one at a time. Each child can serve multiple
    requests in its lifetime. For the purpose of this discussion,
    the children don't share any data with each other. We'll refer
    to the children as <dfn>httpd processes</dfn>.</p>

    <p>Your website has one or more machines under your
    administrative control, together we'll call them a cluster of
    machines. Each machine can possibly run multiple instances of
    Apache. All of these collectively are considered "the
    universe", and with certain assumptions we'll show that in this
    universe we can generate unique identifiers for each request,
    without extensive communication between machines in the
    cluster.</p>

    <p>The machines in your cluster should satisfy these
    requirements. (Even if you have only one machine you should
    synchronize its clock with NTP.)</p>

    <ul>
      <li>The machines' times are synchronized via NTP or other
      network time protocol.</li>

      <li>The machines' hostnames all differ, such that the module
      can do a hostname lookup on the hostname and receive a
      different IP address for each machine in the cluster.</li>
    </ul>

    <p>As far as operating system assumptions go, we assume that
    pids (process ids) fit in 32-bits. If the operating system uses
    more than 32-bits for a pid, the fix is trivial but must be
    performed in the code.</p>

    <p>Given those assumptions, at a single point in time we can
    identify any httpd process on any machine in the cluster from
    all other httpd processes. The machine's IP address and the pid
    of the httpd process are sufficient to do this. So in order to
    generate unique identifiers for requests we need only
    distinguish between different points in time.</p>

    <p>To distinguish time we will use a Unix timestamp (seconds
    since January 1, 1970 UTC), and a 16-bit counter. The timestamp
    has only one second granularity, so the counter is used to
    represent up to 65536 values during a single second. The
    quadruple <em>( ip_addr, pid, time_stamp, counter )</em> is
    sufficient to enumerate 65536 requests per second per httpd
    process. There are issues however with pid reuse over time, and
    the counter is used to alleviate this issue.</p>

    <p>When an httpd child is created, the counter is initialized
    with ( current microseconds divided by 10 ) modulo 65536 (this
    formula was chosen to eliminate some variance problems with the
    low order bits of the microsecond timers on some systems). When
    a unique identifier is generated, the time stamp used is the
    time the request arrived at the web server. The counter is
    incremented every time an identifier is generated (and allowed
    to roll over).</p>

    <p>The kernel generates a pid for each process as it forks the
    process, and pids are allowed to roll over (they're 16-bits on
    many Unixes, but newer systems have expanded to 32-bits). So
    over time the same pid will be reused. However unless it is
    reused within the same second, it does not destroy the
    uniqueness of our quadruple. That is, we assume the system does
    not spawn 65536 processes in a one second interval (it may even
    be 32768 processes on some Unixes, but even this isn't likely
    to happen).</p>

    <p>Suppose that time repeats itself for some reason. That is,
    suppose that the system's clock is screwed up and it revisits a
    past time (or it is too far forward, is reset correctly, and
    then revisits the future time). In this case we can easily show
    that we can get pid and time stamp reuse. The choice of
    initializer for the counter is intended to help defeat this.
    Note that we really want a random number to initialize the
    counter, but there aren't any readily available numbers on most
    systems (<em>i.e.</em>, you can't use rand() because you need
    to seed the generator, and can't seed it with the time because
    time, at least at one second resolution, has repeated itself).
    This is not a perfect defense.</p>

    <p>How good a defense is it? Suppose that one of your machines
    serves at most 500 requests per second (which is a very
    reasonable upper bound at this writing, because systems
    generally do more than just shovel out static files). To do
    that it will require a number of children which depends on how
    many concurrent clients you have. But we'll be pessimistic and
    suppose that a single child is able to serve 500 requests per
    second. There are 1000 possible starting counter values such
    that two sequences of 500 requests overlap. So there is a 1.5%
    chance that if time (at one second resolution) repeats itself
    this child will repeat a counter value, and uniqueness will be
    broken. This was a very pessimistic example, and with real
    world values it's even less likely to occur. If your system is
    such that it's still likely to occur, then perhaps you should
    make the counter 32 bits (by editing the code).</p>

    <p>You may be concerned about the clock being "set back" during
    summer daylight savings. However this isn't an issue because
    the times used here are UTC, which "always" go forward. Note
    that x86 based Unixes may need proper configuration for this to
    be true -- they should be configured to assume that the
    motherboard clock is on UTC and compensate appropriately. But
    even still, if you're running NTP then your UTC time will be
    correct very shortly after reboot.</p>

    <p>The <code>UNIQUE_ID</code> environment variable is
    constructed by encoding the 112-bit (32-bit IP address, 32 bit
    pid, 32 bit time stamp, 16 bit counter) quadruple using the
    alphabet <code>[A-Za-z0-9@-]</code> in a manner similar to MIME
    base64 encoding, producing 19 characters. The MIME base64
    alphabet is actually <code>[A-Za-z0-9+/]</code> however
    <code>+</code> and <code>/</code> need to be specially encoded
    in URLs, which makes them less desirable. All values are
    encoded in network byte ordering so that the encoding is
    comparable across architectures of different byte ordering. The
    actual ordering of the encoding is: time stamp, IP address,
    pid, counter. This ordering has a purpose, but it should be
    emphasized that applications should not dissect the encoding.
    Applications should treat the entire encoded
    <code>UNIQUE_ID</code> as an opaque token, which can be
    compared against other <code>UNIQUE_ID</code>s for equality
    only.</p>

    <p>The ordering was chosen such that it's possible to change
    the encoding in the future without worrying about collision
    with an existing database of <code>UNIQUE_ID</code>s. The new
    encodings should also keep the time stamp as the first element,
    and can otherwise use the same alphabet and bit length. Since
    the time stamps are essentially an increasing sequence, it's
    sufficient to have a <em>flag second</em> in which all machines
    in the cluster stop serving and request, and stop using the old
    encoding format. Afterwards they can resume requests and begin
    issuing the new encodings.</p>

    <p>This we believe is a relatively portable solution to this
    problem. It can be extended to multithreaded systems like
    Windows NT, and can grow with future needs. The identifiers
    generated have essentially an infinite life-time because future
    identifiers can be made longer as required. Essentially no
    communication is required between machines in the cluster (only
    NTP synchronization is required, which is low overhead), and no
    communication between httpd processes is required (the
    communication is implicit in the pid value assigned by the
    kernel). In very specific situations the identifier can be
    shortened, but more information needs to be assumed (for
    example the 32-bit IP address is overkill for any site, but
    there is no portable shorter replacement for it). </p>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                      mod/mod_userdir.html                                                                                100644       0       0        20737 11256641270  12223  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_userdir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_userdir</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Kullanıcılara özel dizinler</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>userdir_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_userdir.c</td></tr></table>
<h3>Özet</h3>

<p>Bu modül kullanıcılara özel dizinlere
  <code>http://mesela.dom/~kullanıcı/</code> sözdizimi kullanılarak
  erişilebilmesini mümkün kılar.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#userdir">UserDir</a></li>
</ul>
<h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li>
  <a href="../urlmapping.html">URL’lerin Dosya Sistemi ile Eşleştirilmesi</a>
</li>
<li>
  <a href="../howto/public_html.html">public_html eğitmeni</a>
</li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="UserDir" id="UserDir">UserDir</a> <a name="userdir" id="userdir">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Kullanıcıya özel dizinlerin yeri</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>UserDir <em>dizin</em> [<em>dizin</em>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Temel</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_userdir</td></tr>
</table>

    <p><code class="directive">UserDir</code> yönergesi, bir kullanıcıya ait bir
      belge için bir istek yapıldığında, isteğin kullanıcının ev dizininde
      bulunan belli bir dizinden karşılanmasını sağlar.
      <code><em>dizin</em></code> olarak şunlar belirtilebilir:</p>

    <ul>
      <li>Dizinin ismi veya aşağıdakiler gibi bir kalıp.</li>

      <li><code>disabled</code> anahtar sözcüğü. <code>enabled</code> anahtar
        sözcüğü ile sonradan etkin kılınmadıkça <em>tüm</em> kullanıcı-dizin
        dönüşümlerini iptal eder (aşağıya bakınız).</li>

      <li><code>disabled</code> anahtar sözcüğünü takibeden boşluk ayraçlı
        kullanıcı isimleri listesi. Bu listede yer alan kullanıcı isimlerine,
        sonradan bir <code>enabled</code> listesinde görünse bile, dizin
        dönüşümleri <em>asla</em> uygulanmaz.</li>

      <li><code>enabled</code> anahtar sözcüğünü takibeden boşluk ayraçlı
        kullanıcı isimleri listesi. Genel bir iptal sözkonusu olsa bile,
        kullanıcı ismi bir <code>disabled</code> listesinde yer almadıkça, bu
        listede yer alan dizinlere dönüşüm uygulanır.</li>
    </ul>

    <p><code>Userdir</code> yönergesinde ne <code>enabled</code> ne de
      <code>disabled</code> varsa, argüman bir dosya ismi kalıbı olarak ele
      alınır ve kullanıcı belge kök dizininin yolunu oluşturmakta kullanılır.
      <code>http://mesela.dom/~ali/bir/iki.html</code> şöyle dönüştürülür:</p>

    <table>
      <tr><th>Kullanılan UserDir yönergesi&nbsp;&nbsp;&nbsp;&nbsp;</th>
          <th>Elde edilen yol</th></tr>
      <tr><td>UserDir public_html</td>
          <td>~ali/public_html/bir/iki.html</td></tr>
      <tr><td>UserDir /usr/siteler</td>
          <td>/usr/siteler/ali/bir/iki.html</td></tr>
      <tr><td>UserDir /home/*/htdocs</td>
          <td>/home/ali/htdocs/bir/iki.html</td></tr>
    </table>

    <p>Aşağıdaki yönergelerle istemciye gönderilecek yönlendirmeler:</p>

    <table>
      <tr><th>Kullanılan UserDir yönergesi&nbsp;&nbsp;&nbsp;&nbsp;</th>
          <th>Elde edilen yönlendirme</th></tr>
      <tr><td>UserDir http://mesela.dom/users</td>
          <td>http://mesela.dom/users/ali/bir/iki.html</td></tr>
      <tr><td>UserDir http://mesela.dom/*/usr</td>
          <td>http://mesela.dom/ali/usr/bir/iki.html</td></tr>
      <tr><td>UserDir http://mesela.dom/~*/</td>
          <td>http://mesela.dom/~ali/bir/iki.html</td></tr>
    </table>

    <div class="note">
      <strong>Bu yönergeyi kullanırken dikkatli olun; örneğin, <code>"UserDir
        ./"</code> şeklinde bir atama <code>"/~root"</code> isteklerini
        <code>"/"</code> dizinine yönlendirir ki bu elbette istenmez. Bu
        bakımdan yapılandırmanızda mutlaka bir "<code>UserDir disabled
        root</code>" satırının yer almasını tavsiye ederiz. Daha fazla bilgi
        için <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> yönergesine ve <a href="../misc/security_tips.html">Güvenlik İpuçları</a> sayfasına
        bakınız.</strong>
    </div>

    <p>Diğer örnekler:</p>

    <p>Bir kaç kullanıcı hariç kalan herkesin <code>UserDir</code>
      dizinlerini iptal etmek için şunu yapabilirsiniz:</p>

    <div class="example"><p><code>
      UserDir disabled<br />
      UserDir enabled birey1 birey2 birey3
    </code></p></div>

    <p>Bir kaç kullanıcı hariç kalan herkesin <code>UserDir</code>
      dizinlerini etkin kılmak için şunu yapabilirsiniz:</p>

    <div class="example"><p><code>
      UserDir disabled birey4 birey5 birey6
    </code></p></div>

    <p>Birden fazla dizin belirtmek de mümkündür:</p>

    <div class="example"><p><code>
      Userdir public_html /usr/siteler http://mesela.dom/
    </code></p></div>

    <p>Bu örneğe göre, <code>http://mesela.dom/~ali/bir/iki.html</code>
      şeklinde bir istek alındığında sunucu önce
      <code>http://mesela.dom/~ali/bir/iki.html</code> yönlendirmesini
      deneyecektir. Onu bulamazsa isteği
      <code>/usr/siteler/ali/bir/iki.html</code> dosyasını arayacak onu da
      bulamazsa istemciyi <code>http://mesela.dom/ali/bir/iki.html</code>
      adresine yönlendirecektir.</p>

    <p>Argüman listesine bir yönlendirme ekleyecekseniz, bu, listenin son
      elemanı olmalıdır. Apache yönlendirmenin başarılı sonuç verip
      vermediğini bilemeyecektir. Bu bakımdan, listede bu yönlendirmeden
      sonra bir yönlendirme daha bulunması daha iyi olacaktır.</p>

    <p>Kullanıcı dizini dönüşümü Apache 2.1.4 sürümü ve sonrasında öntanımlı
      olarak etkin değildir. Daha önceki sürümlerde bir <code class="directive"><a href="#userdir">UserDir</a></code> yönergesinin yokluğunda
      <code>UserDir public_html</code> öntanımlıydı.</p>


<h3>Ayrıca bakınız:</h3>
<ul>
<li>
  <a href="../howto/public_html.html">public_html eğitmeni</a>
</li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                 mod/mod_usertrack.html                                                                              100644       0       0        34664 11256641270  12555  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_usertrack - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_usertrack</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>
<em>Clickstream</em> logging of user activity on a site
</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>usertrack_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_usertrack.c</td></tr></table>
<h3>Summary</h3>

    <p>Previous releases of Apache have included a module which
    generates a 'clickstream' log of user activity on a site using
    cookies. This was called the "cookies" module, mod_cookies. In
    Apache 1.2 and later this module has been renamed the "user
    tracking" module, mod_usertrack. This module has been
    simplified and new directives added.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cookiedomain">CookieDomain</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookieexpires">CookieExpires</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookiename">CookieName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookiestyle">CookieStyle</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookietracking">CookieTracking</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#logging">Logging</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cookiedate">2-digit or 4-digit dates for cookies?</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="logging" id="logging">Logging</a></h2>


    <p>Previously, the cookies module (now the user tracking
    module) did its own logging, using the <code class="directive">CookieLog</code>
    directive. In this release, this module does no logging at all.
    Instead, a configurable log format file should be used to log
    user click-streams. This is possible because the logging module
    now allows multiple log files. The cookie itself is logged by
    using the text <code>%{cookie}n</code> in the log file format. For
    example:</p>
<div class="example"><p><code>
CustomLog logs/clickstream "%{cookie}n %r %t"
</code></p></div>

    <p>For backward compatibility the configurable log module
    implements the old <code class="directive"><a href="../mod/mod_log_config.html#cookielog">CookieLog</a></code> directive, but this
    should be upgraded to the above <code class="directive"><a href="../mod/mod_log_config.html#customlog">CustomLog</a></code> directive. </p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cookiedate" id="cookiedate">2-digit or 4-digit dates for cookies?</a></h2>


    <p>(the following is from message
    &lt;022701bda43d$9d32bbb0$1201a8c0@christian.office.sane.com&gt;
    in the new-httpd archives) </p>
<pre>
From: "Christian Allen" &lt;christian@sane.com&gt;
Subject: Re: Apache Y2K bug in mod_usertrack.c
Date: Tue, 30 Jun 1998 11:41:56 -0400

Did some work with cookies and dug up some info that might be useful.

True, Netscape claims that the correct format NOW is four digit dates, and
four digit dates do in fact work... for Netscape 4.x (Communicator), that
is.  However, 3.x and below do NOT accept them.  It seems that Netscape
originally had a 2-digit standard, and then with all of the Y2K hype and
probably a few complaints, changed to a four digit date for Communicator.
Fortunately, 4.x also understands the 2-digit format, and so the best way to
ensure that your expiration date is legible to the client's browser is to
use 2-digit dates.

However, this does not limit expiration dates to the year 2000; if you use
an expiration year of "13", for example, it is interpreted as 2013, NOT
1913!  In fact, you can use an expiration year of up to "37", and it will be
understood as "2037" by both MSIE and Netscape versions 3.x and up (not sure
about versions previous to those).  Not sure why Netscape used that
particular year as its cut-off point, but my guess is that it was in respect
to UNIX's 2038 problem.  Netscape/MSIE 4.x seem to be able to understand
2-digit years beyond that, at least until "50" for sure (I think they
understand up until about "70", but not for sure).

Summary:  Mozilla 3.x and up understands two digit dates up until "37"
(2037).  Mozilla 4.x understands up until at least "50" (2050) in 2-digit
form, but also understands 4-digit years, which can probably reach up until
9999.  Your best bet for sending a long-life cookie is to send it for some
time late in the year "37".
</pre>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieDomain" id="CookieDomain">CookieDomain</a> <a name="cookiedomain" id="cookiedomain">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The domain to which the tracking cookie applies</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieDomain <em>domain</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_usertrack</td></tr>
</table>

    <p>This directive controls the setting of the domain to which
    the tracking cookie applies. If not present, no domain is
    included in the cookie header field.</p>

    <p>The domain string <strong>must</strong> begin with a dot, and
    <strong>must</strong> include at least one embedded dot. That is,
    <code>.example.com</code> is legal, but <code>foo.example.com</code> and 
    <code>.com</code> are not.</p>

    <div class="note">Most browsers in use today will not allow cookies to be set
    for a two-part top level domain, such as <code>.co.uk</code>,
    although such a domain ostensibly fulfills the requirements
    above.<br />

    These domains are equivalent to top level domains such as
    <code>.com</code>, and allowing such cookies may be a security
    risk. Thus, if you are under a two-part top level domain, you
    should still use your actual domain, as you would with any other top
    level domain (for example, use <code>.foo.co.uk</code>).
    </div>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieExpires" id="CookieExpires">CookieExpires</a> <a name="cookieexpires" id="cookieexpires">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Expiry time for the tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieExpires <em>expiry-period</em></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_usertrack</td></tr>
</table>
    <p>When used, this directive sets an expiry time on the cookie
    generated by the usertrack module. The <em>expiry-period</em>
    can be given either as a number of seconds, or in the format
    such as "2 weeks 3 days 7 hours". Valid denominations are:
    years, months, weeks, days, hours, minutes and seconds. If the expiry
    time is in any format other than one number indicating the
    number of seconds, it must be enclosed by double quotes.</p>

    <p>If this directive is not used, cookies last only for the
    current browser session.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieName" id="CookieName">CookieName</a> <a name="cookiename" id="cookiename">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Name of the tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieName <em>token</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CookieName Apache</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_usertrack</td></tr>
</table>
    <p>This directive allows you to change the name of the cookie
    this module uses for its tracking purposes. By default the
    cookie is named "<code>Apache</code>".</p>

    <p>You must specify a valid cookie name; results are
    unpredictable if you use a name containing unusual characters.
    Valid characters include A-Z, a-z, 0-9, "_", and "-".</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieStyle" id="CookieStyle">CookieStyle</a> <a name="cookiestyle" id="cookiestyle">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Format of the cookie header field</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieStyle
    <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CookieStyle Netscape</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_usertrack</td></tr>
</table>
    <p>This directive controls the format of the cookie header
    field. The three formats allowed are:</p>

    <ul>
      <li><strong>Netscape</strong>, which is the original but now deprecated
      syntax. This is the default, and the syntax Apache has
      historically used.</li>

      <li><strong>Cookie</strong> or <strong>RFC2109</strong>, which is the syntax that
      superseded the Netscape syntax.</li>

      <li><strong>Cookie2</strong> or <strong>RFC2965</strong>, which is the most
      current cookie syntax.</li>
    </ul>

    <p>Not all clients can understand all of these formats, but you
    should use the newest one that is generally acceptable to your
    users' browsers. At the time of writing, most browsers only fully
    support <code>CookieStyle Netscape</code>.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CookieTracking" id="CookieTracking">CookieTracking</a> <a name="cookietracking" id="cookietracking">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieTracking on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CookieTracking off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_usertrack</td></tr>
</table>
    <p>When <code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code> is loaded, and
    <code>CookieTracking on</code> is set, Apache will send a
    user-tracking cookie for all new requests. This directive can
    be used to turn this behavior on or off on a per-server or
    per-directory basis. By default, enabling
    <code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code> will <strong>not</strong>
    activate cookies. </p>


</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                            mod/mod_version.html                                                                                100644       0       0        15742 11256641270  12233  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mod_version - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Module mod_version</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Version dependent configuration</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>version_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mod_version.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.0.56 and later</td></tr></table>
<h3>Summary</h3>

    <p>This module is designed for the use in test suites and large
    networks which have to deal with different httpd versions and
    different configurations. It provides a new container -- <code class="directive"><a href="#ifversion">&lt;IfVersion&gt;</a></code>, which
    allows a flexible version checking including numeric comparisons and
    regular expressions.</p>

    <div class="example"><h3>Examples</h3><p><code>
      &lt;IfVersion 2.1.0&gt;<br />
      <span class="indent">
        # current httpd version is exactly 2.1.0<br />
      </span>
      &lt;/IfVersion&gt;<br />
      <br />
      &lt;IfVersion &gt;= 2.2&gt;<br />
      <span class="indent">
        # use really new features :-)<br />
      </span>
      &lt;/IfVersion&gt;
    </code></p></div>

    <p>See below for further possibilities.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#ifversion">&lt;IfVersion&gt;</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IfVersion" id="IfVersion">&lt;IfVersion&gt;</a> <a name="ifversion" id="ifversion">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>contains version dependent configuration</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>&lt;IfVersion [[!]<var>operator</var>] <var>version</var>&gt; ...
&lt;/IfVersion&gt;</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_version</td></tr>
</table>
    <p>The <code class="directive">&lt;IfVersion&gt;</code> section encloses
    configuration directives which are executed only if the
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> version
    matches the desired criteria. For normal (numeric) comparisons the
    <var>version</var> argument has the format
    <code><var>major</var>[.<var>minor</var>[.<var>patch</var>]]</code>, e.g.
    <code>2.1.0</code> or <code>2.2</code>. <var>minor</var> and
    <var>patch</var> are optional. If these numbers are omitted, they are
    assumed to be zero. The following numerical <var>operator</var>s are
    possible:</p>

    <table class="bordered"><tr class="header"><th><var>operator</var></th><th>description</th></tr>
<tr><td><code>=</code> or <code>==</code></td>
        <td>httpd version is equal</td></tr>
<tr class="odd"><td><code>&gt;</code></td>
        <td>httpd version is greater than</td></tr>
<tr><td><code>&gt;=</code></td>
        <td>httpd version is greater or equal</td></tr>
<tr class="odd"><td><code>&lt;</code></td>
        <td>httpd version is less than</td></tr>
<tr><td><code>&lt;=</code></td>
        <td>httpd version is less or equal</td></tr>
</table>

    <div class="example"><h3>Example</h3><p><code>
      &lt;IfVersion &gt;= 2.1&gt;<br />
      <span class="indent">
        # this happens only in versions greater or<br />
        # equal 2.1.0.<br />
      </span>
      &lt;/IfVersion&gt;
    </code></p></div>

    <p>Besides the numerical comparison it is possible to match a 
    <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a> 
    against the httpd version. There are two ways to write it:</p>

    <table class="bordered"><tr class="header"><th><var>operator</var></th><th>description</th></tr>
<tr><td><code>=</code> or <code>==</code></td>
        <td><var>version</var> has the form
            <code>/<var>regex</var>/</code></td></tr>
<tr class="odd"><td><code>~</code></td>
        <td><var>version</var> has the form
            <code><var>regex</var></code></td></tr>
</table>

    <div class="example"><h3>Example</h3><p><code>
      &lt;IfVersion = /^2.1.[01234]$/&gt;<br />
      <span class="indent">
        # e.g. workaround for buggy versions
      </span>
      &lt;/IfVersion&gt;
    </code></p></div>

    <p>In order to reverse the meaning, all operators can be preceded by an
    exclamation mark (<code>!</code>):</p>

    <div class="example"><p><code>
      &lt;IfVersion !~ ^2.1.[01234]$&gt;<br />
      <span class="indent">
        # not for those versions<br />
      </span>
      &lt;/IfVersion&gt;
    </code></p></div>

    <p>If the <var>operator</var> is omitted, it is assumed to be
    <code>=</code>.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                              mod/mod_vhost_alias.html                                                                            100644       0       0        40261 11256641270  13054  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mod_vhost_alias - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Modülü mod_vhost_alias</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Kitlesel sanal konakların devingen olarak yapılandırılmasını
sağlar</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>vhost_alias_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>mod_vhost_alias.c</td></tr></table>
<h3>Özet</h3>

    <p>Bu modül, hangi dosyaların sunulacağını saptamak için dosya yolunun
      parçası olarak HTTP isteğinin <code>Host:</code> 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.</p>

    <div class="note"><h3>Bilginize</h3>
      <p>URI’leri dosya isimlerine dönüştürmek için <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>
        veya <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> kullanılmışsa bunlar
        <code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> 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 <code>/cgi-bin/script.pl</code> betiğini <code>
        /usr/local/apache2/cgi-bin/script.pl</code> betiğine eşleyecektir:</p>

      <div class="example"><p><code>
        ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/<br />
        VirtualScriptAlias /nerede/bilinmiyor/%0/cgi-bin/
      </code></p></div>
    </div>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#virtualdocumentroot">VirtualDocumentRoot</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualdocumentrootip">VirtualDocumentRootIP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualscriptalias">VirtualScriptAlias</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualscriptaliasip">VirtualScriptAliasIP</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#interpol">Dizin İsimlerinin Elde Edilmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code></li>
<li><a href="../vhosts/mass.html">Devingen olarak Yapılandırılan Kitlesel
Sanal Barındırma</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="interpol" id="interpol">Dizin İsimlerinin Elde Edilmesi</a></h2>
    

    <p>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 <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesine bakınız) ya da
      sunucu üzerindeki sanal konağın IP adresi olur. Dönüşümü,
      <code>printf</code>’inkilerin benzeri birkaç biçem belirteci
      denetler:</p>

<table>

<tr><td><code>%%</code></td>
<td>Bir <code>%</code> imi yerleştirir.</td></tr>

<tr><td><code>%p</code></td>
<td>Sanal konağın IP adresini yerleştirir.</td></tr>

<tr><td><code>%N.M</code></td>
<td>İsmin parçalarını yerleştirir.</td></tr>

</table>

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

    <table>
      
      <tr><td><code>0</code></td>
      <td>ismin tamamı</td></tr>

      <tr><td><code>1</code></td>
      <td>ilk parça</td></tr>

      <tr><td><code>2</code></td>
      <td>ikinci parça</td></tr>

      <tr><td><code>-1</code></td>
      <td>son parça</td></tr>

      <tr><td><code>-2</code></td>
      <td>sondan bir önceki parça</td></tr>

      <tr><td><code>2+</code></td>
      <td>ikinci parça ve sonraki parçaların hepsi</td></tr>

      <tr><td><code>-2+</code></td>
      <td>sondan bir önceki parça ve daha önceki parçaların hepsi</td></tr>

      <tr><td><code>1+</code> ve <code>-1+</code></td>
      <td><code>0</code> ile aynı</td></tr>
    </table>

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

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    

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

    <div class="example"><p><code>
      UseCanonicalName    Off<br />
      VirtualDocumentRoot /usr/local/apache/sankonlar/%0
    </code></p></div>

    <p><code>http://mesela.dom/dizin/dosya.html</code> için yapılan bir istek
      <code>/usr/local/apache/sankonlar/mesela.dom/dizin/dosya.html</code>
      dosyası ile yerine getirilecektir.</p>

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

    <div class="example"><p><code>
      UseCanonicalName    Off<br />
      VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2
    </code></p></div>

    <p><code>http://falan.filan.mesela.dom/dizin/dosya.html</code> için
      yapılan bir istek
      <code>/usr/local/apache/sankonlar/mesela.dom/f/i/l/filan/dizin/dosya.html
      </code> ile yerine getirilecektir.</p>

    <p>Bu sefer de parçaları ismin sonundan toplayalım: </p>

<div class="example"><p><code>
    VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.-1/%2.-2/%2.-3/%2
</code></p></div>

    <p>Bu durumda istek
      <code>/usr/local/apache/sankonlar/mesela.dom/n/a/l/filan/dizin/dosya.html
      </code> ile karşılanırdı.</p>

    <p>Şöyle bir şey de yapabilirsiniz:</p>

<div class="example"><p><code>
    VirtualDocumentRoot /usr/local/apache/sankonlar/%3+/%2.1/%2.2/%2.3/%2.4+
</code></p></div>

    <p>Bu örnek için istek
      <code>/usr/local/apache/sankonlar/mesela.dom/f/i/l/an/dizin/dosya.html
      </code> dosyasından karşılanırdı.</p>

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

    <div class="example"><p><code>
      UseCanonicalName DNS<br />
      VirtualDocumentRootIP
      /usr/local/apache/sankonlar/%1/%2/%3/%4/belgeler<br />
      VirtualScriptAliasIP  /usr/local/apache/sankonlar/%1/%2/%3/%4/cgi-bin
    </code></p></div>

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

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

<div class="example"><p><code>
    VirtualDocumentRoot /usr/local/apache/sankonlar/%2.0.%3.0
</code></p></div>

    <p>Bu durumda <code>http://falan.filan.mesela.dom/dizin/dosya.html</code>
      için yapılan bir istek
      <code>/usr/local/apache/sankonlar/filan.mesela/dizin/dosya.html</code>
      dosyası ile karşılanacaktır.</p>

    <p><code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code>  yönergesinin
      <code>%V</code> ve <code>%A</code> <a href="mod_log_config.html#formats">biçem belirteçleri</a> bu modülle
      birlikte kullanıldığında çok yararlı olurlar.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="VirtualDocumentRoot" id="VirtualDocumentRoot">VirtualDocumentRoot</a> <a name="virtualdocumentroot" id="virtualdocumentroot">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>VirtualDocumentRoot <em>hesaplanan-dizin</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>VirtualDocumentRoot none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p><code class="directive">VirtualDocumentRoot</code> yönergesi sunucu ismine göre
      belgelerin bulunacağı yeri Apache’nin saptamasını sağlar.
      <code><em>hesaplanan-dizin</em></code>’in dönüşüm sonucu <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> yönergesinin değeriymiş gibi
      belge ağacının kök dizini olarak kullanılır.
      <code><em>hesaplanan-dizin</em></code> yerine <code>none</code>
      belirtilmişse <code class="directive">VirtualDocumentRoot</code> iptal edilmiş
      olur. Bu yönerge <code class="directive"><a href="#virtualdocumentrootip">VirtualDocumentRootIP</a></code> yönergesinin kullanıldığı bağlamda
      yer alamaz.</p>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="VirtualDocumentRootIP" id="VirtualDocumentRootIP">VirtualDocumentRootIP</a> <a name="virtualdocumentrootip" id="virtualdocumentrootip">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>VirtualDocumentRootIP <em>hesaplanan-dizin</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>VirtualDocumentRootIP none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_vhost_alias</td></tr>
</table>

  <p><code class="directive">VirtualDocumentRootIP</code> yönergesi, dizinin
    saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP
    adresini kullanması dışında <code class="directive"><a href="#virtualdocumentroot">VirtualDocumentRoot</a></code> gibidir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="VirtualScriptAlias" id="VirtualScriptAlias">VirtualScriptAlias</a> <a name="virtualscriptalias" id="virtualscriptalias">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>VirtualScriptAlias <em>hesaplanan-dizin</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>VirtualScriptAlias none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p><code class="directive">VirtualScriptAlias</code> yönergesi, CGI betiklerinin
      bulunacağı yeri Apache’nin saptamasını sağlamak bakımından <code class="directive"><a href="#virtualdocumentroot">VirtualDocumentRoot</a></code> yönergesinin
      yaptığını yapar. <code>/cgi-bin/</code> ile başlayan istekler için ise
      <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> yönergesinin
      yaptığını yapar.</p>


</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="VirtualScriptAliasIP" id="VirtualScriptAliasIP">VirtualScriptAliasIP</a> <a name="virtualscriptaliasip" id="virtualscriptaliasip">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>VirtualScriptAliasIP <em>hesaplanan-dizin</em>|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>VirtualScriptAliasIP none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli, sanal konak</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>Eklenti</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>mod_vhost_alias</td></tr>
</table>

    <p><code class="directive">VirtualScriptAliasIP</code> yönergesi, dizinin
      saptanmasında sunucu ismi yerine bağlantının sonlandığı sunucunun IP
      adresini kullanması dışında <code class="directive"><a href="#virtualscriptalias">VirtualScriptAlias</a></code> gibidir.</p>

    
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                               mod/module-dict.html                                                                                100644       0       0        13663 11256641270  12115  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Modülleri Tanımlamakta Kullanılan Terimler - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Modülleri Tanımlamakta Kullanılan Terimler</h1>


   <p>Bu belgede Apache <a href="./index.html">modül</a>lerini tanımlarken kullanılan terimler açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#Description">Açıklama</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Status">Durum</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#SourceFile">Kaynak Dosyası</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ModuleIdentifier">Modül Betimleyici</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#Compatibility">Uyumluluk</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Description" id="Description">Açıklama</a></h2>

<p>Modülün kullanım amacının kısa bir açıklaması.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Status" id="Status">Durum</a></h2>

    <p>Modülün Apache HTTP sunucusuna ne kadar sıkı bağlı olduğunu belirtir. Başka bir deyişle, modüle ve işlevselliğine erişim kazanmak için sunucuyu yeniden derlemek gerekip gerekmediği ile ilgili durumu belirtir. Bu özniteliğin olası değerleri şunlardır:</p>

    <dl>
      <dt>MPM</dt>

      <dd>“MPM” durumlu bir modül bir <a href="../mpm.html">Çok Süreçlilik Modülü</a>dür. Diğer modül türlerinin aksine, sunucunun kullandığı MPM modülü sayısı birden fazla olamaz. Bu modül türü temelde sunucuya gelen isteklerin ele alınmasından ve öldürülmesinden sorumludur.</dd>

      <dt>Temel</dt>

      <dd>“Temel” durumuyla etiketlenmiş bir modül öntanımlı olarak olarak derlenir ve sunucuya öntanımlı olarak yüklenir. Bu bakımdan derleme öncesi paket yapılandırması sırasında modülün derlenmemesi özellikle istenmedikçe bu modül derlenecek ve sunucuya yüklenecektir.</dd>

      <dt>Eklenti</dt>

      <dd>“Eklenti” durumundaki bir modül normal olarak derlenmez ve sunucuya yüklenmez. Modülü ve işlevselliğini etkin kılmak için sunucunun derleme öncesi paket yapılandırması sırasında modülün derleneceğini açıkça belirttikten sonra gerekirse yeniden derlemeniz gerekir.</dd>

      <dt>Deneysel</dt>

      <dd>“Deneysel” durumu modülün Apache sunucusunun bir parçası olarak kabul edildiğini ancak modülü denemenin tamamen sizin insiyatifinize bırakıldığı anlamına gelir. Böyle bir modül her şeyiyle belgelenmiştir fakat gerektiği gibi desteklenmemiştir.</dd>

      <dt>Harici</dt>

      <dd>“Harici” durumu temel Apache dağıtımında bulunmayan (“üçüncü parti”) modüller için kullanılır. Böyle modüller için sorumluluk kabul etmediğimiz gibi bunları desteklemiyoruz.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="SourceFile" id="SourceFile">Kaynak Dosyası</a></h2>

    <p>Karşısına modül kodunu içeren kaynak dosyasının ismi yazılır. Bu isim ayrıca <code class="directive"><a href="../mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> yönergesi tarafından da kullanılır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ModuleIdentifier" id="ModuleIdentifier">Modül Betimleyici</a></h2>

    <p>Modüller devingen olarak yüklenirken <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesinde kullanmak için modülü betimleyen dizgedir. Aslında, kaynak dosyasında <code>module</code> türündeki harici değişkenin ismidir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Compatibility" id="Compatibility">Uyumluluk</a></h2>

    <p>Eğer modül Apache’nin 2. sürüm dağıtımının özgün parçası değilse söz  konusu sürüm burada belirtilir. Ayrıca, modülün kullanımı belli platformlarla sınırlıysa bunun ayrıntıları da burada belirtilir.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                             mod/mpm_common.html                                                                                 100644       0       0       213455 11256641270  12071  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>mpm_common - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM Ortak Yönergeleri</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Birden fazla Çok Süreçlilik Modülü (MPM) tarafından gerçeklenmiş
  yönergeler bütünü.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>MPM</td></tr></table>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#acceptmutex">AcceptMutex</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#chrootdir">ChrootDir</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enableexceptionhook">EnableExceptionHook</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#gracefulshutdowntimeout">GracefulShutdownTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#group">Group</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#listen">Listen</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#listenbacklog">ListenBackLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#lockfile">LockFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxclients">MaxClients</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#pidfile">PidFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serverlimit">ServerLimit</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#startservers">StartServers</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#startthreads">StartThreads</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#threadlimit">ThreadLimit</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#threadsperchild">ThreadsPerChild</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#threadstacksize">ThreadStackSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#user">User</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptMutex" id="AcceptMutex">AcceptMutex</a> <a name="acceptmutex" id="acceptmutex">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Apache HTTPd Sunucusunun ağ soketlerinden istekleri kabul eden
  çok sayıda çocuk süreci sıraya sokmak için kullandığı yöntemi
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>AcceptMutex Default|<var>yöntem</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>AcceptMutex Default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">AcceptMutex</code> yönergesi Apache HTTPd Sunucusunun
     ağ soketlerinden istekleri kabul eden çok sayıda çocuk süreci sıraya
     sokmak için kullandığı yöntemi
     belirler. Apache 2.0’dan önce, yöntem sadece derleme sırasında
     seçilebiliyordu. Kullanılacak en uygun yöntem mimariye ve platforma aşırı
     derecede bağımlıdır. Bu konuda daha ayrıntılı bilgi edinmek için <a href="../misc/perf-tuning.html">Başarım Arttırma İpuçları</a> belgesine
     bakabilirsiniz.</p>

    <p>Bu yönergeye değer olarak <code>Default</code> belirtilmişse derleme
     sırasında seçilen öntanımlı yöntem kullanılacaktır. Diğer olası yöntemler
     aşağıda listelenmiştir. Tüm yöntemlerin tüm platformlarda mevcut
     olmadığına dikkat ediniz. Eğer belirtilen yöntem mevcut değilse hata
     günlüğüne mevcut yöntemlerin listesini içeren bir ileti yazılacaktır.</p>

    <dl>
      <dt><code>flock</code></dt>
      <dd><code class="directive"><a href="#lockfile">LockFile</a></code> yönergesi ile
        belirtilen dosyayı kilitlemek için <code>flock(2)</code> sistem
        çağrısı kullanılır.</dd>

      <dt><code>fcntl</code></dt>
      <dd><code class="directive"><a href="#lockfile">LockFile</a></code> yönergesi ile
        belirtilen dosyayı kilitlemek için <code>fcntl(2)</code> sistem
        çağrısı kullanılır.</dd>

      <dt><code>posixsem</code></dt>
      <dd>Muteksleri gerçeklemek için POSIX uyumlu semaforlar kullanılır.</dd>

      <dt><code>pthread</code></dt>
      <dd>POSIX Evreleri (PThreads) belirtimi tarafından gerçeklenen muteksler
       kullanılır.</dd>

      <dt><code>sysvsem</code></dt>
      <dd>Muteksleri gerçeklemek için SysV tarzı semaforlar kullanılır.</dd>
    </dl>

    <p>Sisteminiz için derleme sırasında seçilmiş öntanımlı yöntemi öğrenmek
      isterseniz <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> yönergesine
      <code>debug</code> değerini atayabilirsiniz. Öntanımlı <code class="directive">AcceptMutex</code>, <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code>
      ile belirtilen günlük dosyasına yazılacaktır.</p>

  <div class="warning"><h3>Uyarı</h3>
     <p>Çoğu sistemde, <code>pthread</code> seçeneği seçildiği takdirde,
      <code>AcceptCntl</code> muteksi tutulurken bir çocuk süreç anormal
      şekilde sonlanırsa, muteksi kurtarmak için sunucunun elle yeniden
      başlatılması gerekecektir.</p>
     <p>Solaris, bir muteks tutulurken, bir çocuk süreç anormal şekilde
      sonlandıktan sonra muteksin Apache tarafından kurtarılmasına imkan veren
      bir mekanizma sağlaması sebebiyle diğerlerinden ayrılır.</p>
     <p>Sisteminiz <code>pthread_mutexattr_setrobust_np()</code> işlevini
      gerçekliyorsa <code>pthread</code> seçeneğini gönül rahatlığıyla
      kullanabilirsiniz.</p>
  </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ChrootDir" id="ChrootDir">ChrootDir</a> <a name="chrootdir" id="chrootdir">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Başlatıldıktan sonra Apache’nin chroot(8) yapacağı dizin
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ChrootDir <var>/dizin/yolu/</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/event.html">event</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.2.10 ve sonrasında mevcuttur.
</td></tr>
</table>
    <p>Bu yönerge sunucu başlatıldıktan sonra istekleri kabul etmeye
      başlamadan önce sunucunun belirtilen dizine <code>chroot</code>(8)
      yapmasını söyler.</p>

    <p>Sunucuyu chroot altında çalıştırmanın basit bir işlem olmadığını ve
      özellikle CGI veya PHP gibi betikler çalıştırıyorsanız bazı ek
      ayarlamaların yapılması gerektiğini unutmayınız. Bu özelliği kullanmaya
      çalışmadan önce chroot işlemi hakkında yeterli bilgiye sahip
      olduğunuzdan emin olmalısınız.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CoreDumpDirectory" id="CoreDumpDirectory">CoreDumpDirectory</a> <a name="coredumpdirectory" id="coredumpdirectory">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>core</code> dosyasını dökümlemek üzere Apache’nin geçmeye
  çalışacağı dizin.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>CoreDumpDirectory <var>dizin</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Öntanımlı değer için aşağıdaki açıklamaya bakınız</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Bu yönerge <code>core</code> dosyasını dökümlemek üzere Apache’nin
      geçmeye çalışacağı dizini belirler. <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> dizini öntanımlı dizin olmakla
      birlikte, bu dizin kullanıcılar tarafından yazılabilir bir dizin
      olmadığından bir <code>core</code> dosyası dökümlenmez. Hata ayıklama
      amacıyla bir <code>core</code> dosyası dökümlemek isterseniz farklı bir
      yer belirtmek için bu yönergeyi kullanabilirsiniz.</p>

    <div class="note"><h3>Linux üzerinde <code>core</code> dökümlemek</h3>
      <p>Apache root olarak başlatılıp başka bir kullanıcıya geçilirse Linux
        çekirdeği süreç tarafından yazılabilir olsa bile <code>core</code>
        dökümlemeyi <em>iptal eder</em>. Eğer
        <code class="directive">CoreDumpDirectory</code> yönergesi ile açıkça bir
        dizin belirtirseniz, Apache (2.0.46 ve sonraki sürümleri), Linux 2.4 ve
        sonrasında <code>core</code> dökümlemeyi yeniden
        etkinleştirecektir.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="EnableExceptionHook" id="EnableExceptionHook">EnableExceptionHook</a> <a name="enableexceptionhook" id="enableexceptionhook">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bir çöküş sonrası olağandışılık eylemcilerini çalıştıracak
  kancayı etkin kılar.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>EnableExceptionHook On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>EnableExceptionHook Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Sürüm 2.0.49 ve sonrasında mevcuttur</td></tr>
</table>
    <p>Güvenlik sebebiyle bu yönerge sadece Apache
      <code>--enable-exception-hook</code> seçeneği ile yapılandırılmışsa
      kullanılabilir olacaktır. Bu, harici modüllerin eklenmesine ve bir çocuk
      sürecin çöküşü sonrası bir şeyler yapmaya izin veren bir kancayı etkin
      kılar.</p>

    <p>Bu kancayı kullanan iki modül (<code>mod_whatkilledus</code> ve
    <code>mod_backtrace</code>) zaten vardır. bunlar hakkında daha fazla bilgi
      edinmek için Jeff Trawick'in <a href="http://www.apache.org/~trawick/exception_hook.html">EnableExceptionHook site</a>sine bakabilirsiniz.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="GracefulShutdownTimeout" id="GracefulShutdownTimeout">GracefulShutdownTimeout</a> <a name="gracefulshutdowntimeout" id="gracefulshutdowntimeout">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun nazikçe kapatılmasının ardından ana süreç çıkana kadar
  geçecek süre için bir zaman aşımı belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>GracefulShutDownTimeout <var>saniye</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>GracefulShutDownTimeout 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code>, <code class="module"><a href="../mod/event.html">event</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Sürüm 2.2 ve sonrasında mevcuttur</td></tr>
</table>
    <p><code class="directive">GracefulShutdownTimeout</code> yönergesi, sunucuya
      "nazikçe dur" sinyali gönderildikten sonra mevcut bağlantılara hizmet
      sunmaya daha kaç saniye devam edebileceğini belirtir.</p>

    <p>Bu değerin <code>0</code> olarak belirtilmesi, sunucunun bekleyen bütün
      isteklere hizmet sunumu tamamlanıncaya kadar (gerekirse sonsuza kadar)
      bekleyebileceği anlamına gelir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Group" id="Group">Group</a> <a name="group" id="group">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsteklere yanıt verecek sunucunun ait olacağı grubu belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Group <var>unix-grubu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Group #-1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0’dan itibaren sadece sunucu geneli için geçerlidir.</td></tr>
</table>
    <p><code class="directive">Group</code> yönergesi, sunucunun hangi grup altında
      isteklere yanıt vereceğini belirler. Bu yönergenin uygulanabilmesi için
      sunucunun <code>root</code> olarak çalıştırılmış olması gerekir.
      Sunucuyu <code>root</code> dışında bir kullanıcı başlattığı takdirde,
      sunucu belirtilen gruba geçemez ve kullanıcının kendi grubunda
      çalışmaya devam eder. <var>unix-grubu</var> şunlardan biri olabilir:</p>

    <dl>
      <dt>Bir grup adı</dt>
      <dd>Gruba ismiyle başvurulur.</dd>

      <dt><code>#</code> ardından grup numarası</dt>
      <dd>Gruba numarası ile başvurulur.</dd>
    </dl>

    <div class="example"><h3>Örnek</h3><p><code>
      Group www-group
    </code></p></div>

    <p>Çalışan sunucu için özellikle yeni bir grup atamanız önerilir. Bazı
      sistem yöneticileri <code>nobody</code> grubunu kullanırlar fakat
      bu her zaman mümkün olmadığı gibi arzulanan da değildir.</p>

    <div class="warning"><h3>Güvenlik</h3>
      <p>Ne yaptığınızı ve ne tehlikelere yol açacağınızı bilmiyorsanız
      <code class="directive">Group</code> (veya <code class="directive"><a href="#user">User</a></code>) yönergesine değer olarak
      <code>root</code> atamayınız.</p>
    </div>

    <p>Özel bilgi: Bu yönergenin <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> taşıyıcısı içinde kullanımı
      artık desteklenmemektedir. Sunucunuzu <code class="program"><a href="../programs/suexec.html">suexec</a></code> için
      yapılandırırken <code class="directive"><a href="../mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesini
      kullanınız.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p><code class="directive">Group</code> yönergesi <code class="module"><a href="../mod/beos.html">beos</a></code> ve
        <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> MPM’lerinde mevcut olsa da, aslında
        işlevsiz olup sadece uyumluluk adına mevcuttur.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Listen" id="Listen">Listen</a> <a name="listen" id="listen">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun dinleyeceği IP adresini ve portu belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>Listen [<var>IP-adresi</var>:]<var>port-numarası</var>
  [<var>protokol</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code>, <code class="module"><a href="../mod/event.html">event</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0’dan beri gerekli yönergelerden biridir.<br />
<var>protokol</var> argümanı 2.1.5 sürümünde eklenmiştir.</td></tr>
</table>
    <p><code class="directive">Listen</code> yönergesi Apache’yi sadece belli IP
      adreslerini ve portlarını dinlemeye sevkeder.
      <code class="directive">Listen</code> artık belirtilmesi zorunlu yönergelerden
      biridir. Yapılandırma dosyasında bulunmadığı takdirde sunucu
      başlatılırken başarısız olacaktır. Bu Apache Sunucusunun önceki
      sürümünde böyle değildi.</p>

    <p><code class="directive">Listen</code> yönergesi Apache’ye, sadece belli
      portlardan veya IP adresi ve port çiftlerinden gelen istekleri kabul
      etmesini söyler. Eğer sadece port numarası belirtilmişse sunucu
      belirtilen portu bütün ağ arabirimlerinde dinleyecektir. Eğer portla
      birlikte bir IP adresi de belirtilmişse, sunucu belirtilen portu sadece
      belirtilen arabirimden dinleyecektir.</p>

    <p>Çok sayıda IP adresi ve port belirtmek için çok sayıda
      <code class="directive">Listen</code> yönergesi kullanılabilir. Sunucu bu
      durumda belirtilen bütün IP adreslerinden ve portlardan gelecek
      isteklere yanıt verecektir.</p>

    <p>Örneğin sunucunun hem port 80 hem de port 8000’den istek kabul etmesini
      istiyorsanız bunu şöyle belirtebilirsiniz:</p>

    <div class="example"><p><code>
      Listen 80<br />
      Listen 8000
    </code></p></div>

    <p>Sunucunun belirtilen iki ağ arabiriminden ve port numarasından gelen
      bağlantıları kabul etmesi için şu yapılandırmayı kullanabilirsiniz:</p>

    <div class="example"><p><code>
      Listen 192.170.2.1:80<br />
      Listen 192.170.2.5:8000
    </code></p></div>

    <p>IPv6 adresleri belirtilirken örnekteki gibi köşeli ayraçlar arasına
      alınmalıdır:</p>

    <div class="example"><p><code>
      Listen [2001:db8::a00:20ff:fea7:ccea]:80
    </code></p></div>

    <p>İsteğe bağlı <var>protocol</var> argümanı çoğu yapılandırmada gerekli
      değildir. Belirtilmediği takdirde. port 443 için <code>https</code> ve
      tüm diğer portlar için <code>http</code> öntanımlıdır. Protokol, isteği
      hangi modülün elde edeceğinin ve <code class="directive"><a href="../mod/core.html#acceptfilter">AcceptFilter</a></code> yönergesi ile protokole özgü
      hangi en iyilemelerin uygulanacağının saptanmasında kullanılır.</p>

    <p>Protokol belirtme ihtiyacını sadece standartdışı portlar
      çalıştırıyorsanız duyarsınız. Örneğin, port 8443 üzerinde bir
      <code>https</code> sitesi çalıştırmak istiyorsanız bunu şöyle
      belirtebilirsiniz:</p>

    <div class="example"><p><code>
      Listen 192.170.2.1:8443 https
    </code></p></div>

    <div class="note"><h3>Hata durumu</h3>
      Aynı IP adresi ve portun çok sayıda <code class="directive">Listen</code>
      yönergesinde belirtilmesi bir "adres kullanımda" (<code>Address already
      in use</code>) hatasına yol açar.
    </div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../dns-caveats.html">DNS ve Apache ile ilgili Konular</a> </li>
<li><a href="../bind.html">Sunucunun Kullandığı Adreslerin ve Portların
  Ayarlanması</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ListenBackLog" id="ListenBackLog">ListenBackLog</a> <a name="listenbacklog" id="listenbacklog">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Bekleyen bağlantılar kuyruğunun azami uzunluğunu
  belirler</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ListenBacklog <var>kuyruk-uzunluğu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ListenBacklog 511</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Bekleyen bağlantılar kuyruğunun azami uzunluğu. Genellikle bu ayar ne
      gerekir ne de istenir. Ancak bazı sistemlerde TCP SYN yüklenme
      saldırılarına karşı bu değerin arttırılması gerekebilir.
      <var>kuyruk-uzunluğu</var> parametresi için <code>listen(2)</code>
      işlevinin açıklamasına bakınız.</p>

    <p>Bu değer çoğunlukla işletim sistemi tarafından daha küçük bir sayıyla
      sınırlanır. Bu, işletim sistemine bağlı olarak değişiklik gösterir.
      Ayrıca, çoğu işletim sisteminin <var>kuyruk-uzunluğu</var> parametresi
      ile ne belirttiğinize bakmaksızın kendisi için atanmış değeri (fakat
      normal olarak daha büyüğünü) kullanacağına dikkat ediniz.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LockFile" id="LockFile">LockFile</a> <a name="lockfile" id="lockfile">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Apache HTTPd Sunucusunun ağ soketlerinden istekleri kabul eden
  çok sayıda çocuk süreci sıraya sokarken kullandığı kilit dosyasının yerini
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>LockFile <var>dosya</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>LockFile logs/accept.lock</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">LockFile</code> yönergesi, <code class="directive"><a href="#acceptmutex">AcceptMutex</a></code> yönergesi <code>fcntl</code>
      veya <code>flock</code> değeri ile belirtildiği takdirde kullanılan
      kilit dosyasının yerini belirler. Bu yönerge normalde öntanımlı
      değeriyle bırakılır. Değişmesini gerektiren ana sebep, <code>logs</code>
      dizininin ağ dosya sisteminde (NFS) yeralması halinde <strong>kilit
      dosyasının bir yerel diskte saklanması gereği</strong>dir. Ana sürecin
      süreç kimliği dosyaya kendiliğinden eklenir.</p>

    <div class="warning"><h3>Güvenlik</h3>
      <p>Bu dosyayı herkesin yazabildiği <code>/var/tmp</code> gibi bir dizine
        koymaktan kaçınmak gerekir. Çünkü, bu takdirde, birileri sunucunun
        hizmet sunmaya başlarken oluşturacağı kilit dosyası ile aynı isimde
        bir dosya oluşturarak hizmet reddi saldırısı (DoS) başlatabilir.</p>
    </div>


<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#acceptmutex">AcceptMutex</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxClients" id="MaxClients">MaxClients</a> <a name="maxclients" id="maxclients">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Aynı anda işleme sokulacak azami bağlantı sayısı</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxClients <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">MaxClients</code> yönergesi aynı anda işleme sokulacak
      bağlantı sayısını sınırlamak için kullanılır. <code class="directive">MaxClients</code> bağlantı isteğinden fazlası geldiği takdirde bu
      istekler normal olarak kuyruğa alınıp bekletilir. Kuyrukta bekletilecek
      isteklerin azami sayısı ise <code class="directive"><a href="#listenbacklog">ListenBacklog</a></code> yönergesi ile belirlenir. İstek sunmakta olan
      çocuk süreçlerden biri serbest kaldığında bekletilen bağlantılardan
      birine hizmet sunulmaya başlanır.</p>

    <p>Evreli olmayan sunucularda (<code class="module"><a href="../mod/prefork.html">prefork</a></code> gibi)
      <code class="directive">MaxClients</code> yönergesi istekleri sunmak için
      başlatılacak çocuk süreçlerin azami sayısını belirler. Öntanımlı değer
      256 olup bu değeri arttırmak isterseniz <code class="directive"><a href="#serverlimit">ServerLimit</a></code> değerini de
      arttırmalısınız.</p>

    <p>Çok evreli ve melez sunucularda (<code class="module"><a href="../mod/beos.html">beos</a></code> veya
      <code class="module"><a href="../mod/worker.html">worker</a></code> gibi) <code class="directive">MaxClients</code>
      yönergesi istemcilere hizmet verecek evre sayısını sınırlar. Öntanımlı
      değer <code class="module"><a href="../mod/beos.html">beos</a></code> için <code>50</code> iken melez MPM’ler için
      <code class="directive"><a href="#serverlimit">ServerLimit</a></code> ile <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> çarpımıdır (<code>16 x
      25</code>). Bu bakımdan <code class="directive">MaxClients</code> değerini 16
      süreçten fazlasına ayarlamak için <code class="directive"><a href="#serverlimit">ServerLimit</a></code> değerini de
      arttırmalısınız.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxMemFree" id="MaxMemFree">MaxMemFree</a> <a name="maxmemfree" id="maxmemfree">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td><code>free()</code> çağrılmaksızın ana bellek ayırıcının
  ayırmasına izin verilen azami bellek miktarını belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxMemFree <var>kB-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>MaxMemFree 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code></td></tr>
</table>
    <p><code class="directive">MaxMemFree</code> yönergesi, <code>free()</code>
      çağrılmaksızın ana bellek ayırıcının ayırmasına izin verilen azami
      bellek miktarını kB cinsinden belirler. Bir değerle belirtilmediğinde
      veya <code>0</code> değeriyle belirtildiğinde eşik sınırsız
      olacaktır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxRequestsPerChild" id="MaxRequestsPerChild">MaxRequestsPerChild</a> <a name="maxrequestsperchild" id="maxrequestsperchild">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Tek bir çocuk sürecin ömrü boyunca işleme sokabileceği istek
  sayısını sınırlamakta kullanılır.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxRequestsPerChild <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>MaxRequestsPerChild 10000</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">MaxRequestsPerChild</code> yönergesi, tek bir çocuk
      sürecin işleme sokabileceği istek sayısını sınırlamakta kullanılır.
      <code class="directive">MaxRequestsPerChild</code> istekten sonra çocuk süreç
      ölür. Eğer <code class="directive">MaxRequestsPerChild</code> için
      <code>0</code> belirtilmişse sürecin ömrü sonsuz olacaktır.</p>

    <div class="note"><h3>Sıfırdan farklı öntanımlı değerler</h3>
      <p><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> ve <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code> için
        öntanımlı değer <code>0</code>’dır.</p>
    </div>

    <p><code class="directive">MaxRequestsPerChild</code> için sıfırdan farklı bir
      değer belirtilmesi sürecin kullanacağı bellek miktarını sınırlamak
      suretiyle olası bellek sızıntılarını engeller.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p><code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code> isteklerinde sadece
        ilk istek bu sınıra uygun sayılır. Etkisi ise, davranışın çocuk süreç
        başına <em>bağlantı</em> sayısının sınırlanması şeklinde
        değişmesidir.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxSpareThreads" id="MaxSpareThreads">MaxSpareThreads</a> <a name="maxsparethreads" id="maxsparethreads">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Boştaki azami evre sayısını belirler</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxSpareThreads <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Boştaki azami evre sayısı. Her MPM bu yönerge karşısında farklı
      davranır.</p>

    <p><code class="module"><a href="../mod/worker.html">worker</a></code> için <code>MaxSpareThreads 250</code>
      öntanımlıdır. Bu MPM boştaki evreleri sunucu genelinde izler. Eğer
      sunucuda çok fazla boşta evre varsa, sunucu boştaki evrelerin sayısı bu
      sınırın altına inene kadar çocuk süreçleri öldürür.</p>

    <p><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> için <code>MaxSpareThreads 100</code>
      öntanımlıdır. Bu MPM tek bir süreç olarak çalıştığından boştaki evre
      sayısı aynı zamanda sunucu genelinde boştaki evre sayısıdır.</p>

    <p><code class="module"><a href="../mod/beos.html">beos</a></code> ve <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> MPM’leri
      <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> gibidir. <code class="module"><a href="../mod/beos.html">beos</a></code> için
      <code>MaxSpareThreads 50</code> öntanımlıyken  <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>
      için öntanımlı değer <code>10</code>’dur.</p>

    <div class="note"><h3>Kısıtlamalar</h3>
      <p><code class="directive">MaxSpareThreads</code> için değer aralığı sınırlıdır.
        Apache belirtilen değeri aşağıdaki kurallara uygun olarak
        kendiliğinden düzeltecektir:</p>
      <ul>
        <li><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> modülü, değerin <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code> değerinden küçük
          olmasını gerektirir.</li>

        <li><code class="module"><a href="../mod/worker.html">worker</a></code> için değer, <code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code>
          ve <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code>
          toplamına eşit veya büyük olmak zorundadır.</li>
      </ul>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#minsparethreads">MinSpareThreads</a></code></li>
<li><code class="directive"><a href="#startservers">StartServers</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MinSpareThreads" id="MinSpareThreads">MinSpareThreads</a> <a name="minsparethreads" id="minsparethreads">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsteklerin ani artışında devreye girecek boştaki evrelerin asgari
  sayısını belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MinSpareThreads <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>İsteklerin ani artışında devreye girecek boştaki evrelerin asgari
      sayısı. Her MPM bu yönerge karşısında farklı davranır.</p>

    <p><code class="module"><a href="../mod/worker.html">worker</a></code> için <code>MinSpareThreads 75</code>
      öntanımlıdır ve bu modüller boştaki evreleri sunucu genelinde
      izler. Eğer sunucuda boştaki evre sayısı yetersizse, sunucu boştaki
      evrelerin sayısı bu sınırın üstüne çıkana kadar çocuk süreç
      oluşturur.</p>

    <p><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> için <code>MinSpareThreads 10</code>
      öntanımlıdır ve tek süreç kendisi olduğundan izleme sunucu genelinde
      yapılır.</p>

    <p><code class="module"><a href="../mod/beos.html">beos</a></code> ve <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> modülleri
      <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> gibidir. <code class="module"><a href="../mod/beos.html">beos</a></code> için
      <code>MinSpareThreads 1</code> öntanımlı iken <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>
      için öntanımlı değer <code>5</code>’tir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#maxsparethreads">MaxSpareThreads</a></code></li>
<li><code class="directive"><a href="#startservers">StartServers</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="PidFile" id="PidFile">PidFile</a> <a name="pidfile" id="pidfile">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ana sürecin süreç kimliğinin (PID) kaydedileceği dosyayı belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>PidFile <var>dosya</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>PidFile logs/httpd.pid</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">PidFile</code> yönergesi, sunucunun artalan sürecinin
      süreç kimliğinin kaydedileceği dosyayı belirler. Dosya ismi mutlak dosya
      yoluyla belirtilmemişse dosya yolunun <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> dizinine göre belirtildiği kabul
      edilir.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      PidFile /var/run/apache.pid
    </code></p></div>

    <p>Sunucuya sinyal gönderebilmek çoğunlukla işe yarar. Böylece <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code> ve <code class="directive"><a href="../mod/mod_log_config.html#transferlog">TransferLog</a></code> dosyaları kapatılıp
      yeniden açılır ve yapılandırma dosyaları yeniden okunur. Bu,
      <code class="directive">PidFile</code> dosyasında belirtilen süreç kimliğine bir
      SIGHUP (kill -1) sinyali gönderilerek yapılır.</p>

    <p>Günlük dosyasının yeri ve <a href="../misc/security_tips.html#serverroot">güvenlik</a> ile ilgili
      uyarılar <code class="directive">PidFile</code> dosyası içinde sözkonusu
      olabilir.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>Apache 2’de sunucuyu (yeniden) başlatırken veya durdururken sadece
        <code class="program"><a href="../programs/apachectl.html">apachectl</a></code> betiğini kullanmanız önerilir.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ReceiveBufferSize" id="ReceiveBufferSize">ReceiveBufferSize</a> <a name="receivebuffersize" id="receivebuffersize">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>TCP alım tamponu boyu</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ReceiveBufferSize <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ReceiveBufferSize 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Sunucu TCP alım tamponu boyunu <var>bayt-sayısı</var> ile belirtilen
      bayta ayarlayacaktır.</p>

    <p><code>0</code> değeri atarsanız sunucu işletim sistemi öntanımlısını
      kullanacaktır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ScoreBoardFile" id="ScoreBoardFile">ScoreBoardFile</a> <a name="scoreboardfile" id="scoreboardfile">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Çocuk süreçler için eşgüdüm verisini saklamakta kullanılan
  dosyanın yerini belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ScoreBoardFile <var>dosya-yolu</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>ScoreBoardFile logs/apache_status</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Apache ana ve çocuk süreçler arasında iletişim için bir çetele tutar.
      Bazı mimariler bu iletişimi kolaylaştırmak için bir dosya gerektirir.
      Eğer yönerge belirtilmezse Apache çeteleyi önce tamamen bellekte
      oluşturmayı dener (anonim paylaşımlı bellek kullanarak); bunda başarılı
      olamazsa dosyayı diskte oluşturmaya çalışacaktır (paylaşımlı belleğe
      eşlemli dosya kullanarak). Bu yönergenin belirtilmesi Apache sunucusunun
      dosyayı daima diskte oluşturmasına sebep olur.</p>

    <div class="example"><h3>Örnek</h3><p><code>
      ScoreBoardFile /var/run/apache_status
    </code></p></div>

    <p>Paylaşımlı belleğe eşlemli dosya, çeteleye doğrudan erişmesi gereken
      üçüncü parti uygulamalar için yararlıdır.</p>

    <p>Eğer <code class="directive">ScoreBoardFile</code> yönergesi ile bir dosya
      belirtecekseniz, dosyayı bir RAM diske yerleştirerek hız artışı
      sağlayabilirsiniz. Fakat, günlük dosyası yerleştirme ve <a href="../misc/security_tips.html">güvenlik</a> ile ilgili uyarılara
      benzer uyarılara karşı dikkatli olunuz.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../stopping.html">Sunucuyu Durdurma ve Yeniden Başlatma</a> </li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="SendBufferSize" id="SendBufferSize">SendBufferSize</a> <a name="sendbuffersize" id="sendbuffersize">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>TCP tamponu boyu</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>SendBufferSize <var>bayt-sayısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>SendBufferSize 0</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Sunucu TCP gönderim tamponu boyunu <var>bayt-sayısı</var> ile
      belirtilen bayta ayarlayacaktır. Yüksek hızlı yüksek yataklık süresi
      için standart işletim sistemi öntanımlılarını arttırmak çok yararlıdır
      (örneğin, kıtalar arası hızlı borularda olduğu gibi 100 ms
      civarında).</p>

    <p><code>0</code> değeri atarsanız sunucu işletim sistemi öntanımlısını
      kullanacaktır.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ServerLimit" id="ServerLimit">ServerLimit</a> <a name="serverlimit" id="serverlimit">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Ayarlanabilir süreç sayısının üst sınırını belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ServerLimit <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="module"><a href="../mod/prefork.html">prefork</a></code> modülü söz konusu olduğunda bu yönerge, Apache
      sürecinin ömrü boyunca <code class="directive"><a href="#maxclients">MaxClients</a></code> yönergesine atanabilecek
      azami değeri belirler. <code class="module"><a href="../mod/worker.html">worker</a></code> modülü sözkonusu
      olduğunda ise, Apache sürecinin ömrü boyunca <code class="directive"><a href="#maxclients">MaxClients</a></code> yönergesine atanabilecek
      azami değeri <code class="directive"><a href="#threadlimit">ThreadLimit</a></code> ile
      birlikte belirler. Bu yönergeyi bir yeniden başlatma sırasında
      değiştirirseniz bu değişiklik yok sayılır fakat <code class="directive"><a href="#maxclients">MaxClients</a></code> değişiklikleri dikkate
      alınır.</p>

    <p>Bu yönergenin kullanılması özel bir dikkat gerektirir. Eğer
      <code class="directive">ServerLimit</code> gereğinden yüksek bir değere
      ayarlanırsa, gereksiz yere paylaşımlı bellek ayrılmış olur. Eğer
      <code class="directive">ServerLimit</code> ve <code class="directive"><a href="#maxclients">MaxClients</a></code> değerleri sistemin
      işleyebileceğinden daha yüksek değerlere ayarlanırsa Apache
      başlayamayacağı gibi sistemi kararsız hale de getirebilir.</p>

    <p>Bu yönergeyi <code class="module"><a href="../mod/prefork.html">prefork</a></code> modülü ile sadece <code class="directive"><a href="#maxclients">MaxClients</a></code> yönergesine 256’dan
      (öntanımlı) daha büyük bir değer atayacaksanız kullanınız. Bu yönergeye
      <code class="directive"><a href="#maxclients">MaxClients</a></code> için atamak
      istediğiniz değerden fazlasını atamayınız.</p>

    <p><code class="module"><a href="../mod/worker.html">worker</a></code> modülü söz konusu olduğunda bu yönergeyi
      <code class="directive"><a href="#maxclients">MaxClients</a></code> ve
      <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> ayarları 16
      sunucu sürecinden (16 öntanımlıdır) fazlasını gerektiriyorsa
      ayarlayınız. Bu yönergeye <code class="directive"><a href="#maxclients&#10;      ">MaxClients
      </a></code> ve <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> için gerekli gördüğünüz
      sunucu süreci sayısından fazlasını atamayınız.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>Sunucu içinde derlenmiş olarak <code>ServerLimit 20000</code>
        şeklinde bir zorlayıcı sınır vardır (<code class="module"><a href="../mod/prefork.html">prefork</a></code> için
        200000’dir). Bu önlem, yazım hatalarının istenmeyen sonuçlara yol
        açmasını engellemek için düşünülmüştür.</p>
    </div>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><a href="../stopping.html">Sunucuyu Durdurma ve Yeniden Başlatma</a> </li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="StartServers" id="StartServers">StartServers</a> <a name="startservers" id="startservers">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun başlatılması sırasında oluşturulan çocuk süreçlerin
  sayısını belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>StartServers <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>, <code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p><code class="directive">StartServers</code> yönergesi, sunucunun başlatılması
      sırasında oluşturulan çocuk süreçlerin sayısını belirler. Süreç sayısı
      normal olarak yüke bağlı olarak değişse de bu değerin ayarlanmasını
      gerektirecek küçük bir sebep vardır.</p>

    <p>Öntanımlı değer MPM’den MPM’e fark eder. Öntanımlı değer
      <code class="module"><a href="../mod/worker.html">worker</a></code> için <code>3</code> iken
      <code class="module"><a href="../mod/prefork.html">prefork</a></code> için <code>5</code> ve
      <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> için <code>2</code>’dir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="StartThreads" id="StartThreads">StartThreads</a> <a name="startthreads" id="startthreads">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Sunucunun başlatılması sırasında oluşturulan evrelerin sayısını
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>StartThreads <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code></td></tr>
</table>
    <p><code class="directive">StartThreads</code> yönergesi, sunucunun başlatılması
      sırasında oluşturulan evrelerin sayısını belirler. Evre sayısı normal
      olarak yüke bağlı olarak değişse de bu değerin ayarlanmasını
      gerektirecek küçük bir sebep vardır.</p>

    <p><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code> için <code>StartThreads 50</code>
      öntanımlı olup, sadece tek bir süreç olduğundan, sunucunun başlatılması
      sırasında oluşturulan evrelerin toplam sayısı <code>50</code>’dir.</p>

    <p><code class="module"><a href="../mod/beos.html">beos</a></code> için <code>StartThreads 10</code> öntanımlı olup
      sunucunun başlatılması sırasında oluşturulan evrelerin toplam sayısı
      <code>10</code>’dur.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ThreadLimit" id="ThreadLimit">ThreadLimit</a> <a name="threadlimit" id="threadlimit">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Çocuk süreç başına ayarlanabilir evre sayısının üst sınırını
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ThreadLimit <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td><code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code> için Apache 2.0.41 ve sonrasında mevcuttur.</td></tr>
</table>
    <p>Bu yönerge, Apache sürecinin ömrü boyunca <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> yönergesine
      atanabilecek azami değeri belirler. Bu yönergeyi bir yeniden başlatma
      sırasında değiştirirseniz bu değişiklik yok sayılır fakat <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> değişiklikleri dikkate
      alınır.</p>

    <p>Bu yönergenin kullanılması özel bir dikkat gerektirir. Eğer
      <code class="directive">ThreadLimit</code> değeri <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> değerinden yüksek bir
      değere ayarlanırsa, gereksiz yere paylaşımlı bellek ayrılmış olur. Eğer
      <code class="directive">ThreadLimit</code> ve <code class="directive"><a href="#threadsperchild">ThreadsPerChild</a></code> değerleri sistemin
      işleyebileceğinden daha yüksek değerlere ayarlanırsa Apache
      başlayamayacağı gibi sistemi kararsız hale de getirebilir. Bu yönergeye
      Apache sunucusunun çalışması için öngörülmüş en büyük değerden daha
      yükseğini atamayınız.</p>

    <p><code class="directive">ThreadLimit</code> yönergesinin öntanımlı değeri
      <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code> için <code>1920</code>, diğerleri için
      <code>64</code>’tür.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p>Sunucu içinde derlenmiş olarak <code>ThreadLimit 20000</code>
        şeklinde bir zorlayıcı sınır vardır (<code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code> için
        15000’dir). Bu önlem, yazım hatalarının istenmeyen sonuçlara yol
        açmasını engellemek için düşünülmüştür.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ThreadsPerChild" id="ThreadsPerChild">ThreadsPerChild</a> <a name="threadsperchild" id="threadsperchild">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Her çocuk süreç tarafından oluşturulan evrelerin sayısını
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ThreadsPerChild <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>Ayrıntılar için aşağıdaki açıklamaya bakınız.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
</table>
    <p>Bu yönerge, her çocuk süreç tarafından oluşturulan evrelerin sayısını
      belirler. Çocuk süreçler bu evreleri başlatıldıklarında oluştururlar ve
      bundan daha fazlasını asla oluşturmazlar. <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>
      gibi sadece bir çocuk sürecin bulunduğu bir MPM kullanıyorsanız, bu
      sayı sunucunun tüm yükünü kaldırabilecek kadar büyük olmalıdır.
      <code class="module"><a href="../mod/worker.html">worker</a></code> gibi çok çocuk süreçli bir MPM kullanıyorsanız,
      <em>toplam</em> evre sayısı sunucunun tüm yükünü kaldırabilecek kadar
      büyük olmalıdır.</p>

    <p><code class="directive">ThreadsPerChild</code> için öntanımlı değer
      <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code> kullanıldığında <code>64</code> diğerleri
      için <code>25</code>’tir.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ThreadStackSize" id="ThreadStackSize">ThreadStackSize</a> <a name="threadstacksize" id="threadstacksize">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İstemci bağlantılarını elde eden evreler tarafından kullanılan
  yığıtın bayt cinsinden uzunluğunu belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>ThreadStackSize <var>boyut</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>NetWare üzerinde 65536; diğer işletim sistemlerinde
  değişir.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.1 ve sonrasında mevcuttur.</td></tr>
</table>
    <p><code class="directive">ThreadStackSize</code> yönergesi, istemci
      bağlantılarını elde eden evreler ve bu bağlantıları işlemekte yardımcı
      olan modül çağrıları tarafından kullanılan yığıtın bayt cinsinden
      uzunluğunu belirler. Çoğu durumda işletim sistemi yığıtı uygun bir
      boyuta ayarlar, fakat yine de ayarlanmasını gerektirecek bazı durumlar
      olabilir:</p>

    <ul>
      <li>HP-UX gibi görece küçük yığıt boyuna sahip platformlarda, Apache,
        görece büyük yığıt alanı kullanan bazı üçüncü parti modüller yüzünden
        çökebilir. Bu modüller öntanımlı yığıt boyu daha büyük olan diğer
        platformlarda sorunsuz çalışabilir. Bu tür çökmeler
        <code class="directive">ThreadStackSize</code> yönergesine daha büyük yığıt
        boyu atanarak çözümlenir. Böyle bir ayarlamayı sadece üçüncü parti
        modülün üreticisi bunun gerekliliğini belirtmişse veya Apache’nin
        evre yığıt boyutunun küçüklüğünden dolayı çöktüğü teşhis edildiği
        takdirde yapınız.</li>

      <li>Öntanımlı yığıt boyu Apache sunucusu için gerekenden belirgin
        şekilde büyük bazı platformalarda, eğer
        <code class="directive">ThreadStackSize</code> yönergesi ile bu boyuttan daha
        düşük bir değer atanmışsa çocuk süreç başına evre sayısının yüksek
        olduğu durumlarda bu yığıt yetmeyebilir. Böyle bir ayarlama sadece
        sunucunun öldüresiye denendiği dolayısıyla yığıt boyutlarının aşırı
        zorlandığı deneme ortamlarında yapılmalıdır. Sunucu yapılandırmasında
        yapılan bir değişiklik mevcut <code class="directive">ThreadStackSize</code>
        ayarını geçersiz hale getirebilir.</li>
    </ul>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="User" id="User">User</a> <a name="user" id="user">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>İsteklere yanıt verecek sunucunun ait olacağı kullanıcıyı
  belirler.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>User <var>unix-kullanıcısı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>User #-1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td><code class="module"><a href="../mod/prefork.html">prefork</a></code>, <code class="module"><a href="../mod/worker.html">worker</a></code></td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Uyumluluk:</a></th><td>Apache 2.0’dan itibaren sadece sunucu geneli için
  geçerlidir.</td></tr>
</table>
    <p><code class="directive">User</code> yönergesi, sunucunun hangi kullanıcı olarak
      isteklere yanıt vereceğini belirler. Bu yönergenin uygulanabilmesi için
      sunucunun <code>root</code> olarak çalıştırılmış olması gerekir.
      Sunucuyu <code>root</code> dışında bir kullanıcı başlattığı takdirde,
      sunucu belirtilen kullanıcıya geçemez ve mevcut kullanıcıyla çalışmaya
      devam eder. Eğer sunucuyu <code>root</code> olarak başlatmışsanız ana
      süreç root olarak çalışmaya devam edecektir. <var>unix-kullanıcısı</var>
      şunlardan biri olabilir:</p>

    <dl>
      <dt>Bir kullanıcı adı</dt>
      <dd>Gruba ismiyle başvurulur.</dd>

      <dt><code>#</code> ardından kullanıcı numarası</dt>
      <dd>Kullanıcıya numarası ile başvurulur.</dd>
    </dl>

    <p>Bu yönergede belirtilecek kullanıcının, başkaları tarafından üzerinde
      değişiklik yapılabilecek dosyalardan başkasına erişemeyen bir kullanıcı
      olmaması gerektiği gibi, HTTP isteklerini işlemek dışında işlemler de
      yapabilen bir kullanıcı olmamalıdır.
      Çalışan sunucu için özellikle yeni bir grup atamanız önerilir. Bazı
      sistem yöneticileri <code>nobody</code> kullanıcısını kullanırlar fakat
      <code>nobody</code> kullanıcısı sistemde başka amaçlarla
      kullanılabildiğinden bu her zaman mümkün olmadığı gibi arzulanan da
      değildir.</p>

    <div class="warning"><h3>Güvenlik</h3>
      <p>Ne yaptığınızı ve ne tehlikelere yol açacağınızı bilmiyorsanız
      <code class="directive">User</code> (veya <code class="directive"><a href="#group">Group</a></code>) yönergesine değer olarak
      <code>root</code> atamayınız.</p>
    </div>

    <p>Özel bilgi: Bu yönergenin <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> taşıyıcısı içinde kullanımı
      artık desteklenmemektedir. Sunucunuzu <code class="program"><a href="../programs/suexec.html">suexec</a></code> için
      yapılandırırken <code class="directive"><a href="../mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesini
      kullanınız.</p>

    <div class="note"><h3>Ek Bilgi</h3>
      <p><code class="directive">User</code>yönergesi <code class="module"><a href="../mod/beos.html">beos</a></code> ve
        <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code> MPM’lerinde mevcut olsa da, aslında
        işlevsiz olup sadece uyumluluk adına mevcuttur.</p>
    </div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                   mod/mpm_netware.html                                                                                100644       0       0        15252 11256641270  12221  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mpm_netware - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM netware</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Multi-Processing Module implementing an exclusively threaded web
    server optimized for Novell NetWare</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mpm_netware_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mpm_netware.c</td></tr></table>
<h3>Summary</h3>

    <p>This Multi-Processing Module (MPM) implements an exclusively
    threaded web server that has been optimized for Novell
    NetWare.</p>

    <p>The main thread is responsible for launching child
    worker threads which listen for connections and serve them when they
    arrive. Apache always tries to maintain several <dfn>spare</dfn>
    or idle worker threads, which stand ready to serve incoming
    requests. In this way, clients do not need to wait for a new
    child threads to be spawned before their requests can be
    served.</p>

    <p>The <code class="directive"><a href="../mod/mpm_common.html#startthreads">StartThreads</a></code>,
    <code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code>,
    <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code>, and
    <code class="directive"><a href="#maxthreads">MaxThreads</a></code>
    regulate how the main thread creates worker threads to serve
    requests. In general, Apache is very self-regulating, so most
    sites do not need to adjust these directives from their default
    values. Sites with limited memory may need to decrease <code class="directive"><a href="#maxthreads">MaxThreads</a></code> to keep the server from
    thrashing (spawning and terminating idle threads). More information
    about tuning process creation is provided in the <a href="../misc/perf-tuning.html">performance hints</a>
    documentation.</p>

    <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>
    controls how frequently the server recycles processes by killing old
    ones and launching new ones. On the NetWare OS it is highly
    recommended that this directive remain set to 0. This allows worker
    threads to continue servicing requests indefinitely.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxthreads">MaxThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startthreads">StartThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><a href="../bind.html">Setting which addresses and
    ports Apache uses</a>
</li>
</ul></div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxThreads" id="MaxThreads">MaxThreads</a> <a name="maxthreads" id="maxthreads">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Set the maximum number of worker threads</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxThreads <var>number</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxThreads 2048</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mpm_netware</td></tr>
</table>
    <p>The <code class="directive">MaxThreads</code> directive sets the desired
    maximum number worker threads allowable. The default value is
    also the compiled in hard limit. Therefore it can only be lowered,
    for example:</p>

    <div class="example"><p><code>
      MaxThreads 512
    </code></p></div>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                      mod/mpm_winnt.html                                                                                  100644       0       0        13374 11256641270  11716  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mpm_winnt - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM winnt</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>This Multi-Processing Module is optimized for Windows
NT.</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mpm_winnt_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mpm_winnt.c</td></tr></table>
<h3>Summary</h3>

    <p>This Multi-Processing Module (MPM) is the default for the
    Windows NT operating systems. It uses a single control process
    which launches a single child process which in turn creates
    threads to handle requests</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadlimit">ThreadLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#win32disableacceptex">Win32DisableAcceptEx</a></li>
</ul>
</div>

<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Win32DisableAcceptEx" id="Win32DisableAcceptEx">Win32DisableAcceptEx</a> <a name="win32disableacceptex" id="win32disableacceptex">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use accept() rather than AcceptEx() to accept network connections</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Win32DisableAcceptEx</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AcceptEx() is enabled by default. Use this directive to disable use of
    AcceptEx()</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mpm_winnt</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Version 2.0.49 and later</td></tr>
</table>
    <p><code>AcceptEx()</code> is a Microsoft WinSock v2 API that provides
    some performance improvements over the use of the BSD style
    <code>accept()</code> API in certain circumstances. Some popular Windows
    products, typically virus scanning or virtual private network
    packages, have bugs that interfere with the proper operation of
    <code>AcceptEx()</code>. If you encounter an error condition like:</p>

    <div class="example"><p><code>
        [error] (730038)An operation was attempted on something that is
        not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.
    </code></p></div>

    <p>you should use this directive to disable the use of
    <code>AcceptEx()</code>.</p>

</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                    mod/mpmt_os2.html                                                                                   100644       0       0        10704 11256641270  11440  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>mpmt_os2 - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM os2</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Hybrid multi-process, multi-threaded MPM for OS/2</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">ModuleIdentifier:</a></th><td>mpm_mpmt_os2_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">SourceFile:</a></th><td>mpmt_os2.c</td></tr></table>
<h3>Summary</h3>

    <p>The Server consists of a main, parent process and a small, static
    number of child processes.</p>

    <p>The parent process's job is to manage the child processes. This
    involves spawning children as required to ensure there are always
    <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> processes
    accepting connections.</p>
    
    <p>Each child process consists of a a pool of worker threads and a
    main thread that accepts connections and passes them to the workers via
    a work queue. The worker thread pool is dynamic, managed by a
    maintenance thread so that the number of idle threads is kept between
    <code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code> and
    <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code>.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
</ul>
<h3>See also</h3>
<ul class="seealso">
<li><a href="../bind.html">Setting which addresses and ports Apache
uses</a></li>
</ul></div>

</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                            mod/prefork.html                                                                                    100644       0       0        27727 11256641270  11365  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>prefork - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM prefork</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Evresiz ön çatallamalı HTTP sunucusu oluşturur</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>mpm_prefork_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>prefork.c</td></tr></table>
<h3>Özet</h3>

    <p>Bu çok süreçlilik modülü (MPM) Apache 1.3’ün yaptığı gibi evresiz ve
      çocuk süreçlerin önceden çatallandığı bir HTTP sunucusu oluşturur.
      Evresiz kütüphanelerle uyumluluk için evrelemeden kaçınma ihtiyacında
      olan siteler için uygundur. Ayrıca istekleri birbirlerinden yalıtmak
      için en iyi MPM’dir, dolayısıyla herhangi bir istekle ilgili bir sorun
      diğerlerini etkilemez.</p>

    <p>Bu MPM kendi kendine her duruma çok iyi uyum sağladığından
      yapılandırma yönergeleri ile yapılandırılmaya nadiren ihtiyaç gösterir.
      Yönergelerin en önemlisi <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> olup, değeri aynı anda almayı umduğunuz istek
      sayısını işleyebilecek kadar büyük, fiziksel belleğin tüm süreçlerin
      ihtiyaçlarını karşılamasına yetecek kadar da küçük olması gerekir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#acceptmutex">AcceptMutex</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#enableexceptionhook">EnableExceptionHook</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#lockfile">LockFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxspareservers">MaxSpareServers</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#minspareservers">MinSpareServers</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#serverlimit">ServerLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">Nasıl çalışır?</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../bind.html">Apache’nin kullandığı adres ve portların
ayarlanması</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="how-it-works" id="how-it-works">Nasıl çalışır?</a></h2>
    <p>Bağlantıları dinleyip gerektiğinde onlara hizmet sunan çocuk süreçleri
      devreye almak tek bir denetim sürecinin sorumluluğundadır. Apache
      daima, gelen isteklere hizmet vermeye hazır bekleyen en fazla sayıda
      sunucu sürecini <dfn>yedekte tutmaya</dfn> veya boşta bekletmeye
      çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk
      süreçlerin çatallanmasını beklemek gerekmez.</p>

    <p>Ana sürecin istekleri sunacak çocuk süreçleri oluşturma işlemini nasıl
      gerçekleştireceği <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>, <code class="directive"><a href="#minspareservers">MinSpareServers</a></code>, <code class="directive"><a href="#maxspareservers">MaxSpareServers</a></code> ve <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergeleri ile düzenlenir. Apache
      kendiliğinden her duruma çok iyi uyum sağladığından, genelde, çoğu
      sitenin bu yönergelerin öntanımlı değerlerini değiştirmesi gerekmez.
      Aynı anda 256’dan fazla isteğe hizmet sunacak sitelerin <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> değerini arttırmaları
      gerekebilir. Ancak, fiziksel belleği yeterli olmayan sitelerin de
      sunucunun belleği diske takaslamasını önlemek için bu değeri
      azaltmaları gerekebilir. Süreç oluşturmanın ayarlanması ile ilgili daha
      fazla bilgi edinmek için <a href="../misc/perf-tuning.html">başarım
      arttırma ipuçları</a> belgesine bakınız.</p>

    <p>Unix altında 80. portu dinleyebilmek için ana sürecin
      <code>root</code> tarafından çalıştırılmış olması gerekirse de çocuk
      süreçler Apache tarafından daha az yetkili bir kullanıcının aidiyetinde
      çalıştırılırlar. Apache’nin çocuk süreçlerinin kullanıcı ve gruplarını
      ayarlamak için <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> ve
      <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> yönergeleri
      kullanılır. Çocuk süreçlerin sunacakları içeriği okumaya yetkili
      olmaları gerekir, fakat bu yetkinin mümkün olduğunca kısıtlı
      tutulmasına çalışılmalıdır.</p>

    <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>
      yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı
      ne kadar sıklıkla yapacağını denetler.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MaxSpareServers" id="MaxSpareServers">MaxSpareServers</a> <a name="maxspareservers" id="maxspareservers">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Boştaki çocuk süreçlerin azami sayısı</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MaxSpareServers <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>MaxSpareServers 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>prefork</td></tr>
</table>
    <p><code class="directive">MaxSpareServers</code> yönergesi <em>boştaki</em>
      çocuk sunucu süreçlerinin azami sayısını belirler. Boştaki süreç, o an
      bir isteğe hizmet sunmayan süreçtir. Eğer
      <code class="directive">MaxSpareServers</code> sayıda süreçten daha fazla boşta
      süreç varsa ana süreç bu fazlalıkları öldürecektir.</p>

    <p>Bu parametrenin ayarlanması sadece çok meşgul siteler için gerekli
      olabilir. Bu parametreye çok büyük bir değerin atanması oldukça kötü
      bir fikirdir. Eğer bu değeri <code class="directive"><a href="#minspareservers">MinSpareServers</a></code> değerine eşit veya daha küçük bir değere
      ayarlarsanız, Apache bu değeri kendiliğinden <code class="directive">MinSpareServers</code><code> + 1</code> olarak
      değiştirecektir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#minspareservers">MinSpareServers</a></code></li>
<li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="MinSpareServers" id="MinSpareServers">MinSpareServers</a> <a name="minspareservers" id="minspareservers">Yönergesi</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Açıklama:</a></th><td>Boştaki çocuk süreçlerin asgari sayısı</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Sözdizimi:</a></th><td><code>MinSpareServers <var>sayı</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Öntanımlı:</a></th><td><code>MinSpareServers 5</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Bağlam:</a></th><td>sunucu geneli</td></tr>
<tr><th><a href="directive-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="directive-dict.html#Module">Modül:</a></th><td>prefork</td></tr>
</table>
    <p><code class="directive">MinSpareServers</code> yönergesi <em>boştaki</em>
      çocuk sunucu süreçlerinin asgari sayısını belirler. Boştaki süreç, o an
      bir isteğe hizmet sunmayan süreçtir. Eğer
      <code class="directive">MinSpareServers</code> sayıda süreçten daha az boşta
      süreç varsa ana süreç sayıyı tamamlamak için saniyede en fazla 1 süreç
      olmak üzere yeni çocuk süreçler oluşturacaktır.</p>

    <p>Bu parametrenin ayarlanması sadece çok meşgul siteler için gerekli
      olabilir. Bu parametreye çok büyük bir değerin atanması oldukça kötü
      bir fikirdir.</p>

<h3>Ayrıca bakınız:</h3>
<ul>
<li><code class="directive"><a href="#maxspareservers">MaxSpareServers</a></code></li>
<li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li>
</ul>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                         mod/quickreference.html                                                                             100644       0       0       326642 11256641270  12726  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Hızlı Yönerge Kılavuzu - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="directive-index">
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="preamble"><h1>Hızlı Yönerge Kılavuzu</h1>


    <p>Bu hızlı yönerge kılavuzunda Apache yapılandırma yönergelerinin kullanımı, öntanımlı değerleri, durumu ve bağlamı gösterilmiştir. Bunların her biri hakkında ayrıntılı bilgi almak için <a href="directive-dict.html">Yönerge Sözlüğü</a>ne bakınız.</p>

    <p>İlk sütunda yönergenin ismi ve kullanımı belirtilmiştir. İkinci sütunda yönergenin varsa öntanımlı değeri gösterilmiştir. Eğer öntanımlı değer sütuna sığmayacak kadar uzunsa sığmayan kısmın yerine “+” imi konmuştur.</p>

    <p>Aşağıda sağdaki gösterge tablolarına uygun olarak, üçüncü sütunda yönergenin kullanımına izin verilen bağlamlar, dördüncü sütunda ise  yönergenin durumu gösterilmiştir.</p>
  </div>
<div id="directive-ref"><table id="legend">
<tr><td class="letters"><span><a href="#A">&nbsp;A&nbsp;</a> | <a href="#B">&nbsp;B&nbsp;</a> | <a href="#C">&nbsp;C&nbsp;</a> | <a href="#D">&nbsp;D&nbsp;</a> | <a href="#E">&nbsp;E&nbsp;</a> | <a href="#F">&nbsp;F&nbsp;</a> | <a href="#G">&nbsp;G&nbsp;</a> | <a href="#H">&nbsp;H&nbsp;</a> | <a href="#I">&nbsp;I&nbsp;</a> | <a href="#K">&nbsp;K&nbsp;</a> | <a href="#L">&nbsp;L&nbsp;</a> | <a href="#M">&nbsp;M&nbsp;</a> | <a href="#N">&nbsp;N&nbsp;</a> | <a href="#O">&nbsp;O&nbsp;</a> | <a href="#P">&nbsp;P&nbsp;</a> | <a href="#R">&nbsp;R&nbsp;</a> | <a href="#S">&nbsp;S&nbsp;</a> | <a href="#T">&nbsp;T&nbsp;</a> | <a href="#U">&nbsp;U&nbsp;</a> | <a href="#V">&nbsp;V&nbsp;</a> | <a href="#W">&nbsp;W&nbsp;</a> | <a href="#X">&nbsp;X&nbsp;</a></span></td>
<td><table><tr><th>s</th><td>sunucu geneli</td></tr>
<tr><th>k</th><td>sanal konak</td></tr>
<tr><th>d</th><td>dizin</td></tr>
<tr><th>h</th><td>.htaccess</td></tr>
</table></td>
<td><table><tr><th>Ç</th><td>Çekirdek</td></tr>
<tr><th>M</th><td>MPM</td></tr>
<tr><th>T</th><td>Temel</td></tr>
<tr><th>E</th><td>Eklenti</td></tr>
<tr><th>D</th><td>Deneysel</td></tr>
</table></td></tr>
</table>
<table class="qref">
<tr><td><a href="core.html#acceptfilter" id="A" name="A">AcceptFilter <var>protocol</var> <var>kabul_süzgeci</var></a></td><td></td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Bir protokolün dinleyici soketleri için en iyilemeleri ayarlar
</td></tr>
<tr class="odd"><td><a href="mpm_common.html#acceptmutex">AcceptMutex Default|<var>yöntem</var></a></td><td> Default </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Apache HTTPd Sunucusunun ağ soketlerinden istekleri kabul eden
  çok sayıda çocuk süreci sıraya sokmak için kullandığı yöntemi
  belirler.</td></tr>
<tr><td><a href="core.html#acceptpathinfo">AcceptPathInfo On|Off|Default</a></td><td> Default </td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Dosya isminden sonra belirtilen yol verisini kabul veya
  reddeder.</td></tr>
<tr class="odd"><td><a href="core.html#accessfilename">AccessFileName <var>filename</var> [<var>filename</var>] ...</a></td><td> .htaccess </td><td>sk</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Dağıtık yapılandırma dosyasının ismi belirtilir.</td></tr>
<tr><td><a href="mod_actions.html#action">Action <var>action-type</var> <var>cgi-script</var> [virtual]</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Activates a CGI script for a particular handler or
content-type</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#addalt">AddAlt <var>metin</var> <var>dosya</var> [<var>dosya</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Dosyaya göre seçilen simgenin yerinde gösterilecek metni belirler.
</td></tr>
<tr><td><a href="mod_autoindex.html#addaltbyencoding">AddAltByEncoding <var>metin</var> <var>MIME-kodlaması</var>
[<var>MIME-kodlaması</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Dosyanın MIME kodlamasına göre seçilen simgenin yerinde
gösterilecek metni belirler.</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#addaltbytype">AddAltByType <var>metin</var> <var>MIME-türü</var>
[<var>MIME-türü</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Dosyanın MIME türüne göre seçilen simgenin yerinde gösterilecek
metni belirler.</td></tr>
<tr><td><a href="mod_mime.html#addcharset">AddCharset <var>charset</var> <var>extension</var>
[<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Maps the given filename extensions to the specified content
charset</td></tr>
<tr class="odd"><td><a href="core.html#adddefaultcharset">AddDefaultCharset On|Off|<var>karküm</var></a></td><td> Off </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bir yanıtın içerik türü <code>text/plain</code> veya
  <code>text/html</code> olduğunda eklenecek öntanımlı karakter kümesi
  parametresini belirler.</td></tr>
<tr><td><a href="mod_autoindex.html#adddescription">AddDescription <var>metin dosya</var> [<var>dosya</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Bir dosya için gösterilecek açıklama belirtilir.</td></tr>
<tr class="odd"><td><a href="mod_mime.html#addencoding">AddEncoding <var>MIME-enc</var> <var>extension</var>
[<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Maps the given filename extensions to the specified encoding
type</td></tr>
<tr><td><a href="mod_mime.html#addhandler">AddHandler <var>handler-name</var> <var>extension</var>
[<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Maps the filename extensions to the specified
handler</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#addicon">AddIcon <var>simge</var> <var>isim</var> [<var>isim</var>]
...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bir dosya için gösterilecek simgeyi dosya adına göre belirler.
</td></tr>
<tr><td><a href="mod_autoindex.html#addiconbyencoding">AddIconByEncoding <var>simge</var> <var>MIME-kodlaması</var>
[<var>MIME-kodlaması</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Bir dosya için gösterilecek simgeyi dosyanın MIME kodlamasına
göre belirler.</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#addiconbytype">AddIconByType <var>simge</var> <var>MIME-türü</var>
[<var>MIME-türü</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bir dosya için gösterilecek simgeyi dosyanın MIME türüne göre
belirler.</td></tr>
<tr><td><a href="mod_mime.html#addinputfilter">AddInputFilter <var>filter</var>[;<var>filter</var>...]
<var>extension</var> [<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Maps filename extensions to the filters that will process
client requests</td></tr>
<tr class="odd"><td><a href="mod_mime.html#addlanguage">AddLanguage <var>MIME-lang</var> <var>extension</var>
[<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Maps the given filename extension to the specified content
language</td></tr>
<tr><td><a href="mod_info.html#addmoduleinfo">AddModuleInfo <var>module-name</var> <var>string</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Adds additional information to the module
information displayed by the server-info handler</td></tr>
<tr class="odd"><td><a href="mod_mime.html#addoutputfilter">AddOutputFilter <var>filter</var>[;<var>filter</var>...]
<var>extension</var> [<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Maps filename extensions to the filters that will process
responses from the server</td></tr>
<tr><td><a href="core.html#addoutputfilterbytype">AddOutputFilterByType <var>süzgeç</var>[;<var>süzgeç</var>...]
<var>MIME-türü</var> [<var>MIME-türü</var>] ...</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Belli bir MIME türüne bir çıktı süzgeci atar.</td></tr>
<tr class="odd"><td><a href="mod_mime.html#addtype">AddType <var>MIME-type</var> <var>extension</var>
[<var>extension</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Maps the given filename extensions onto the specified content
type</td></tr>
<tr><td><a href="mod_alias.html#alias">Alias <var>URL-yolu</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">URL’leri dosya sistemi konumlarıyla eşler.</td></tr>
<tr class="odd"><td><a href="mod_alias.html#aliasmatch">AliasMatch <var>düzenli-ifade</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></a></td><td></td><td>sk</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">URL’leri dosya sistemi konumlarıyla düzenli ifadeleri kullanarak
eşler.</td></tr>
<tr><td><a href="mod_authz_host.html#allow"> Allow from all|<var>host</var>|env=[!]<var>env-variable</var>
[<var>host</var>|env=[!]<var>env-variable</var>] ...</a></td><td></td><td>dh</td><td>T</td></tr><tr><td class="descr" colspan="4">Controls which hosts can access an area of the
server</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#allowconnect">AllowCONNECT <var>port</var> [<var>port</var>] ...</a></td><td> 443 563 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Ports that are allowed to <code>CONNECT</code> through the
proxy</td></tr>
<tr><td><a href="core.html#allowencodedslashes">AllowEncodedSlashes On|Off</a></td><td> Off </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Kodlanmış dosya yolu ayracı içeren URL’lere izin verilip
  verilmeyeceğini belirler.</td></tr>
<tr class="odd"><td><a href="core.html#allowoverride">AllowOverride All|None|<var>yönerge-türü</var>
[<var>yönerge-türü</var>] ...</a></td><td> All </td><td>d</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4"><code>.htaccess</code> dosyalarında bulunmasına izin verilen
  yönerge türleri belirtilir.</td></tr>
<tr><td><a href="mod_authn_anon.html#anonymous">Anonymous <var>user</var> [<var>user</var>] ...</a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Specifies userIDs that are allowed access without
password verification</td></tr>
<tr class="odd"><td><a href="mod_authn_anon.html#anonymous_logemail">Anonymous_LogEmail On|Off</a></td><td> On </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets whether the password entered will be logged in the
error log</td></tr>
<tr><td><a href="mod_authn_anon.html#anonymous_mustgiveemail">Anonymous_MustGiveEmail On|Off</a></td><td> On </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Specifies whether blank passwords are allowed</td></tr>
<tr class="odd"><td><a href="mod_authn_anon.html#anonymous_nouserid">Anonymous_NoUserID On|Off</a></td><td> Off </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets whether the userID field may be empty</td></tr>
<tr><td><a href="mod_authn_anon.html#anonymous_verifyemail">Anonymous_VerifyEmail On|Off</a></td><td> Off </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets whether to check the password field for a correctly
formatted email address</td></tr>
<tr class="odd"><td><a href="mod_auth_basic.html#authbasicauthoritative">AuthBasicAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Sets whether authorization and authentication are passed to
lower level modules</td></tr>
<tr><td><a href="mod_auth_basic.html#authbasicprovider">AuthBasicProvider <var>provider-name</var>
[<var>provider-name</var>] ...</a></td><td> file </td><td>dh</td><td>T</td></tr><tr><td class="descr" colspan="4">Sets the authentication provider(s) for this location</td></tr>
<tr class="odd"><td><a href="mod_authn_dbd.html#authdbduserpwquery">AuthDBDUserPWQuery <var>query</var></a></td><td></td><td>d</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">SQL query to look up a password for a user</td></tr>
<tr><td><a href="mod_authn_dbd.html#authdbduserrealmquery">AuthDBDUserRealmQuery <var>query</var></a></td><td></td><td>d</td><td>E</td></tr><tr><td class="descr" colspan="4">SQL query to look up a password hash for a user and realm.
</td></tr>
<tr class="odd"><td><a href="mod_authz_dbm.html#authdbmgroupfile">AuthDBMGroupFile <var>file-path</var></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the name of the database file containing the list
of user groups for authorization</td></tr>
<tr><td><a href="mod_authn_dbm.html#authdbmtype">AuthDBMType default|SDBM|GDBM|NDBM|DB</a></td><td> default </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the type of database file that is used to
store passwords</td></tr>
<tr class="odd"><td><a href="mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile <var>file-path</var></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the name of a database file containing the list of users and
passwords for authentication</td></tr>
<tr><td><a href="mod_authn_default.html#authdefaultauthoritative">AuthDefaultAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>T</td></tr><tr><td class="descr" colspan="4">Sets whether authentication is passed to lower level
modules</td></tr>
<tr class="odd"><td><a href="mod_auth_digest.html#authdigestalgorithm">AuthDigestAlgorithm MD5|MD5-sess</a></td><td> MD5 </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Selects the algorithm used to calculate the challenge and
response hashes in digest authentication</td></tr>
<tr><td><a href="mod_auth_digest.html#authdigestdomain">AuthDigestDomain <var>URI</var> [<var>URI</var>] ...</a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">URIs that are in the same protection space for digest
authentication</td></tr>
<tr class="odd"><td><a href="mod_auth_digest.html#authdigestnccheck">AuthDigestNcCheck On|Off</a></td><td> Off </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enables or disables checking of the nonce-count sent by the
server</td></tr>
<tr><td><a href="mod_auth_digest.html#authdigestnonceformat">AuthDigestNonceFormat <var>format</var></a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Determines how the nonce is generated</td></tr>
<tr class="odd"><td><a href="mod_auth_digest.html#authdigestnoncelifetime">AuthDigestNonceLifetime <var>seconds</var></a></td><td> 300 </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">How long the server nonce is valid</td></tr>
<tr><td><a href="mod_auth_digest.html#authdigestprovider">AuthDigestProvider <var>provider-name</var>
[<var>provider-name</var>] ...</a></td><td> file </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the authentication provider(s) for this location</td></tr>
<tr class="odd"><td><a href="mod_auth_digest.html#authdigestqop">AuthDigestQop none|auth|auth-int [auth|auth-int]</a></td><td> auth </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Determines the quality-of-protection to use in digest
authentication</td></tr>
<tr><td><a href="mod_auth_digest.html#authdigestshmemsize">AuthDigestShmemSize <var>size</var></a></td><td> 1000 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">The amount of shared memory to allocate for keeping track
of clients</td></tr>
<tr class="odd"><td><a href="mod_authz_groupfile.html#authgroupfile">AuthGroupFile <var>file-path</var></a></td><td></td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the name of a text file containing the list
of user groups for authorization</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authldapbinddn">AuthLDAPBindDN <em>distinguished-name</em></a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Optional DN to use in binding to the LDAP server</td></tr>
<tr class="odd"><td><a href="mod_authnz_ldap.html#authldapbindpassword">AuthLDAPBindPassword <em>password</em></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Password used in conjuction with the bind DN</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authldapcharsetconfig">AuthLDAPCharsetConfig <em>file-path</em></a></td><td></td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Language to charset conversion configuration file</td></tr>
<tr class="odd"><td><a href="mod_authnz_ldap.html#authldapcomparednonserver">AuthLDAPCompareDNOnServer on|off</a></td><td> on </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Use the LDAP server to compare the DNs</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authldapdereferencealiases">AuthLDAPDereferenceAliases never|searching|finding|always</a></td><td> Always </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">When will the module de-reference aliases</td></tr>
<tr class="odd"><td><a href="mod_authnz_ldap.html#authldapgroupattribute">AuthLDAPGroupAttribute <em>attribute</em></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">LDAP attributes used to check for group membership</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authldapgroupattributeisdn">AuthLDAPGroupAttributeIsDN on|off</a></td><td> on </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Use the DN of the client username when checking for
group membership</td></tr>
<tr class="odd"><td><a href="mod_authnz_ldap.html#authldapremoteuserattribute">AuthLDAPRemoteUserAttribute uid</a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Use the value of the attribute returned during the user
query to set the REMOTE_USER environment variable</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authldapremoteuserisdn">AuthLDAPRemoteUserIsDN on|off</a></td><td> off </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Use the DN of the client username to set the REMOTE_USER
environment variable</td></tr>
<tr class="odd"><td><a href="mod_authnz_ldap.html#authldapurl">AuthLDAPUrl <em>url [NONE|SSL|TLS|STARTTLS]</em></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">URL specifying the LDAP search parameters</td></tr>
<tr><td><a href="core.html#authname">AuthName <var>yetki-alanı</var></a></td><td></td><td>dh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">HTTP kimlik doğrulamasında kullanmak için yetki alanı ismi</td></tr>
<tr class="odd"><td><a href="mod_authn_alias.html#authnprovideralias">&lt;AuthnProviderAlias <var>baseProvider Alias</var>&gt;
... &lt;/AuthnProviderAlias&gt;</a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enclose a group of directives that represent an
extension of a base authentication provider and referenced by
the specified alias</td></tr>
<tr><td><a href="core.html#authtype">AuthType Basic|Digest</a></td><td></td><td>dh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Kullanıcı kimlik doğrulaması türü</td></tr>
<tr class="odd"><td><a href="mod_authn_file.html#authuserfile">AuthUserFile <var>file-path</var></a></td><td></td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the name of a text file containing the list of users and
passwords for authentication</td></tr>
<tr><td><a href="mod_authz_dbm.html#authzdbmauthoritative">AuthzDBMAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr class="odd"><td><a href="mod_authz_dbm.html#authzdbmtype">AuthzDBMType default|SDBM|GDBM|NDBM|DB</a></td><td> default </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the type of database file that is used to
store list of user groups</td></tr>
<tr><td><a href="mod_authz_default.html#authzdefaultauthoritative">AuthzDefaultAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>T</td></tr><tr><td class="descr" colspan="4">Sets whether authorization is passed to lower level
modules</td></tr>
<tr class="odd"><td><a href="mod_authz_groupfile.html#authzgroupfileauthoritative">AuthzGroupFileAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><td><a href="mod_authnz_ldap.html#authzldapauthoritative">AuthzLDAPAuthoritative on|off</a></td><td> on </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Prevent other authentication modules from
authenticating the user if this one fails</td></tr>
<tr class="odd"><td><a href="mod_authz_owner.html#authzownerauthoritative">AuthzOwnerAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr><td><a href="mod_authz_user.html#authzuserauthoritative">AuthzUserAuthoritative On|Off</a></td><td> On </td><td>dh</td><td>T</td></tr><tr><td class="descr" colspan="4">Sets whether authorization will be passed on to lower level
modules</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#balancermember" id="B" name="B">BalancerMember [<var>balancerurl</var>] <var>url</var> [<var>key=value [key=value ...]]</var></a></td><td></td><td>d</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Add a member to a load balancing group</td></tr>
<tr><td><a href="mod_setenvif.html#browsermatch">BrowserMatch <em>düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
[[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Ortam değişkenlerini HTTP kullanıcı arayüzüne göre belirler.
</td></tr>
<tr class="odd"><td><a href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase <em>düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
[[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Ortam değişkenlerini HTTP kullanıcı arayüzünün harf büyüklüğüne
duyarsız eşleşmelerine bağlı olarak belirler.</td></tr>
<tr><td><a href="mod_log_config.html#bufferedlogs">BufferedLogs On|Off</a></td><td> Off </td><td>s</td><td>T</td></tr><tr><td class="descr" colspan="4">Günlük girdilerini diske yazmadan önce bellekte tamponlar
</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cachedefaultexpire" id="C" name="C">CacheDefaultExpire <var>seconds</var></a></td><td> 3600 (one hour) </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The default duration to cache a document when no expiry date is specified.</td></tr>
<tr><td><a href="mod_disk_cache.html#cachedirlength">CacheDirLength <var>length</var></a></td><td> 2 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">The number of characters in subdirectory names</td></tr>
<tr class="odd"><td><a href="mod_disk_cache.html#cachedirlevels">CacheDirLevels <var>levels</var></a></td><td> 3 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The number of levels of subdirectories in the
cache.</td></tr>
<tr><td><a href="mod_cache.html#cachedisable">CacheDisable <var> url-string</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Disable caching of specified URLs</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cacheenable">CacheEnable <var>cache_type</var> <var>url-string</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enable caching of specified URLs using a specified storage
manager</td></tr>
<tr><td><a href="mod_file_cache.html#cachefile">CacheFile <var>file-path</var> [<var>file-path</var>] ...</a></td><td></td><td>s</td><td>D</td></tr><tr><td class="descr" colspan="4">Cache a list of file handles at startup time</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cacheignorecachecontrol">CacheIgnoreCacheControl On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Ignore request to not serve cached content to client</td></tr>
<tr><td><a href="mod_cache.html#cacheignoreheaders">CacheIgnoreHeaders <var>header-string</var> [<var>header-string</var>] ...</a></td><td> None </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Do not store the given HTTP header(s) in the cache.
</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cacheignorenolastmod">CacheIgnoreNoLastMod On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Ignore the fact that a response has no Last Modified
header.</td></tr>
<tr><td><a href="mod_cache.html#cacheignorequerystring">CacheIgnoreQueryString On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Ignore query string when caching</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers <var>identifier</var> [<var>identifier</var>] ...</a></td><td> None </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Ignore defined session identifiers encoded in the URL when caching
</td></tr>
<tr><td><a href="mod_cache.html#cachelastmodifiedfactor">CacheLastModifiedFactor <var>float</var></a></td><td> 0.1 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">The factor used to compute an expiry date based on the
LastModified date.</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cachemaxexpire">CacheMaxExpire <var>seconds</var></a></td><td> 86400 (one day) </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The maximum time in seconds to cache a document</td></tr>
<tr><td><a href="mod_disk_cache.html#cachemaxfilesize">CacheMaxFileSize <var>bytes</var></a></td><td> 1000000 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">The maximum size (in bytes) of a document to be placed in the
cache</td></tr>
<tr class="odd"><td><a href="mod_disk_cache.html#cacheminfilesize">CacheMinFileSize <var>bytes</var></a></td><td> 1 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The minimum size (in bytes) of a document to be placed in the
cache</td></tr>
<tr><td><a href="mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs On|Off</a></td><td> Off </td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Allows content-negotiated documents to be 
cached by proxy servers</td></tr>
<tr class="odd"><td><a href="mod_disk_cache.html#cacheroot">CacheRoot <var>directory</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The directory root under which cache files are
stored</td></tr>
<tr><td><a href="mod_cache.html#cachestorenostore">CacheStoreNoStore On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Attempt to cache requests or responses that have been marked as no-store.</td></tr>
<tr class="odd"><td><a href="mod_cache.html#cachestoreprivate">CacheStorePrivate On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Attempt to cache responses that the server has marked as private</td></tr>
<tr><td><a href="core.html#cgimapextension">CGIMapExtension <var>cgi-yolu</var> <var>.uzantı</var></a></td><td></td><td>dh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">CGI betik yorumlayıcısını saptama tekniğini belirler.
</td></tr>
<tr class="odd"><td><a href="mod_charset_lite.html#charsetdefault">CharsetDefault <var>charset</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Charset to translate into</td></tr>
<tr><td><a href="mod_charset_lite.html#charsetoptions">CharsetOptions <var>option</var> [<var>option</var>] ...</a></td><td> DebugLevel=0 NoImpl +</td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Configures charset translation behavior</td></tr>
<tr class="odd"><td><a href="mod_charset_lite.html#charsetsourceenc">CharsetSourceEnc <var>charset</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Source charset of files</td></tr>
<tr><td><a href="mod_speling.html#checkcaseonly">CheckCaseOnly on|off</a></td><td> Off </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Limits the action of the speling module to case corrections</td></tr>
<tr class="odd"><td><a href="mod_speling.html#checkspelling">CheckSpelling on|off</a></td><td> Off </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enables the spelling 
module</td></tr>
<tr><td><a href="mpm_common.html#chrootdir">ChrootDir <var>/dizin/yolu/</var></a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Başlatıldıktan sonra Apache’nin chroot(8) yapacağı dizin
</td></tr>
<tr class="odd"><td><a href="core.html#contentdigest">ContentDigest On|Off</a></td><td> Off </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4"><code>Content-MD5</code> HTTP yanıt başlıklarının üretimini
  etkin kılar.</td></tr>
<tr><td><a href="mod_usertrack.html#cookiedomain">CookieDomain <em>domain</em></a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">The domain to which the tracking cookie applies</td></tr>
<tr class="odd"><td><a href="mod_usertrack.html#cookieexpires">CookieExpires <em>expiry-period</em></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Expiry time for the tracking cookie</td></tr>
<tr><td><a href="mod_log_config.html#cookielog">CookieLog <var>dosya-adı</var></a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Çerezleri günlüğe kaydetmek için dosya ismi belirtmekte
kullanılır.</td></tr>
<tr class="odd"><td><a href="mod_usertrack.html#cookiename">CookieName <em>token</em></a></td><td> Apache </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Name of the tracking cookie</td></tr>
<tr><td><a href="mod_usertrack.html#cookiestyle">CookieStyle
    <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></a></td><td> Netscape </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Format of the cookie header field</td></tr>
<tr class="odd"><td><a href="mod_usertrack.html#cookietracking">CookieTracking on|off</a></td><td> off </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enables tracking cookie</td></tr>
<tr><td><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory <var>dizin</var></a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4"><code>core</code> dosyasını dökümlemek üzere Apache’nin geçmeye
  çalışacağı dizin.</td></tr>
<tr class="odd"><td><a href="mod_log_config.html#customlog">CustomLog  <var>dosya</var>|<var>borulu-süreç</var>
<var>biçem</var>|<var>takma-ad</var>
[env=[!]<var>ortam-değişkeni</var>]</a></td><td></td><td>sk</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Günlük dosyasın ismini ve girdi biçemini belirler.</td></tr>
<tr><td><a href="mod_dav.html#dav" id="D" name="D">Dav On|Off|<var>provider-name</var></a></td><td> Off </td><td>d</td><td>E</td></tr><tr><td class="descr" colspan="4">Enable WebDAV HTTP methods</td></tr>
<tr class="odd"><td><a href="mod_dav.html#davdepthinfinity">DavDepthInfinity on|off</a></td><td> off </td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Allow PROPFIND, Depth: Infinity requests</td></tr>
<tr><td><a href="mod_dav_lock.html#davgenericlockdb">DavGenericLockDB <var>file-path</var></a></td><td></td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Location of the DAV lock database</td></tr>
<tr class="odd"><td><a href="mod_dav_fs.html#davlockdb">DavLockDB <var>file-path</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Location of the DAV lock database</td></tr>
<tr><td><a href="mod_dav.html#davmintimeout">DavMinTimeout <var>seconds</var></a></td><td> 0 </td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Minimum amount of time the server holds a lock on
a DAV resource</td></tr>
<tr class="odd"><td><a href="mod_dbd.html#dbdexptime">DBDExptime <var>time-in-seconds</var></a></td><td> 300 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Keepalive time for idle connections</td></tr>
<tr><td><a href="mod_dbd.html#dbdkeep">DBDKeep <var>number</var></a></td><td> 2 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Maximum sustained number of connections</td></tr>
<tr class="odd"><td><a href="mod_dbd.html#dbdmax">DBDMax <var>number</var></a></td><td> 10 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Maximum number of connections</td></tr>
<tr><td><a href="mod_dbd.html#dbdmin">DBDMin <var>number</var></a></td><td> 1 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Minimum number of connections</td></tr>
<tr class="odd"><td><a href="mod_dbd.html#dbdparams">DBDParams
<var>param1</var>=<var>value1</var>[,<var>param2</var>=<var>value2</var>]</a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Parameters for database connection</td></tr>
<tr><td><a href="mod_dbd.html#dbdpersist">DBDPersist On|Off</a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Whether to use persistent connections</td></tr>
<tr class="odd"><td><a href="mod_dbd.html#dbdpreparesql">DBDPrepareSQL <var>"SQL statement"</var> <var>label</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Define an SQL prepared statement</td></tr>
<tr><td><a href="mod_dbd.html#dbdriver">DBDriver <var>name</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Specify an SQL driver</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#defaulticon">DefaultIcon <var>URL-yolu</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Özel bir simge atanmamış dosyalar için gösterilecek simgeyi
belirler.</td></tr>
<tr><td><a href="mod_mime.html#defaultlanguage">DefaultLanguage <var>MIME-lang</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Sets all files in the given scope to the specified
language</td></tr>
<tr class="odd"><td><a href="core.html#defaulttype">DefaultType <var>MIME-türü</var>|none</a></td><td> text/plain </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucunun MIME türünü saptayamadığı durumda göndereceği MIME
  içerik türünü belirler.</td></tr>
<tr><td><a href="mod_deflate.html#deflatebuffersize">DeflateBufferSize <var>value</var></a></td><td> 8096 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Fragment size to be compressed at one time by zlib</td></tr>
<tr class="odd"><td><a href="mod_deflate.html#deflatecompressionlevel">DeflateCompressionLevel <var>value</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">How much compression do we apply to the output</td></tr>
<tr><td><a href="mod_deflate.html#deflatefilternote">DeflateFilterNote [<var>type</var>] <var>notename</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Places the compression ratio in a note for logging</td></tr>
<tr class="odd"><td><a href="mod_deflate.html#deflatememlevel">DeflateMemLevel <var>value</var></a></td><td> 9 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">How much memory should be used by zlib for compression</td></tr>
<tr><td><a href="mod_deflate.html#deflatewindowsize">DeflateWindowSize <var>value</var></a></td><td> 15 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Zlib compression window size</td></tr>
<tr class="odd"><td><a href="mod_authz_host.html#deny"> Deny from all|<var>host</var>|env=[!]<var>env-variable</var>
[<var>host</var>|env=[!]<var>env-variable</var>] ...</a></td><td></td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Controls which hosts are denied access to the
server</td></tr>
<tr><td><a href="core.html#directory">&lt;Directory <var>dizin-yolu</var>&gt;
... &lt;/Directory&gt;</a></td><td></td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sadece ismi belirtilen dosya sistemi dizininde ve bunun
  altdizinlerinde uygulanacak bir yönerge grubunu sarmalar.</td></tr>
<tr class="odd"><td><a href="mod_dir.html#directoryindex">DirectoryIndex
    <var>yerel-url</var> [<var>yerel-url</var>] ...</a></td><td> index.html </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">İstemci bir dizin istediğinde dizin içeriğini listeler.
</td></tr>
<tr><td><a href="core.html#directorymatch">&lt;DirectoryMatch <var>düzifd</var>&gt;
... &lt;/DirectoryMatch&gt;</a></td><td></td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Bir düzenli ifade ile eşleşen dosya sistemi dizininde ve bunun
  altdizinlerinde uygulanacak bir yönerge grubunu sarmalar.</td></tr>
<tr class="odd"><td><a href="mod_dir.html#directoryslash">DirectorySlash On|Off</a></td><td> On </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bölü çizgisi ile biten yönlendirmeleri açar/kapar.</td></tr>
<tr><td><a href="core.html#documentroot">DocumentRoot <var>dizin-yolu</var></a></td><td> /usr/local/apache/h +</td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İstemciye görünür olan ana belge ağacının kök dizinini belirler.</td></tr>
<tr class="odd"><td><a href="mod_dumpio.html#dumpioinput">DumpIOInput On|Off</a></td><td> Off </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Dump all input data to the error log</td></tr>
<tr><td><a href="mod_dumpio.html#dumpiologlevel">DumpIOLogLevel <var>level</var></a></td><td> debug </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Controls the logging level of the DumpIO output</td></tr>
<tr class="odd"><td><a href="mod_dumpio.html#dumpiooutput">DumpIOOutput On|Off</a></td><td> Off </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Dump all output data to the error log</td></tr>
<tr><td><a href="mpm_common.html#enableexceptionhook" id="E" name="E">EnableExceptionHook On|Off</a></td><td> Off </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Bir çöküş sonrası olağandışılık eylemcilerini çalıştıracak
  kancayı etkin kılar.</td></tr>
<tr class="odd"><td><a href="core.html#enablemmap">EnableMMAP On|Off</a></td><td> On </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Teslimat sırasında okunacak dosyalar için bellek eşlemeyi etkin
  kılar.</td></tr>
<tr><td><a href="core.html#enablesendfile">EnableSendfile On|Off</a></td><td> On </td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Dosyaların istemciye tesliminde çekirdeğin dosya gönderme
  desteğinin kullanımını etkin kılar.</td></tr>
<tr class="odd"><td><a href="core.html#errordocument">ErrorDocument <var>hata-kodu</var> <var>belge</var></a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bir hata durumunda sunucunun istemciye ne döndüreceğini
  belirler.</td></tr>
<tr><td><a href="core.html#errorlog"> ErrorLog <var>dosya-yolu</var>|syslog[:<var>oluşum</var>]</a></td><td> logs/error_log (Uni +</td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucunun hata günlüğünü tutacağı yeri belirler.</td></tr>
<tr class="odd"><td><a href="mod_example.html#example">Example</a></td><td></td><td>skdh</td><td>D</td></tr><tr class="odd"><td class="descr" colspan="4">Demonstration directive to illustrate the Apache module
API</td></tr>
<tr><td><a href="mod_expires.html#expiresactive">ExpiresActive On|Off</a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Enables generation of <code>Expires</code>
headers</td></tr>
<tr class="odd"><td><a href="mod_expires.html#expiresbytype">ExpiresByType <var>MIME-type</var>
<var>&lt;code&gt;seconds</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Value of the <code>Expires</code> header configured
by MIME type</td></tr>
<tr><td><a href="mod_expires.html#expiresdefault">ExpiresDefault <var>&lt;code&gt;seconds</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Default algorithm for calculating expiration time</td></tr>
<tr class="odd"><td><a href="mod_status.html#extendedstatus">ExtendedStatus On|Off</a></td><td> Off </td><td>s</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Her istekte ek durum bilgisinin toplanmasını sağlar.
</td></tr>
<tr><td><a href="mod_ext_filter.html#extfilterdefine">ExtFilterDefine <var>filtername</var> <var>parameters</var></a></td><td></td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Define an external filter</td></tr>
<tr class="odd"><td><a href="mod_ext_filter.html#extfilteroptions">ExtFilterOptions <var>option</var> [<var>option</var>] ...</a></td><td> DebugLevel=0 NoLogS +</td><td>d</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> options</td></tr>
<tr><td><a href="core.html#fileetag" id="F" name="F">FileETag <var>bileşen</var> ...</a></td><td> INode MTime Size </td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4"><code>ETag</code> HTTP yanıt başlığını oluşturmakta kullanılacak
  dosya özniteliklerini belirler.</td></tr>
<tr class="odd"><td><a href="core.html#files">&lt;Files <var>dosya-adı</var>&gt; ... &lt;/Files&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Dosya isimleriyle eşleşme halinde uygulanacak yönergeleri
  içerir.</td></tr>
<tr><td><a href="core.html#filesmatch">&lt;FilesMatch <var>düzifd</var>&gt; ... &lt;/FilesMatch&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Düzenli ifadelerin dosya isimleriyle eşleşmesi halinde
  uygulanacak yönergeleri içerir.</td></tr>
<tr class="odd"><td><a href="mod_filter.html#filterchain">FilterChain [+=-@!]<var>filter-name</var> <var>...</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Configure the filter chain</td></tr>
<tr><td><a href="mod_filter.html#filterdeclare">FilterDeclare <var>filter-name</var> <var>[type]</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Declare a smart filter</td></tr>
<tr class="odd"><td><a href="mod_filter.html#filterprotocol">FilterProtocol <var>filter-name</var> [<var>provider-name</var>]
    <var>proto-flags</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Deal with correct HTTP protocol handling</td></tr>
<tr><td><a href="mod_filter.html#filterprovider">FilterProvider <var>filter-name</var> <var>provider-name</var>
 [req|resp|env]=<var>dispatch</var> <var>match</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Register a content filter</td></tr>
<tr class="odd"><td><a href="mod_filter.html#filtertrace">FilterTrace <var>filter-name</var> <var>level</var></a></td><td></td><td>skd</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Get debug/diagnostic information from
    <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code></td></tr>
<tr><td><a href="mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</a></td><td> Prefer </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Action to take if a single acceptable document is not 
found</td></tr>
<tr class="odd"><td><a href="core.html#forcetype">ForceType <var>MIME-türü</var>|None</a></td><td></td><td>dh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bütün dosyaların belirtilen MIME içerik türüyle sunulmasına
  sebep olur.</td></tr>
<tr><td><a href="mod_log_forensic.html#forensiclog">ForensicLog <var>dosya-adı</var>|<var>borulu-süreç</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Adli günlük için dosya ismini belirler.</td></tr>
<tr class="odd"><td><a href="mpm_common.html#gracefulshutdowntimeout" id="G" name="G">GracefulShutDownTimeout <var>saniye</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucunun nazikçe kapatılmasının ardından ana süreç çıkana kadar
  geçecek süre için bir zaman aşımı belirler.</td></tr>
<tr><td><a href="mpm_common.html#group">Group <var>unix-grubu</var></a></td><td> #-1 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">İsteklere yanıt verecek sunucunun ait olacağı grubu belirler.</td></tr>
<tr class="odd"><td><a href="mod_headers.html#header" id="H" name="H">Header [<var>condition</var>] set|append|merge|add|unset|echo|edit
<var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure HTTP response headers</td></tr>
<tr><td><a href="mod_autoindex.html#headername">HeaderName <var>dosya-ismi</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Dizin listesinin tepesine yerleştirilecek dosyanın ismini
belirler.</td></tr>
<tr class="odd"><td><a href="core.html#hostnamelookups">HostnameLookups On|Off|Double</a></td><td> Off </td><td>skd</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">İstemci IP adresleri üzerinde DNS sorgularını etkin kılar.
</td></tr>
<tr><td><a href="mod_ident.html#identitycheck" id="I" name="I">IdentityCheck On|Off</a></td><td> Off </td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Enables logging of the RFC 1413 identity of the remote
user</td></tr>
<tr class="odd"><td><a href="mod_ident.html#identitychecktimeout">IdentityCheckTimeout <var>seconds</var></a></td><td> 30 </td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Determines the timeout duration for ident requests</td></tr>
<tr><td><a href="core.html#ifdefine">&lt;IfDefine [!]<var>parametre-adı</var>&gt; ...
    &lt;/IfDefine&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Başlatma sırasında bir doğruluk sınamasından sonra işleme
sokulacak yönergeleri sarmalar.</td></tr>
<tr class="odd"><td><a href="core.html#ifmodule">&lt;IfModule [!]<var>modül-dosyası</var>|<var>modül-betimleyici</var>&gt; ...
    &lt;/IfModule&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Belli bir modülün varlığına veya yokluğuna göre işleme sokulacak
yönergeleri sarmalar.</td></tr>
<tr><td><a href="mod_version.html#ifversion">&lt;IfVersion [[!]<var>operator</var>] <var>version</var>&gt; ...
&lt;/IfVersion&gt;</a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">contains version dependent configuration</td></tr>
<tr class="odd"><td><a href="mod_imagemap.html#imapbase">ImapBase map|referer|<var>URL</var></a></td><td> http://servername/ </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Default <code>base</code> for imagemap files</td></tr>
<tr><td><a href="mod_imagemap.html#imapdefault">ImapDefault error|nocontent|map|referer|<var>URL</var></a></td><td> nocontent </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Default action when an imagemap is called with coordinates
that are not explicitly mapped</td></tr>
<tr class="odd"><td><a href="mod_imagemap.html#imapmenu">ImapMenu none|formatted|semiformatted|unformatted</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Action if no coordinates are given when calling
an imagemap</td></tr>
<tr><td><a href="core.html#include">Include <var>dosya-yolu</var>|<var>dizin-yolu</var></a></td><td></td><td>skd</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucu yapılandırma dosyalarının başka dosyaları içermesini sağlar.
</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#indexheadinsert">IndexHeadInsert <var>"imlenim ..."</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bir dizin sayfasının HEAD bölümüne metin yerleştirir.
</td></tr>
<tr><td><a href="mod_autoindex.html#indexignore">IndexIgnore <var>dosya</var> [<var>dosya</var>] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Dizin içerik listesinden gizlenecek dosyaların listesi belirtilir.
</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#indexoptions">IndexOptions  [+|-]<var>seçenek</var> [[+|-]<var>seçenek</var>]
...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Dizin içerik listesini yapılandıracak seçenekler belirtilir.
</td></tr>
<tr><td><a href="mod_autoindex.html#indexorderdefault">IndexOrderDefault Ascending|Descending
Name|Date|Size|Description</a></td><td> Ascending Name </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Dizin içerik listesinin öntanımlı sıralamasını belirler.
</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#indexstylesheet">IndexStyleSheet <var>url-yolu</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Dizin listesine bir biçembent ekler.</td></tr>
<tr><td><a href="mod_isapi.html#isapiappendlogtoerrors">ISAPIAppendLogToErrors on|off</a></td><td> off </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from
ISAPI extensions to the error log</td></tr>
<tr class="odd"><td><a href="mod_isapi.html#isapiappendlogtoquery">ISAPIAppendLogToQuery on|off</a></td><td> on </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Record <code>HSE_APPEND_LOG_PARAMETER</code> requests from
ISAPI extensions to the query field</td></tr>
<tr><td><a href="mod_isapi.html#isapicachefile">ISAPICacheFile <var>file-path</var> [<var>file-path</var>]
...</a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">ISAPI .dll files to be loaded at startup</td></tr>
<tr class="odd"><td><a href="mod_isapi.html#isapifakeasync">ISAPIFakeAsync on|off</a></td><td> off </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Fake asynchronous support for ISAPI callbacks</td></tr>
<tr><td><a href="mod_isapi.html#isapilognotsupported">ISAPILogNotSupported on|off</a></td><td> off </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Log unsupported feature requests from ISAPI
extensions</td></tr>
<tr class="odd"><td><a href="mod_isapi.html#isapireadaheadbuffer">ISAPIReadAheadBuffer <var>size</var></a></td><td> 49152 </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Size of the Read Ahead Buffer sent to ISAPI
extensions</td></tr>
<tr><td><a href="core.html#keepalive" id="K" name="K">KeepAlive On|Off</a></td><td> On </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">HTTP kalıcı bağlantılarını etkin kılar</td></tr>
<tr class="odd"><td><a href="core.html#keepalivetimeout">KeepAliveTimeout <var>saniye</var></a></td><td> 5 </td><td>sk</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bir kalıcı bağlantıda sunucunun bir sonraki isteği bekleme süresi
</td></tr>
<tr><td><a href="mod_negotiation.html#languagepriority" id="L" name="L">LanguagePriority <var>MIME-lang</var> [<var>MIME-lang</var>]
...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">The precendence of language variants for cases where
the client does not express a preference</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldapcacheentries">LDAPCacheEntries <var>number</var></a></td><td> 1024 </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Maximum number of entries in the primary LDAP cache</td></tr>
<tr><td><a href="mod_ldap.html#ldapcachettl">LDAPCacheTTL <var>seconds</var></a></td><td> 600 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Time that cached items remain valid</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldapconnectiontimeout">LDAPConnectionTimeout <var>seconds</var></a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Specifies the socket connection timeout in seconds</td></tr>
<tr><td><a href="mod_ldap.html#ldapopcacheentries">LDAPOpCacheEntries <var>number</var></a></td><td> 1024 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Number of entries used to cache LDAP compare 
operations</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldapopcachettl">LDAPOpCacheTTL <var>seconds</var></a></td><td> 600 </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Time that entries in the operation cache remain
valid</td></tr>
<tr><td><a href="mod_ldap.html#ldapsharedcachefile">LDAPSharedCacheFile <var>directory-path/filename</var></a></td><td></td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the shared memory cache file</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldapsharedcachesize">LDAPSharedCacheSize <var>bytes</var></a></td><td> 102400 </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Size in bytes of the shared-memory cache</td></tr>
<tr><td><a href="mod_ldap.html#ldaptrustedclientcert">LDAPTrustedClientCert <var>type</var> <var>directory-path/filename/nickname</var> <var>[password]</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the file containing or nickname referring to a per
connection client certificate. Not all LDAP toolkits support per
connection client certificates.</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldaptrustedglobalcert">LDAPTrustedGlobalCert <var>type</var> <var>directory-path/filename</var> <var>[password]</var></a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the file or database containing global trusted
Certificate Authority or global client certificates</td></tr>
<tr><td><a href="mod_ldap.html#ldaptrustedmode">LDAPTrustedMode <var>type</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Specifies the SSL/TLS mode to be used when connecting to an LDAP server.</td></tr>
<tr class="odd"><td><a href="mod_ldap.html#ldapverifyservercert">LDAPVerifyServerCert <var>On|Off</var></a></td><td> On </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Force server certificate verification</td></tr>
<tr><td><a href="core.html#limit">&lt;Limit <var>yöntem</var> [<var>yöntem</var>] ... &gt; ...
    &lt;/Limit&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Erişimi sınırlanacak HTTP yöntemleri için erişim sınırlayıcıları
sarmalar.</td></tr>
<tr class="odd"><td><a href="core.html#limitexcept">&lt;LimitExcept <var>yöntem</var> [<var>yöntem</var>] ... &gt; ...
    &lt;/LimitExcept&gt;</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">İsimleri belirtilenler dışında kalan HTTP yöntemleri için
kullanılacak erişim sınırlayıcıları sarmalar.</td></tr>
<tr><td><a href="core.html#limitinternalrecursion">LimitInternalRecursion <var>sayı</var> [<var>sayı</var>]</a></td><td> 10 </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Dahili yönlendirmelerin ve istek içi isteklerin azami sayısını
belirler.</td></tr>
<tr class="odd"><td><a href="core.html#limitrequestbody">LimitRequestBody <var>bayt-sayısı</var></a></td><td> 0 </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">İstemci tarafından gönderilen HTTP istek gövdesinin toplam
uzunluğunu sınırlar.</td></tr>
<tr><td><a href="core.html#limitrequestfields">LimitRequestFields <var>sayı</var></a></td><td> 100 </td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İstemciden kabul edilecek HTTP isteği başlık alanlarının sayısını
sınırlar.</td></tr>
<tr class="odd"><td><a href="core.html#limitrequestfieldsize">LimitRequestFieldSize <var>bayt-sayısı</var></a></td><td> 8190 </td><td>s</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">İstemciden kabul edilecek HTTP isteği başlık uzunluğunu sınırlar.
</td></tr>
<tr><td><a href="core.html#limitrequestline">LimitRequestLine <var>bayt-sayısı</var></a></td><td> 8190 </td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İstemciden kabul edilecek HTTP istek satırının uzunluğunu sınırlar.
</td></tr>
<tr class="odd"><td><a href="core.html#limitxmlrequestbody">LimitXMLRequestBody <var>bayt-sayısı</var></a></td><td> 1000000 </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bir XML temelli istek gövdesinin uzunluğunu sınırlar.</td></tr>
<tr><td><a href="mpm_common.html#listen">Listen [<var>IP-adresi</var>:]<var>port-numarası</var>
  [<var>protokol</var>]</a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Sunucunun dinleyeceği IP adresini ve portu belirler.</td></tr>
<tr class="odd"><td><a href="mpm_common.html#listenbacklog">ListenBacklog <var>kuyruk-uzunluğu</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Bekleyen bağlantılar kuyruğunun azami uzunluğunu
  belirler</td></tr>
<tr><td><a href="mod_so.html#loadfile">LoadFile <em>dosya-ismi</em> [<em>dosya-ismi</em>] ...</a></td><td></td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler.
</td></tr>
<tr class="odd"><td><a href="mod_so.html#loadmodule">LoadModule <em>modül dosya-ismi</em></a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Belirtilen nesne dosyasını veya kütüphaneyi sunucu ile ilintiler
ve etkin modül listesine ekler.</td></tr>
<tr><td><a href="core.html#location">&lt;Location <var>URL-yolu</var>|<var>URL</var>&gt; ...
&lt;/Location&gt;</a></td><td></td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İçerdiği yönergeler sadece eşleşen URL’lere uygulanır.
</td></tr>
<tr class="odd"><td><a href="core.html#locationmatch">&lt;LocationMatch
    <var>düzifade</var>&gt; ... &lt;/LocationMatch&gt;</a></td><td></td><td>sk</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">İçerdiği yönergeler sadece düzenli ifadelerle eşleşen URL’lere
uygulanır.</td></tr>
<tr><td><a href="mpm_common.html#lockfile">LockFile <var>dosya</var></a></td><td> logs/accept.lock </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Apache HTTPd Sunucusunun ağ soketlerinden istekleri kabul eden
  çok sayıda çocuk süreci sıraya sokarken kullandığı kilit dosyasının yerini
  belirler.</td></tr>
<tr class="odd"><td><a href="mod_log_config.html#logformat">LogFormat <var>biçem</var>|<var>takma-ad</var>
[<var>takma-ad</var>]</a></td><td> "%h %l %u %t \"%r\" +</td><td>sk</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bir günlük dosyasında kullanılmak üzere girdi biçemi tanımlar.
</td></tr>
<tr><td><a href="core.html#loglevel">LogLevel <var>seviye</var></a></td><td> warn </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Hata günlüklerinin ayrıntı seviyesini belirler.</td></tr>
<tr class="odd"><td><a href="mpm_common.html#maxclients" id="M" name="M">MaxClients <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Aynı anda işleme sokulacak azami bağlantı sayısı</td></tr>
<tr><td><a href="core.html#maxkeepaliverequests">MaxKeepAliveRequests <var>sayı</var></a></td><td> 100 </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Bir kalıcı bağlantıda izin verilen istek sayısı</td></tr>
<tr class="odd"><td><a href="mpm_common.html#maxmemfree">MaxMemFree <var>kB-sayısı</var></a></td><td> 0 </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4"><code>free()</code> çağrılmaksızın ana bellek ayırıcının
  ayırmasına izin verilen azami bellek miktarını belirler.</td></tr>
<tr><td><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild <var>sayı</var></a></td><td> 10000 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Tek bir çocuk sürecin ömrü boyunca işleme sokabileceği istek
  sayısını sınırlamakta kullanılır.</td></tr>
<tr class="odd"><td><a href="beos.html#maxrequestsperthread">MaxRequestsPerThread <var>number</var></a></td><td> 0 </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Limit on the number of requests that an individual thread
will handle during its life</td></tr>
<tr><td><a href="prefork.html#maxspareservers">MaxSpareServers <var>sayı</var></a></td><td> 10 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Boştaki çocuk süreçlerin azami sayısı</td></tr>
<tr class="odd"><td><a href="mpm_common.html#maxsparethreads">MaxSpareThreads <var>number</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Boştaki azami evre sayısını belirler</td></tr>
<tr><td><a href="mpm_netware.html#maxthreads">MaxThreads <var>number</var></a></td><td> 2048 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Set the maximum number of worker threads</td></tr>
<tr class="odd"><td><a href="mod_mem_cache.html#mcachemaxobjectcount">MCacheMaxObjectCount <var>value</var></a></td><td> 1009 </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The maximum number of objects allowed to be placed in the
cache</td></tr>
<tr><td><a href="mod_mem_cache.html#mcachemaxobjectsize">MCacheMaxObjectSize <var>bytes</var></a></td><td> 10000 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">The maximum size (in bytes) of a document allowed in the
cache</td></tr>
<tr class="odd"><td><a href="mod_mem_cache.html#mcachemaxstreamingbuffer">MCacheMaxStreamingBuffer <var>size_in_bytes</var></a></td><td> the smaller of 1000 +</td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Maximum amount of a streamed response to buffer in memory
before declaring the response uncacheable</td></tr>
<tr><td><a href="mod_mem_cache.html#mcacheminobjectsize">MCacheMinObjectSize <var>bytes</var></a></td><td> 1 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">The minimum size (in bytes) of a document to be allowed in the
cache</td></tr>
<tr class="odd"><td><a href="mod_mem_cache.html#mcacheremovalalgorithm">MCacheRemovalAlgorithm LRU|GDSF</a></td><td> GDSF </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">The algorithm used to select documents for removal from the
cache</td></tr>
<tr><td><a href="mod_mem_cache.html#mcachesize">MCacheSize <var>KBytes</var></a></td><td> 100 </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">The maximum amount of memory used by the cache in
KBytes</td></tr>
<tr class="odd"><td><a href="mod_cern_meta.html#metadir">MetaDir <var>directory</var></a></td><td> .web </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Name of the directory to find CERN-style meta information
files</td></tr>
<tr><td><a href="mod_cern_meta.html#metafiles">MetaFiles on|off</a></td><td> off </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Activates CERN meta-file processing</td></tr>
<tr class="odd"><td><a href="mod_cern_meta.html#metasuffix">MetaSuffix <var>suffix</var></a></td><td> .meta </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">File name suffix for the file containg CERN-style
meta information</td></tr>
<tr><td><a href="mod_mime_magic.html#mimemagicfile">MimeMagicFile <var>file-path</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Enable MIME-type determination based on file contents
using the specified magic file</td></tr>
<tr class="odd"><td><a href="prefork.html#minspareservers">MinSpareServers <var>sayı</var></a></td><td> 5 </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Boştaki çocuk süreçlerin asgari sayısı</td></tr>
<tr><td><a href="mpm_common.html#minsparethreads">MinSpareThreads <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">İsteklerin ani artışında devreye girecek boştaki evrelerin asgari
  sayısını belirler.</td></tr>
<tr class="odd"><td><a href="mod_file_cache.html#mmapfile">MMapFile <var>file-path</var> [<var>file-path</var>] ...</a></td><td></td><td>s</td><td>D</td></tr><tr class="odd"><td class="descr" colspan="4">Map a list of files into memory at startup time</td></tr>
<tr><td><a href="mod_mime.html#modmimeusepathinfo">ModMimeUsePathInfo On|Off</a></td><td> Off </td><td>d</td><td>T</td></tr><tr><td class="descr" colspan="4">Tells <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> to treat <code>path_info</code>
components as part of the filename</td></tr>
<tr class="odd"><td><a href="mod_mime.html#multiviewsmatch">MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers
[Handlers|Filters]</a></td><td> NegotiatedOnly </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">The types of files that will be included when searching for
a matching file with MultiViews</td></tr>
<tr><td><a href="core.html#namevirtualhost" id="N" name="N">NameVirtualHost <var>adres</var>[:<var>port</var>]</a></td><td></td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İsme dayalı sanal konaklar için IP adresi belirtir</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#noproxy">NoProxy <var>host</var> [<var>host</var>] ...</a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Hosts, domains, or networks that will be connected to
directly</td></tr>
<tr><td><a href="mod_nw_ssl.html#nwssltrustedcerts">NWSSLTrustedCerts <var>filename</var> [<var>filename</var>] ...</a></td><td></td><td>s</td><td>T</td></tr><tr><td class="descr" colspan="4">List of additional client certificates</td></tr>
<tr class="odd"><td><a href="mod_nw_ssl.html#nwsslupgradeable">NWSSLUpgradeable [<var>IP-address</var>:]<var>portnumber</var></a></td><td></td><td>s</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Allows a connection to be upgraded to an SSL connection upon request</td></tr>
<tr><td><a href="core.html#options" id="O" name="O">Options
    [+|-]<var>seçenek</var> [[+|-]<var>seçenek</var>] ...</a></td><td> All </td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Belli bir dizinde geçerli olacak özellikleri yapılandırır.
</td></tr>
<tr class="odd"><td><a href="mod_authz_host.html#order"> Order <var>ordering</var></a></td><td> Deny,Allow </td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Controls the default access state and the order in which
<code class="directive">Allow</code> and <code class="directive">Deny</code> are
evaluated.</td></tr>
<tr><td><a href="mod_env.html#passenv" id="P" name="P">PassEnv <var>ortam-değişkeni</var> [<var>ortam-değişkeni</var>]
...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Ortam değişkenlerini kabuktan aktarır.</td></tr>
<tr class="odd"><td><a href="mpm_common.html#pidfile">PidFile <var>dosya</var></a></td><td> logs/httpd.pid </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Ana sürecin süreç kimliğinin (PID) kaydedileceği dosyayı belirler.</td></tr>
<tr><td><a href="mod_echo.html#protocolecho">ProtocolEcho On|Off</a></td><td> Off </td><td>sk</td><td>D</td></tr><tr><td class="descr" colspan="4">Turn the echo server on or off</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxy">&lt;Proxy <var>wildcard-url</var>&gt; ...&lt;/Proxy&gt;</a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Container for directives applied to proxied resources</td></tr>
<tr><td><a href="mod_proxy.html#proxybadheader">ProxyBadHeader IsError|Ignore|StartBody</a></td><td> IsError </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Determines how to handle bad header lines in a
response</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyblock">ProxyBlock *|<var>word</var>|<var>host</var>|<var>domain</var>
[<var>word</var>|<var>host</var>|<var>domain</var>] ...</a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Words, hosts, or domains that are banned from being
proxied</td></tr>
<tr><td><a href="mod_proxy.html#proxydomain">ProxyDomain <var>Domain</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Default domain name for proxied requests</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyerroroverride">ProxyErrorOverride On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Override error pages for proxied content</td></tr>
<tr><td><a href="mod_proxy.html#proxyftpdircharset">ProxyFtpDirCharset <var>character set</var></a></td><td> ISO-8859-1 </td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Define the character set for proxied FTP listings</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyiobuffersize">ProxyIOBufferSize <var>bytes</var></a></td><td> 8192 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Determine size of internal data throughput buffer</td></tr>
<tr><td><a href="mod_proxy.html#proxymatch">&lt;ProxyMatch <var>regex</var>&gt; ...&lt;/ProxyMatch&gt;</a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Container for directives applied to regular-expression-matched 
proxied resources</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxymaxforwards">ProxyMaxForwards <var>number</var></a></td><td> -1 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Maximium number of proxies that a request can be forwarded
through</td></tr>
<tr><td><a href="mod_proxy.html#proxypass">ProxyPass [<var>path</var>] !|<var>url</var> [<var>key=value</var>
<var>key=value</var> ...]] [nocanon] [interpolate]</a></td><td></td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Maps remote servers into the local server URL-space</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxypassinterpolateenv">ProxyPassInterpolateEnv On|Off</a></td><td> Off </td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enable Environment Variable interpolation in Reverse Proxy configurations</td></tr>
<tr><td><a href="mod_proxy.html#proxypassmatch">ProxyPassMatch [<var>regex</var>] !|<var>url</var> [<var>key=value</var>
	<var>[key=value</var> ...]]</a></td><td></td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Maps remote servers into the local server URL-space using regular expressions</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxypassreverse">ProxyPassReverse [<var>path</var>] <var>url</var>
[<var>interpolate</var>]</a></td><td></td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Adjusts the URL in HTTP response headers sent from a reverse
proxied server</td></tr>
<tr><td><a href="mod_proxy.html#proxypassreversecookiedomain">ProxyPassReverseCookieDomain <var>internal-domain</var>
<var>public-domain</var> [<var>interpolate</var>]</a></td><td></td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Adjusts the Domain string in Set-Cookie headers from a reverse-
proxied server</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxypassreversecookiepath">ProxyPassReverseCookiePath <var>internal-path</var>
<var>public-path</var> [<var>interpolate</var>]</a></td><td></td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Adjusts the Path string in Set-Cookie headers from a reverse-
proxied server</td></tr>
<tr><td><a href="mod_proxy.html#proxypreservehost">ProxyPreserveHost On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Use incoming Host HTTP request header for proxy
request</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyreceivebuffersize">ProxyReceiveBufferSize <var>bytes</var></a></td><td> 0 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Network buffer size for proxied HTTP and FTP
connections</td></tr>
<tr><td><a href="mod_proxy.html#proxyremote">ProxyRemote <var>match</var> <var>remote-server</var></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Remote proxy used to handle certain requests</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyremotematch">ProxyRemoteMatch <var>regex</var> <var>remote-server</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Remote proxy used to handle requests matched by regular
expressions</td></tr>
<tr><td><a href="mod_proxy.html#proxyrequests">ProxyRequests On|Off</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Enables forward (standard) proxy requests</td></tr>
<tr class="odd"><td><a href="mod_proxy_scgi.html#proxyscgiinternalredirect">ProxySCGIInternalRedirect On|Off</a></td><td> On </td><td>skd</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enable or disable internal redirect responses from the
backend</td></tr>
<tr><td><a href="mod_proxy_scgi.html#proxyscgisendfile">ProxySCGISendfile On|Off|<var>Headername</var></a></td><td> Off </td><td>skd</td><td>E</td></tr><tr><td class="descr" colspan="4">Enable evaluation of <var>X-Sendfile</var> pseudo response
header</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxyset">ProxySet <var>url</var> <var>key=value [key=value ...]</var></a></td><td></td><td>d</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Set various Proxy balancer or member parameters</td></tr>
<tr><td><a href="mod_proxy.html#proxystatus">ProxyStatus Off|On|Full</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Show Proxy LoadBalancer status in mod_status</td></tr>
<tr class="odd"><td><a href="mod_proxy.html#proxytimeout">ProxyTimeout <var>seconds</var></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Network timeout for proxied requests</td></tr>
<tr><td><a href="mod_proxy.html#proxyvia">ProxyVia On|Off|Full|Block</a></td><td> Off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Information provided in the <code>Via</code> HTTP response
header for proxied requests</td></tr>
<tr class="odd"><td><a href="mod_autoindex.html#readmename" id="R" name="R">ReadmeName <var>dosya-ismi</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Dizin listesinin sonuna yerleştirilecek dosyanın ismini
belirler.</td></tr>
<tr><td><a href="mpm_common.html#receivebuffersize">ReceiveBufferSize <var>bayt-sayısı</var></a></td><td> 0 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">TCP alım tamponu boyu</td></tr>
<tr class="odd"><td><a href="mod_alias.html#redirect">Redirect [<var>durum</var>] <var>URL-yolu</var>
<var>URL</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">İstemciyi, bir yönlendirme isteği döndürerek farklı bir URL’ye
yönlendirir.</td></tr>
<tr><td><a href="mod_alias.html#redirectmatch">RedirectMatch [<var>durum</var>] <var>düzenli-ifade</var>
<var>URL</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Geçerli URL ile eşleşen bir düzenli ifadeye dayanarak bir harici
yönlendirme gönderir.</td></tr>
<tr class="odd"><td><a href="mod_alias.html#redirectpermanent">RedirectPermanent <var>URL-yolu</var> <var>URL</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">İstemciyi, kalıcı bir yönlendirme isteği döndürerek farklı bir
URL’ye yönlendirir.</td></tr>
<tr><td><a href="mod_alias.html#redirecttemp">RedirectTemp <var>URL-yolu</var> <var>URL</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">İstemciyi, geçici bir yönlendirme isteği döndürerek farklı bir
URL’ye yönlendirir.</td></tr>
<tr class="odd"><td><a href="mod_mime.html#removecharset">RemoveCharset <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Removes any character set associations for a set of file
extensions</td></tr>
<tr><td><a href="mod_mime.html#removeencoding">RemoveEncoding <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Removes any content encoding associations for a set of file
extensions</td></tr>
<tr class="odd"><td><a href="mod_mime.html#removehandler">RemoveHandler <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Removes any handler associations for a set of file
extensions</td></tr>
<tr><td><a href="mod_mime.html#removeinputfilter">RemoveInputFilter <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Removes any input filter associations for a set of file
extensions</td></tr>
<tr class="odd"><td><a href="mod_mime.html#removelanguage">RemoveLanguage <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Removes any language associations for a set of file
extensions</td></tr>
<tr><td><a href="mod_mime.html#removeoutputfilter">RemoveOutputFilter <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Removes any output filter associations for a set of file
extensions</td></tr>
<tr class="odd"><td><a href="mod_mime.html#removetype">RemoveType <var>extension</var> [<var>extension</var>]
...</a></td><td></td><td>kdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Removes any content type associations for a set of file
extensions</td></tr>
<tr><td><a href="mod_headers.html#requestheader">RequestHeader set|append|merge|add|unset|edit <var>header</var>
[<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Configure HTTP request headers</td></tr>
<tr class="odd"><td><a href="core.html#require">Require <var>öğe-adı</var> [<var>öğe-adı</var>] ...</a></td><td></td><td>dh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Bir özkaynağa erişebilecek kimliği doğrulanmış kullanıcıları belirler</td></tr>
<tr><td><a href="mod_rewrite.html#rewritebase">RewriteBase <em>URL-path</em></a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the base URL for per-directory rewrites</td></tr>
<tr class="odd"><td><a href="mod_rewrite.html#rewritecond"> RewriteCond
      <em>TestString</em> <em>CondPattern</em></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Defines a condition under which rewriting will take place
</td></tr>
<tr><td><a href="mod_rewrite.html#rewriteengine">RewriteEngine on|off</a></td><td> off </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Enables or disables runtime rewriting engine</td></tr>
<tr class="odd"><td><a href="mod_rewrite.html#rewritelock">RewriteLock <em>file-path</em></a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the name of the lock file used for <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
synchronization</td></tr>
<tr><td><a href="mod_rewrite.html#rewritelog">RewriteLog <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Sets the name of the file used for logging rewrite engine
processing</td></tr>
<tr class="odd"><td><a href="mod_rewrite.html#rewriteloglevel">RewriteLogLevel <em>Level</em></a></td><td> 0 </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets the verbosity of the log file used by the rewrite
engine</td></tr>
<tr><td><a href="mod_rewrite.html#rewritemap">RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em>
</a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Defines a mapping function for key-lookup</td></tr>
<tr class="odd"><td><a href="mod_rewrite.html#rewriteoptions">RewriteOptions <var>Options</var></a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Sets some special options for the rewrite engine</td></tr>
<tr><td><a href="mod_rewrite.html#rewriterule">RewriteRule
      <em>Pattern</em> <em>Substitution</em> [<em>flags</em>]</a></td><td></td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Defines rules for the rewriting engine</td></tr>
<tr class="odd"><td><a href="core.html#rlimitcpu">RLimitCPU <var>saniye</var>|max [<var>saniye</var>|max]</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Apache alt süreçleri tarafından çalıştırılan süreçlerin işlemci
tüketimine sınırlama getirir.</td></tr>
<tr><td><a href="core.html#rlimitmem">RLimitMEM <var>bayt-sayısı</var>|max [<var>bayt-sayısı</var>|max]
</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Apache alt süreçleri tarafından çalıştırılan süreçlerin bellek
tüketimine sınırlama getirir.</td></tr>
<tr class="odd"><td><a href="core.html#rlimitnproc">RLimitNPROC <var>sayı</var>|max [<var>sayı</var>|max]</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Apache alt süreçleri tarafından çalıştırılabilecek süreç sayısına
sınırlama getirir.</td></tr>
<tr><td><a href="core.html#satisfy" id="S" name="S">Satisfy Any|All</a></td><td> All </td><td>dh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Konak seviyesinde erişim denetimi ile kullanıcı kimlik doğrulaması arasındaki etkileşim</td></tr>
<tr class="odd"><td><a href="mpm_common.html#scoreboardfile">ScoreBoardFile <var>dosya-yolu</var></a></td><td> logs/apache_status </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Çocuk süreçler için eşgüdüm verisini saklamakta kullanılan
  dosyanın yerini belirler.</td></tr>
<tr><td><a href="mod_actions.html#script">Script <var>method</var> <var>cgi-script</var></a></td><td></td><td>skd</td><td>T</td></tr><tr><td class="descr" colspan="4">Activates a CGI script for a particular request
method.</td></tr>
<tr class="odd"><td><a href="mod_alias.html#scriptalias">ScriptAlias <var>URL-yolu</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></a></td><td></td><td>sk</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Bir URL’yi dosya sistemindeki bir yere eşler ve hedefi bir CGI betiği olarak çalıştırır.</td></tr>
<tr><td><a href="mod_alias.html#scriptaliasmatch">ScriptAliasMatch <var>düzenli-ifade</var>
<var>dosya-yolu</var>|<var>dizin-yolu</var></a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Bir URL’yi dosya sistemindeki bir yere düzenli ifade kullanarak
eşler ve hedefi bir CGI betiği olarak çalıştırır.</td></tr>
<tr class="odd"><td><a href="core.html#scriptinterpretersource">ScriptInterpreterSource Registry|Registry-Strict|Script</a></td><td> Script </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">CGI betikleri için yorumlayıcı belirleme tekniği</td></tr>
<tr><td><a href="mod_cgi.html#scriptlog">ScriptLog <var>file-path</var></a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Location of the CGI script error logfile</td></tr>
<tr class="odd"><td><a href="mod_cgi.html#scriptlogbuffer">ScriptLogBuffer <var>bytes</var></a></td><td> 1024 </td><td>sk</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Maximum amount of PUT or POST requests that will be recorded
in the scriptlog</td></tr>
<tr><td><a href="mod_cgi.html#scriptloglength">ScriptLogLength <var>bytes</var></a></td><td> 10385760 </td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Size limit of the CGI script logfile</td></tr>
<tr class="odd"><td><a href="mod_cgid.html#scriptsock">ScriptSock <var>file-path</var></a></td><td> logs/cgisock </td><td>s</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">The filename prefix of the socket to use for communication with
the cgi daemon</td></tr>
<tr><td><a href="mod_nw_ssl.html#securelisten">SecureListen [<var>IP-address</var>:]<var>portnumber</var>
<var>Certificate-Name</var> [MUTUAL]</a></td><td></td><td>s</td><td>T</td></tr><tr><td class="descr" colspan="4">Enables SSL encryption for the specified port</td></tr>
<tr class="odd"><td><a href="mod_status.html#seerequesttail">SeeRequestTail On|Off</a></td><td> Off </td><td>s</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">İsteğin kendisi 63 karakterden uzun olduğunda, isteğin ilk 63
karakterinin mi yoksa son 63 karakterinin mi gösterileceğini belirler.
</td></tr>
<tr><td><a href="mpm_common.html#sendbuffersize">SendBufferSize <var>bayt-sayısı</var></a></td><td> 0 </td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">TCP tamponu boyu</td></tr>
<tr class="odd"><td><a href="core.html#serveradmin">ServerAdmin <var>eposta-adresi</var>|<var>URL</var></a></td><td></td><td>sk</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucunun hata iletilerinde istemciye göstereceği eposta adresi
</td></tr>
<tr><td><a href="core.html#serveralias">ServerAlias <var>konakadı</var> [<var>konakadı</var>] ...</a></td><td></td><td>k</td><td>Ç</td></tr><tr><td class="descr" colspan="4">İstekleri isme dayalı sanal konaklarla eşleştirilirken
kullanılacak konak adları için başka isimler belirtebilmeyi sağlar.
</td></tr>
<tr class="odd"><td><a href="mpm_common.html#serverlimit">ServerLimit <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Ayarlanabilir süreç sayısının üst sınırını belirler.</td></tr>
<tr><td><a href="core.html#servername">ServerName [<var>şema</var>://]<var>tam-nitelenmiş-alan-adı</var>[:<var>port</var>]
</a></td><td></td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucunun özdeşleşeceği konak ismi ve port.</td></tr>
<tr class="odd"><td><a href="core.html#serverpath">ServerPath <var>URL-yolu</var></a></td><td></td><td>k</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Uyumsuz bir tarayıcı tarafından erişilmesi için bir isme dayalı sanal konak için meşru URL yolu</td></tr>
<tr><td><a href="core.html#serverroot">ServerRoot <var>dizin-yolu</var></a></td><td> /usr/local/apache </td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucu yapılandırması için kök dizin</td></tr>
<tr class="odd"><td><a href="core.html#serversignature">ServerSignature On|Off|EMail</a></td><td> Off </td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucu tarafından üretilen belgelerin dipnotunu ayarlar.
</td></tr>
<tr><td><a href="core.html#servertokens">ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</a></td><td> Full </td><td>s</td><td>Ç</td></tr><tr><td class="descr" colspan="4"><code>Server</code> HTTP yanıt başlığını yapılandırır.
</td></tr>
<tr class="odd"><td><a href="mod_env.html#setenv">SetEnv <var>ortam-değişkeni</var> <var>değer</var></a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Ortam değişkenlerini tanımlar.</td></tr>
<tr><td><a href="mod_setenvif.html#setenvif">SetEnvIf <em>öznitelik
    düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
    [[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Ortam değişkenlerini isteğin özniteliklerine göre atar.
</td></tr>
<tr class="odd"><td><a href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase <em>öznitelik
    düzifd [!]ort-değişkeni</em>[=<em>değer</em>]
    [[!]<em>ort-değişkeni</em>[=<em>değer</em>]] ...</a></td><td></td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Ortam değişkenlerini isteğin özniteliklerinde harf büyüklüğüne
bağlı olmaksızın yapılmış tanımlara göre atar.</td></tr>
<tr><td><a href="core.html#sethandler">SetHandler <var>eylemci-ismi</var>|None</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Eşleşen tüm dosyaların belli bir eylemci tarafından işlenmesine
sebep olur.</td></tr>
<tr class="odd"><td><a href="core.html#setinputfilter">SetInputFilter <var>süzgeç</var>[;<var>süzgeç</var>...]</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">POST girdilerini ve istemci isteklerini işleyecek süzgeçleri
belirler.</td></tr>
<tr><td><a href="core.html#setoutputfilter">SetOutputFilter <var>süzgeç</var>[;<var>süzgeç</var>...]</a></td><td></td><td>skdh</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucunun yanıtlarını işleyecek süzgeçleri belirler.</td></tr>
<tr class="odd"><td><a href="mod_include.html#ssienableaccess">SSIEnableAccess on|off</a></td><td> off </td><td>dh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Enable the -A flag during conditional flow control processing.</td></tr>
<tr><td><a href="mod_include.html#ssiendtag">SSIEndTag <var>tag</var></a></td><td> "--&gt;" </td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">String that ends an include element</td></tr>
<tr class="odd"><td><a href="mod_include.html#ssierrormsg">SSIErrorMsg <var>message</var></a></td><td> "[an error occurred +</td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Error message displayed when there is an SSI
error</td></tr>
<tr><td><a href="mod_include.html#ssistarttag">SSIStartTag <var>tag</var></a></td><td> "&lt;!--#" </td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">String that starts an include element</td></tr>
<tr class="odd"><td><a href="mod_include.html#ssitimeformat">SSITimeFormat <var>formatstring</var></a></td><td> "%A, %d-%b-%Y %H:%M +</td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Configures the format in which date strings are
displayed</td></tr>
<tr><td><a href="mod_include.html#ssiundefinedecho">SSIUndefinedEcho <var>string</var></a></td><td> "(none)" </td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">String displayed when an unset variable is echoed</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcacertificatefile">SSLCACertificateFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">File of concatenated PEM-encoded CA Certificates 
for Client Auth</td></tr>
<tr><td><a href="mod_ssl.html#sslcacertificatepath">SSLCACertificatePath <em>directory-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Directory of PEM-encoded CA Certificates for 
Client Auth</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcadnrequestfile">SSLCADNRequestFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">File of concatenated PEM-encoded CA Certificates 
for defining acceptable CA names</td></tr>
<tr><td><a href="mod_ssl.html#sslcadnrequestpath">SSLCADNRequestPath <em>directory-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Directory of PEM-encoded CA Certificates for 
defining acceptable CA names</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcarevocationfile">SSLCARevocationFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">File of concatenated PEM-encoded CA CRLs for 
Client Auth</td></tr>
<tr><td><a href="mod_ssl.html#sslcarevocationpath">SSLCARevocationPath <em>directory-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Directory of PEM-encoded CA CRLs for 
Client Auth</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">File of PEM-encoded Server CA Certificates</td></tr>
<tr><td><a href="mod_ssl.html#sslcertificatefile">SSLCertificateFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Server PEM-encoded X.509 Certificate file</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcertificatekeyfile">SSLCertificateKeyFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Server PEM-encoded Private Key file</td></tr>
<tr><td><a href="mod_ssl.html#sslciphersuite">SSLCipherSuite <em>cipher-spec</em></a></td><td> ALL:!ADH:RC4+RSA:+H +</td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Cipher Suite available for negotiation in SSL 
handshake</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslcryptodevice">SSLCryptoDevice <em>engine</em></a></td><td> builtin </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Enable use of a cryptographic hardware accelerator</td></tr>
<tr><td><a href="mod_ssl.html#sslengine">SSLEngine on|off|optional</a></td><td> off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">SSL Engine Operation Switch</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslhonorcipherorder">SSLHonorCiperOrder <em>flag</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Option to prefer the server's cipher preference order</td></tr>
<tr><td><a href="mod_ssl.html#sslmutex">SSLMutex <em>type</em></a></td><td> none </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Semaphore for internal mutual exclusion of 
operations</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#ssloptions">SSLOptions [+|-]<em>option</em> ...</a></td><td></td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure various SSL engine run-time options</td></tr>
<tr><td><a href="mod_ssl.html#sslpassphrasedialog">SSLPassPhraseDialog <em>type</em></a></td><td> builtin </td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">Type of pass phrase dialog for encrypted private 
keys</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslprotocol">SSLProtocol [+|-]<em>protocol</em> ...</a></td><td> all </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure usable SSL protocol flavors</td></tr>
<tr><td><a href="mod_ssl.html#sslproxycacertificatefile">SSLProxyCACertificateFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">File of concatenated PEM-encoded CA Certificates 
for Remote Server Auth</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxycacertificatepath">SSLProxyCACertificatePath <em>directory-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Directory of PEM-encoded CA Certificates for 
Remote Server Auth</td></tr>
<tr><td><a href="mod_ssl.html#sslproxycarevocationfile">SSLProxyCARevocationFile <em>file-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">File of concatenated PEM-encoded CA CRLs for 
Remote Server Auth</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxycarevocationpath">SSLProxyCARevocationPath <em>directory-path</em></a></td><td></td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Directory of PEM-encoded CA CRLs for 
Remote Server Auth</td></tr>
<tr><td><a href="mod_ssl.html#sslproxycheckpeercn">SSLProxyCheckPeerCN on|off</a></td><td> off </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Whether to check the remote server certificates CN field
</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxycheckpeerexpire">SSLProxyCheckPeerExpire on|off</a></td><td> off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Whether to check if remote server certificate is expired
</td></tr>
<tr><td><a href="mod_ssl.html#sslproxyciphersuite">SSLProxyCipherSuite <em>cipher-spec</em></a></td><td> ALL:!ADH:RC4+RSA:+H +</td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Cipher Suite available for negotiation in SSL 
proxy handshake</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxyengine">SSLProxyEngine on|off</a></td><td> off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">SSL Proxy Engine Operation Switch</td></tr>
<tr><td><a href="mod_ssl.html#sslproxymachinecertificatefile">SSLProxyMachineCertificateFile <em>filename</em></a></td><td></td><td>s</td><td>E</td></tr><tr><td class="descr" colspan="4">File of concatenated PEM-encoded client certificates and keys to be used by the proxy</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxymachinecertificatepath">SSLProxyMachineCertificatePath <em>directory</em></a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Directory of PEM-encoded client certificates and keys to be used by the proxy</td></tr>
<tr><td><a href="mod_ssl.html#sslproxyprotocol">SSLProxyProtocol [+|-]<em>protocol</em> ...</a></td><td> all </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Configure usable SSL protocol flavors for proxy usage</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslproxyverify">SSLProxyVerify <em>level</em></a></td><td> none </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Type of remote server Certificate verification</td></tr>
<tr><td><a href="mod_ssl.html#sslproxyverifydepth">SSLProxyVerifyDepth <em>number</em></a></td><td> 1 </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Maximum depth of CA Certificates in Remote Server
Certificate verification</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslrandomseed">SSLRandomSeed <em>context</em> <em>source</em> 
[<em>bytes</em>]</a></td><td></td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Pseudo Random Number Generator (PRNG) seeding 
source</td></tr>
<tr><td><a href="mod_ssl.html#sslrenegbuffersize">SSLRenegBufferSize <var>bytes</var></a></td><td> 131072 </td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Set the size for the SSL renegotiation buffer</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslrequire">SSLRequire <em>expression</em></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Allow access only when an arbitrarily complex 
boolean expression is true</td></tr>
<tr><td><a href="mod_ssl.html#sslrequiressl">SSLRequireSSL</a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">Deny access when SSL is not used for the 
HTTP request</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslsessioncache">SSLSessionCache <em>type</em></a></td><td> none </td><td>s</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Type of the global/inter-process SSL Session 
Cache</td></tr>
<tr><td><a href="mod_ssl.html#sslsessioncachetimeout">SSLSessionCacheTimeout <em>seconds</em></a></td><td> 300 </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Number of seconds before an SSL session expires
in the Session Cache</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslstrictsnivhostcheck">SSLStrictSNIVHostCheck on|off</a></td><td> off </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Whether to allow non SNI clients to access a name based virtual
host.
</td></tr>
<tr><td><a href="mod_ssl.html#sslusername">SSLUserName <em>varname</em></a></td><td></td><td>sdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Variable name to determine user name</td></tr>
<tr class="odd"><td><a href="mod_ssl.html#sslverifyclient">SSLVerifyClient <em>level</em></a></td><td> none </td><td>skdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Type of Client Certificate verification</td></tr>
<tr><td><a href="mod_ssl.html#sslverifydepth">SSLVerifyDepth <em>number</em></a></td><td> 1 </td><td>skdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Maximum depth of CA Certificates in Client 
Certificate verification</td></tr>
<tr class="odd"><td><a href="mpm_common.html#startservers">StartServers <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucunun başlatılması sırasında oluşturulan çocuk süreçlerin
  sayısını belirler.</td></tr>
<tr><td><a href="mpm_common.html#startthreads">StartThreads <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Sunucunun başlatılması sırasında oluşturulan evrelerin sayısını
  belirler.</td></tr>
<tr class="odd"><td><a href="mod_substitute.html#substitute">Substitute <var>s/pattern/substitution/[infq]</var></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Pattern to filter the response content</td></tr>
<tr><td><a href="mod_suexec.html#suexecusergroup">SuexecUserGroup <em>Kullanıcı Grup</em></a></td><td></td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">CGI betiklerini çalıştıracak kullanıcı ve grup belirtilir.
</td></tr>
<tr class="odd"><td><a href="mpm_common.html#threadlimit" id="T" name="T">ThreadLimit <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Çocuk süreç başına ayarlanabilir evre sayısının üst sınırını
  belirler.</td></tr>
<tr><td><a href="mpm_common.html#threadsperchild">ThreadsPerChild <var>sayı</var></a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Her çocuk süreç tarafından oluşturulan evrelerin sayısını
  belirler.</td></tr>
<tr class="odd"><td><a href="mpm_common.html#threadstacksize">ThreadStackSize <var>boyut</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">İstemci bağlantılarını elde eden evreler tarafından kullanılan
  yığıtın bayt cinsinden uzunluğunu belirler.</td></tr>
<tr><td><a href="core.html#timeout">TimeOut <var>saniye</var></a></td><td> 300 </td><td>sk</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Bir istek için başarısız olmadan önce belirli olayların
gerçekleşmesi için sunucunun geçmesini bekleyeceği süre.</td></tr>
<tr class="odd"><td><a href="core.html#traceenable">TraceEnable <var>[on|off|extended]</var></a></td><td> on </td><td>s</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4"><code>TRACE</code> isteklerinde davranış şeklini belirler
</td></tr>
<tr><td><a href="mod_log_config.html#transferlog">TransferLog <var>dosya</var>|<var>borulu-süreç</var>
[<var>takma-ad</var>]</a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Bir günlük dosyasının yerini belirtir.</td></tr>
<tr class="odd"><td><a href="mod_mime.html#typesconfig">TypesConfig <var>file-path</var></a></td><td> conf/mime.types </td><td>s</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">The location of the <code>mime.types</code> file</td></tr>
<tr><td><a href="mod_env.html#unsetenv" id="U" name="U">UnsetEnv <var>ortam-değişkeni</var> [<var>ortam-değişkeni</var>]
...</a></td><td></td><td>skdh</td><td>T</td></tr><tr><td class="descr" colspan="4">Ortamdaki değişkenleri tanımsız hale getirir.</td></tr>
<tr class="odd"><td><a href="core.html#usecanonicalname">UseCanonicalName On|Off|DNS</a></td><td> Off </td><td>skd</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Sunucunun kendi adını ve portunu nasıl belirleyeceğini ayarlar
</td></tr>
<tr><td><a href="core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort On|Off</a></td><td> Off </td><td>skd</td><td>Ç</td></tr><tr><td class="descr" colspan="4">Sunucunun kendi adını ve portunu nasıl belirleyeceğini ayarlar
</td></tr>
<tr class="odd"><td><a href="mpm_common.html#user">User <var>unix-kullanıcısı</var></a></td><td> #-1 </td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">İsteklere yanıt verecek sunucunun ait olacağı kullanıcıyı
  belirler.</td></tr>
<tr><td><a href="mod_userdir.html#userdir">UserDir <em>dizin</em> [<em>dizin</em>] ...</a></td><td></td><td>sk</td><td>T</td></tr><tr><td class="descr" colspan="4">Kullanıcıya özel dizinlerin yeri</td></tr>
<tr class="odd"><td><a href="mod_vhost_alias.html#virtualdocumentroot" id="V" name="V">VirtualDocumentRoot <em>hesaplanan-dizin</em>|none</a></td><td> none </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
</td></tr>
<tr><td><a href="mod_vhost_alias.html#virtualdocumentrootip">VirtualDocumentRootIP <em>hesaplanan-dizin</em>|none</a></td><td> none </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Bir sanal konağın belge kök dizinini devingen olarak yapılandırır.
</td></tr>
<tr class="odd"><td><a href="core.html#virtualhost">&lt;VirtualHost
    <var>adres</var>[:<var>port</var>] [<var>adres</var>[:<var>port</var>]]
    ...&gt; ... &lt;/VirtualHost&gt;</a></td><td></td><td>s</td><td>Ç</td></tr><tr class="odd"><td class="descr" colspan="4">Sadece belli bir konak ismine ve porta uygulanacak yönergeleri barındırır.</td></tr>
<tr><td><a href="mod_vhost_alias.html#virtualscriptalias">VirtualScriptAlias <em>hesaplanan-dizin</em>|none</a></td><td> none </td><td>sk</td><td>E</td></tr><tr><td class="descr" colspan="4">Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
</td></tr>
<tr class="odd"><td><a href="mod_vhost_alias.html#virtualscriptaliasip">VirtualScriptAliasIP <em>hesaplanan-dizin</em>|none</a></td><td> none </td><td>sk</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Bir sanal konağın CGI dizinini devingen olarak yapılandırır.
</td></tr>
<tr><td><a href="mpm_winnt.html#win32disableacceptex" id="W" name="W">Win32DisableAcceptEx</a></td><td></td><td>s</td><td>M</td></tr><tr><td class="descr" colspan="4">Use accept() rather than AcceptEx() to accept network connections</td></tr>
<tr class="odd"><td><a href="mod_include.html#xbithack" id="X" name="X">XBitHack on|off|full</a></td><td> off </td><td>skdh</td><td>T</td></tr><tr class="odd"><td class="descr" colspan="4">Parse SSI directives in files with the execute bit
set</td></tr>
</table></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                              mod/worker.html                                                                                     100644       0       0        27616 11256641270  11223  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>worker - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Modüller</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache MPM worker</h1>

<table class="module"><tr><th><a href="module-dict.html#Description">Açıklama:</a></th><td>Çok evreli ve çok süreçli melez bir HTTP sunucusu oluşturan çok
süreçlilik modülü.</td></tr>
<tr><th><a href="module-dict.html#Status">Durum:</a></th><td>MPM</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Modül Betimleyici:</a></th><td>mpm_worker_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Kaynak Dosyası:</a></th><td>worker.c</td></tr></table>
<h3>Özet</h3>

    <p>Bu çok süreçlilik modülü (MPM) hem çok süreçli hem de çok evreli
      olabilen melez bir sunucu oluşturur. İstekleri sunmak için evreleri
      kullanması sebebiyle çok süreçli bir sunucudan daha az sistem kaynağı
      harcayarak daha çok isteğe hizmet sunabilir. Bununla birlikte, herbiri
      çok sayıda evreye sahip çok sayıda süreci canlı tutarak bir çok süreçli
      sunucu kadar kararlı olur.</p>

    <p>Bu MPM’i denetim altında tutmakta kullanılan en önemli yönergeler, her
      çocuk süreç için konuşlandırılacak evre sayısını belirleyen <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> yönergesi ile devreye
      sokulacak toplam evre sayısının azamisini belirleyen <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergesidir.</p>
</div>
<div id="quickview"><h3 class="directives">Yönergeler</h3>
<ul id="toc">
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#acceptmutex">AcceptMutex</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#enableexceptionhook">EnableExceptionHook</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#lockfile">LockFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#serverlimit">ServerLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadlimit">ThreadLimit</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
</ul>
<h3>Konular</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">Nasıl çalışır?</a></li>
</ul><h3>Ayrıca bakınız:</h3>
<ul class="seealso">
<li><a href="../bind.html">Apache’nin kullandığı adres ve portların
ayarlanması</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="how-it-works" id="how-it-works">Nasıl çalışır?</a></h2>
    <p>Çocuk süreçleri devreye almaktan tek bir süreç (ana süreç) sorumludur.
      Her çocuk süreç <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> yönergesinde belirtilen sayıda evre
      konuşlandırır. Bunlardan ayrı olarak, bir dinleyici evre bağlantıları
      dinleyip gelenleri işlenmek üzere bu sunucu evrelerinden birine
      aktarır.</p>

    <p>Apache daima, gelen isteklere hizmet sunmaya hazır <dfn>yedek</dfn>
      veya boştaki sunucu evrelerinden oluşan bir havuzu canlı tutmaya
      çalışır. Bu suretle, istemcilere isteklerinin sunulması için yeni çocuk
      süreçlerin çatallanmasını, dolayısıyla yeni evrelerin
      konuşlandırılmasını beklemek gerekmez. Başlangıçta çalıştırılacak çocuk
      süreçlerin sayısı <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> yönergesinde belirtilir.
      Apache, çalışma süresi boyunca <code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code> ve <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code> yönergeleri ile belirtilen sınırlar
      dahilinde kalmak üzere gerektiğinde süreçleri öldürerek gerektiğinde
      yenilerini devreye alarak tüm süreçlerdeki toplam evre sayısını sabit
      tutmaya çalışır. Bu işlem kendiliğinden çok iyi yürüdüğünden bu
      yönergelere öntanımlı değerlerinden farklı değerlerin atanması nadiren
      gerekli olur. Aynı anda hizmet sunulabilecek istemcilerin sayısı (yani,
      tüm süreçlerin toplam evre sayısı) <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergesi ile belirlenir. Etkin çocuk
      süreçlerin sayısı ise <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergesindeki değerin <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> yönergesindeki değere
      bölünmesi ile elde edilir.</p>

    <p>Bu iki yönerge aynı anda etkin olabilecek çocuk süreçlerin ve her
      çocuk süreçteki sunucu evreleri sayısının üst sınırını belirler ve bu
      sınır sadece ana sunucu tamamen durdurulup yeniden başlatılarak
      değiştirilebilir. <code class="directive"><a href="../mod/mpm_common.html#serverlimit">ServerLimit</a></code> yönergesinin değeri etkin çocuk süreç
      sayısının üst sınırı olup <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergesindeki değerin <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> yönergesindeki değere
      bölünmesi ile elde değere eşit veya bundan küçük olması gerekir.
      <code class="directive"><a href="../mod/mpm_common.html#threadlimit">ThreadLimit</a></code> yönergesinin
      değeri ise sunucu evreleri sayısının üst sınırını belirler ve <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> yönergesindeki değerden
      büyük veya ona eşit olması gerekir. Eğer bu yönergelere öntanımlı
      değerlerinden farklı bir değer atanacaksa bu atamaların diğer
      <code class="module"><a href="../mod/worker.html">worker</a></code> yönergelerinden önce yapılması gerekir.</p>

    <p>Sonlandırma sırasında etkin çocuk süreçlere ek olarak mevcut istemci
      bağlantılarını işleme sokmaya çalışan tek bir sunucu evresinden başka
      fazladan bir çocuk süreç etkin kalabileceği gibi sonlandırılacak süreç
      sayısının en fazla <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> olması gerekirse de gerçekte sayı bundan küçük
      olabilir.  Şöyle bir işlemle tek bir çocuk sürecin sonlandırılması
      iptal edilerek bu gibi durumlara karşı önlem alınabilir:</p>

    <ul>
      <li><code class="directive"><a href="../mod/mpm_common.html# maxrequestsperchild"> MaxRequestsPerChild</a></code>
        yönergesinin değeri sıfır yapılır.</li>

      <li><code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code> ve
        <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> yönergelerinin
        değerleri birbirine eşitlenir.</li>
    </ul>

    <p><code class="module"><a href="../mod/worker.html">worker</a></code> modülünün öntanımlı süreç-evre yapılandırması
      genelde şöyledir:</p>

    <div class="example"><p><code>
      ServerLimit         16<br />
      StartServers         2<br />
      MaxClients         150<br />
      MinSpareThreads     25<br />
      MaxSpareThreads     75<br />
      ThreadsPerChild     25
    </code></p></div>

    <p>Unix altında 80. portu dinleyebilmek için ana sürecin root tarafından
      çalıştırılmış olması gerekirse de çocuk süreçler ve evreler Apache
      tarafından daha az yetkili bir kullanıcının aidiyetinde
      çalıştırılırlar. Apache’nin çocuk süreçlerinin kullanıcı ve gruplarını
      ayarlamak için User ve Group yönergeleri kullanılır. Çocuk süreçlerin
      sunacakları içeriği okumaya yetkili olmaları gerekir, fakat bu yetkinin
      mümkün olduğunca kısıtlı tutulmasına çalışılmalıdır. Bundan başka,
      <code class="program"><a href="../programs/suexec.html">suexec</a></code> kullanılmadığı takdirde, bu yönergeler CGI
      betikleri tarafından miras alınacak yetkili kullanıcı ve grubu da
      ayarlarlar.</p>

    <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>
      yönergesi ana sunucunun eski süreçleri öldürüp yenilerini oluşturmayı
      ne kadar sıklıkla yapacağını denetler.</p>
</div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                  mpm.html                                                                                            100644       0       0        16014 11256641270   7712  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Çok Süreçlilik Modülleri (MPM’ler) - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Çok Süreçlilik Modülleri (MPM’ler)</h1>


  <p>Bu belgede Çok Süreçlilik Modülü denince ne anlaşıldığı ve bunların
    Apache HTTP Sunucusu tarafından nasıl kullanıldıkları açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#choosing">MPM Seçimi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#defaults">Öntanımlı MPM’ler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Giriş</a></h2>

    <p>Apache HTTP Sunucusu çok çeşitli platformlar üstünde farklı ortamlarda
      çalışabilen güçlü ve esnek bir HTTP sunucusu olarak tasarlanmıştır.
      Farklı platformlar ve farklı ortamlar çoğunlukla farklı özellikler veya
      aynı özelliğin en yüksek verimlilikle gerçeklenmesi için farklı yöntemler
      gerektirir. Apache, geniş ortam çeşitliliğini daima modüler tasarımı
      sayesinde uzlaştırmıştır.  Bu tasarım, site yöneticilerine, sunucularında
      bulunmasını istedikleri özellikleri derleme sırasında veya çalışma anında
      gerekli modülleri yüklemek suretiyle seçebilme imkanı verir.</p>

    <p>Apache 2.0, bu modüler tasarımı sunucunun en temel işlevlerine kadar
      indirmiştir. Sunucu, Çok Süreçlilik Modülleri adı verilen ve makine
      üzerindeki ağ portlarının bağlanmasından, isteklerin kabul edilmesinden
      ve bu istekleri yanıtlayacak çocuklara dağıtmaktan sorumlu olan
      modüllerin seçimine imkan verecek bir yapılanma ile gelir.</p>

    <p>Sunucunun modüler tasarımının bu seviyede genişletilmesi iki önemli
      yarar sağlar:</p>

    <ul>
      <li>Apache geniş çeşitlilikteki işletim sistemlerini daha temiz ve daha
        verimli bir şekilde destekleyebilmektedir. Özellikle,
        <code class="module"><a href="./mod/mpm_winnt.html">mpm_winnt</a></code> modülü, Apache 1.3’te kullanılan POSIX
        katmanının yerine işletim sistemine özgü özellikleri
        kullanabildiğinden, Apache HTTP Sunucusunun Windows sürümü artık çok
        daha verimli bir duruma gelmiştir. Aynı fayda özelleştirilmiş MPM’lerle
        diğer işletim sistemlerine de sağlanmıştır.</li>

      <li>Sunucu, belli bir sitenin ihtiyaçlarına uygun olarak daha iyi
        kişiselleştirilebilmektedir. Örneğin, eski yazılım ile uyumluluk ve
        kararlılığa önem veren siteler <code class="module"><a href="./mod/prefork.html">prefork</a></code> modülünü
        kullanabilirken, daha geniş ölçeklenebilirlik gerektiren siteler
        <code class="module"><a href="./mod/worker.html">worker</a></code> veya <code class="module"><a href="./mod/event.html">event</a></code> gibi evreli MPM
        modüllerinden birini seçebilmektedir.</li>
    </ul>

    <p>Kullanıcı açısından MPM’lerin diğer Apache modüllerinden görünüşte bir
      farkı yoktur. Asıl fark sunucuya yüklenebilecek azami MPM modülü
      sayısının bir ve yalnız bir olarak sınırlanmış olmasıdır. Mevcut MPM
      modülleri <a href="mod/index.html">modül dizini</a> sayfasında listelenmiştir..</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="choosing" id="choosing">MPM Seçimi</a></h2>

    <p>MPM’ler paket yapılandırması sırasında seçilmeli ve sunucu içinde
      derlenmelidir. Derleyiciler evrelerin kullanılacağını bildikleri
      takdirde çoğu işlevi evreleri kullanacak şekilde
      en iyileyebilmektedir.</p>

    <p>Kullanmak istediğiniz MPM’yi kendiniz seçmek istediğiniz takdirde
      <code class="program"><a href="./programs/configure.html">configure</a></code> betiğini
      <code>--with-mpm=<em>AD</em></code> seçeneği ile kullanınız. Burada
      <em>AD</em> istenen MPM’nin adıdır.</p>

    <p>Sunucu derlendikten sonra hangi MPM’nin seçilmiş olduğunu <code>./httpd
      -l</code> komutuyla saptamak mümkündür. Bu komut, MPM de dahil omak
      üzere sunucuyla birlikte derlenmiş tüm modülleri listeleyecektir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="defaults" id="defaults">Öntanımlı MPM’ler</a></h2>

    <p>Aşağıdaki tabloda çeşitli işletim sistemlerinde öntanımlı olan MPM’ler
      listelenmiştir. Derleme sırasında başka bir seçim yapmadığınız takdirde
      bu işletim sistemlerinde bu MPM’ler seçilmiş olacaktır.</p>

    <table>
      
      <tr><td>BeOS</td><td><code class="module"><a href="./mod/beos.html">beos</a></code></td></tr>
      <tr><td>Netware</td><td><code class="module"><a href="./mod/mpm_netware.html">mpm_netware</a></code></td></tr>
      <tr><td>OS/2</td><td><code class="module"><a href="./mod/mpmt_os2.html">mpmt_os2</a></code></td></tr>
      <tr><td>Unix</td><td><code class="module"><a href="./mod/prefork.html">prefork</a></code></td></tr>
      <tr><td>Windows</td><td><code class="module"><a href="./mod/mpm_winnt.html">mpm_winnt</a></code></td></tr>
    </table>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    new_features_2_0.html                                                                               100644       0       0        32666 11256641270  12263  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache 2.0’da Yeni olan Özellikler - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache 2.0’da Yeni olan Özellikler</h1>


  <p>Bu belgede Apache HTTP Sunucusunun 1.3 ve 2.0 sürümleri arasındaki
    başlıca değişikliklerin bazılarına değinilmiştir.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Çekirdekteki Gelişmeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#module">Modüllerdeki Gelişmeler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="upgrading.html">1.3’ten 2.0’a Yükseltme</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="core" id="core">Çekirdekteki Gelişmeler</a></h2>
    

    <dl>
      <dt>Unix Evreleri</dt>

      <dd>POSIX evreleri desteği olan Unix sistemlerinde Apache, çok evreli
        kipte çok süreçlilik şeklinde melez bir yapıda çalışır. Bu bir çok
        bakımdan ölçeklenebilirliği arttırsa da bütün yapılandırmalarda
        sağlanamaz.</dd>

      <dt>Yeni Paket Derleme Sistemi</dt>

      <dd>Yeni kaynak paketi derleme sistemi <code>autoconf</code> ve
        <code>libtool</code>’a dayalı olarak sıfırdan, yeni baştan yazıldı.
        Böylece Apache’nin paket yapılandırma sistemi diğer paketlerinkiyle
        benzerlik kazanmış oldu.</dd>

      <dt>Çok Sayıda Protokol Desteği</dt>

      <dd>Apache artık çok sayıda protokol ile hizmet sunacak bir alt yapıya
        sahiptir. Örneğin, <code class="module"><a href="./mod/mod_echo.html">mod_echo</a></code> modülü bu amaçla
        yazılmıştır.</dd>

      <dt>Unix dışı platformalara daha iyi destek</dt>

      <dd>Apache 2.0 sürümleri,  BeOS, OS/2, Windows gibi Unix olmayan
        platformlarda daha hızlı ve daha kararlı çalışacak duruma
        getirilmiştir. Genelde iyi geliştirilmemiş olan dolayısıyla istenen
        başarımı sağlayamayan POSIX taklit katmanlarının kullanımından
        vazgeçilmiş, platforma özgü <a href="mpm.html">çok süreçlilik
        modülleri</a> (MPM) ve Apache Taşınabilirlik Arayüzü (APR) sayesinde
        bu platformlar artık kendi doğal programlama arayüzleriyle
        gerçeklenir olmuştur.</dd>

      <dt>Yeni Apache Programlama Arayüzü</dt>

      <dd>Modüller için kullanılan programlama arayüzü 2.0 sürümüyle önemli
        değişikliklere uğramıştır. 1.3 sürümünde görülen modüllerle ilgili
        sıralama/öncelik sorunlarının çoğu giderilmiştir. 2.0 sürümü bu
        işlemleri daha bir özdevimli yapar olmuştur; daha fazla esneklik
        sağlamak için artık kancalı modül sıralaması kullanılabilmektedir.
        Ayrıca, arayüze, Apache sunucu çekirdeğini yamamaya gerek kalmadan
        modüllerle sunucu yeteneklerinin arttırılabilmesini sağlayan yeni
        çağrılar eklenmiştir.</dd>

      <dt>IPv6 Desteği</dt>

      <dd>IPv6’nın Apache Taşınabilirlik Arayüzü kütüphanesi tarafından
        desteklendiği sistemlerde Apache öntanımlı olarak IPv6 soketlerini
        dinler. Bundan başka, <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>, <code class="directive"><a href="./mod/core.html#namevirtualhost">NameVirtualHost</a></code> ve <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> yönergelerinin IPv6 sayısal adres
        dizgelerini desteklemesi sağlanmıştır.<br />Örnek: <code>Listen
        [2001:db8::1]:8080</code></dd>

      <dt>Süzme</dt>

      <dd>Apache modülleri, artık, sunucuya teslim edilen veya sunucudan
        teslim alınan içerik akımları üzerinde süzgeç gibi davranacak şekilde
        yazılabilmektedir. Bu sayede, örneğin CGI betiklerinin çıktılarının
        <code class="module"><a href="./mod/mod_include.html">mod_include</a></code> modülünün <code>INCLUDES</code> süzgeci
        kullanılarak SSI yönergeleri için çözümlenmesi mümkündür. CGI
        programlarının birer eylemci olarak davranması gibi,
        <code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> modülü de harici programların birer
        süzgeç olarak davranabilmesini mümkün kılar.</dd>

      <dt>Çok Dilli Hata Yanıtları</dt>

      <dd>Hata yanıtlarının tarayıcılara yönelik iletileri artık SSI
        belgeleri kullanılarak çeşitli dillerde sağlanabilmektedir. Bunlar
        ayrıca yönetici tarafından görünüş ve kullanışlılık tutarlılığı
        bakımından kişiselleştirilebilmektedir.</dd>

      <dt>Basitleştirilmiş Yapılandırma</dt>

      <dd>Bazı yönergelerle ilgili kafa karışıklıkları giderilmiştir.
        Bilhassa belli bir IP adresini dinlemek için kullanılan
        <code>Port</code> ve <code>BindAddress</code> yönergeleri ile ilgili
        karışıklığın önüne geçmek için sadece <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> yönergesi yeterli olmaktadır. <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> yönergesi ise sadece yönlendirme
        ve sanal konak tanıma amacıyla sunucu ismi ve port belirtiminde
        kullanılmaktadır.</dd>

      <dt>Doğal Windows NT Unicode Desteği</dt>

      <dd>Apache 2.0, Windows NT üzerinde artık tüm dosya sistemi
        kodlamalarında utf-8 kullanmaktadır. Bu destek, Windows 2000 ve
        Windows XP dahil tüm Windows NT temelli sistemlere çok dillilik
        desteğini sağlamak üzere mevcut Unicode dosya sistemine doğrudan
        uyarlanır. <em>Dosya sisteminde makinenin yerel karakter kodlamasını
        kullanan kullanan Windows 95, 98 ve ME için bu destek
        yoktur.</em></dd>

      <dt>Düzenli İfade Kütüphanesi Güncellemesi</dt>

      <dd>Apache 2.0’da <a href="http://www.pcre.org/">Perl uyumlu düzenli
        ifade kütüphanesi</a> bulunur. Tüm düzenli ifadelerde artık çok daha
        güçlü olan Perl 5 sözdizimi kullanılmaktadır.</dd>

    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="module" id="module">Modüllerdeki Gelişmeler</a></h2>
    

    <dl>
      <dt><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt>

      <dd>Apache 2.0’da yeni olan bu modül,  OpenSSL tarafından sağlanan
        SSL/TLS şifreleme protokollerine bir arayüzdür.</dd>

      <dt><code class="module"><a href="./mod/mod_dav.html">mod_dav</a></code></dt>

      <dd>Apache 2.0’da yeni olan bu modül, site içeriğinin destek ve bakımı
        için HTTP dağıtık yazım ve sürüm yönetimi (DAV - Distributed
        Authoring and Versioning) belirtimini gerçekler.</dd>

      <dt><code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code></dt>

      <dd>Apache 2.0’da yeni olan bu modül sayesinde ağ band genişliğinden
        daha verimli yararlanabilmek için içeriğin sıkıştırılarak
        gönderilmesini talep eden tarayıcıların desteklenmesi mümkün
        olmuştur.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_ldap.html">mod_auth_ldap</a></code></dt>

      <dd>Apache 2.0.41’de yeni olan bu modül, HTTP temel kimlik
        doğrulamasında kullanılan delillerin saklanması için LDAP
        veritabanının kullanılabilmesini mümkün kılar. Kardeş modülü olan
        <code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code> ise bağlantı havuzlaması ve sonuçların
        önbelleğe alınması ile ilgilenir.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_digest.html">mod_auth_digest</a></code></dt>

      <dd>Paylaşımlı belleği kullanan süreçlere karşı oturum önbelleklemesi
        için ek destek içerir.</dd>

      <dt><code class="module"><a href="./mod/mod_charset_lite.html">mod_charset_lite</a></code></dt>

      <dd>Apache 2.0’da yeni olan bu deneysel modül, karakter kümesi
        dönüşümleri veya kaydı için destek sağlar.</dd>

      <dt><code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code></dt>

      <dd>Apache 2.0’da yeni olan bu modül, Apache 1.3’teki
        <code>mod_mmap_static</code> modülünün işlevselliğini içermenin
        yanında buna önbellekleme yetenekleri de ekler.</dd>

      <dt><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></dt>

      <dd>Bu modül Apache 2.0’da daha esnek hale getirilmiştir. Artık
        <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> tarafından kullanılan istek başlıkları
        değiştirilebilmekte ve bunlar yanıt başlıklarına şartlı olarak
        atanabilmektedir.</dd>

      <dt><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dt>

      <dd>Bu modül HTTP/1.1 uyumlu vekaleti daha güvenilir kılmak ve yeni
        süzgeç alt yapısının getirilerinden de yararlanmak amacıyla yeni
        baştan yazılmıştır. Bunun yanında, <code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> bölümünün yeni hali vekil siteleri
        desteklemek bakımından daha okunabilir (ve kendi içinde daha hızlı)
        olması sağlanmıştır; <code>&lt;Directory "proxy:..."&gt;</code>
        yapılandırması artık desteklenmemektedir. Modül,
        <code>proxy_connect</code>, <code>proxy_ftp</code> ve
        <code>proxy_http</code> şeklinde her biri belli bir protokolü
        destekleyen ayrı modüllere bölünmüştür.</dd>

      <dt><code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code></dt>

      <dd>Yeni <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code> yönergesi sayesinde istemciye
        “Kabul edilebilir bir gösterim çeşidi yok” ya da “Çok sayıda seçim
        belirtilmiş” yanıtını döndürmek yerine tüm durumlara uyan bir
        sayfanın gönderilebilmesi sağlanmıştır. Bundan başka, uzlaşım ve
        <code>MultiViews</code> algoritmaları daha tutarlı sonuçlar elde
        etmek amacıyla elden geçirilmiş ve belge içeriği ile daha iyi eşleşen
        yeni bir tür eşlem yapısı sağlanmıştır.</dd>

      <dt><code class="module"><a href="./mod/mod_autoindex.html">mod_autoindex</a></code></dt>

      <dd>Dizin içeriklerinin özdevimli listelenmesi artık HTML tabloları
        kullanılacak şekilde yapılandırılabilmektedir. Böylece sayfa daha iyi
        biçemlenebilmekte, içerik daha hassas sıralanabilmekte, sürüm
        numarasına göre sıralama yapılabilmekte ve dosya ismi kalıpları
        kullanılarak sadece istenen içerik listelenebilmektedir.</dd>

      <dt><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></dt>

      <dd>Yeni yönergeler, değiştirilecek SSI elemanları için öntanımlı
        başlangıç ve bitiş etiketlerine izin vermekte, hataların ve zaman
        biçemleme yapılandırmalarının SSI belgesinde değil ana yapılandırma
        dosyasında bulunması mümkün olmaktadır. Düzenli ifadelerin gruplanmış
        sonuçları (Perl düzenli ifade sözdizimi kullanılmaktadır)
        <code class="module"><a href="./mod/mod_include.html">mod_include</a></code> modülünün <code>$0</code> ..
        <code>$9</code> değişkenleri sayesinde kullanılabilmektedir.</dd>

      <dt><code class="module"><a href="./mod/mod_auth_dbm.html">mod_auth_dbm</a></code></dt>

      <dd><code class="directive"><a href="./mod/mod_auth_dbm.html#authdbmtype">AuthDBMType</a></code> yönergesi
        sayesinde artık çok sayıda DBM tarzı veritabanı türü
        desteklenmektedir.</dd>
    </dl>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                          new_features_2_2.html                                                                               100644       0       0        41566 11256641270  12264  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache 2.2’de Yeni olan Özellikler - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache 2.2’de Yeni olan Özellikler</h1>


  <p>Bu belgede Apache HTTP Sunucusunun 2.0 ve 2.2 sürümleri arasındaki
    başlıca farklara değinilmiştir. 1.3 sürümüne göre yeni özellikler için <a href="new_features_2_0.html">Apache 2.0’da Yeni olan Özellikler</a>
    belgesine bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Çekirdekteki Gelişmeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#module">Modüllerdeki Gelişmeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programs">Programlardaki Gelişmeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#developer">Modül Geliştirici Değişiklikleri</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="core" id="core">Çekirdekteki Gelişmeler</a></h2>
    
    <dl>

      <dt>Authn/Authz</dt>
      <dd>Mevcut kimlik doğrulama ve yetkilendirme modüllerinin iç işleyişi
        yeniden düzenlendi. Yeni <code class="module"><a href="./mod/mod_authn_alias.html">mod_authn_alias</a></code> modülü
        belli kimlik doğrulama yapılandırmalarını büyük oranda
        basitleştirebilir. Bu değişikliklerin kullanıcıları ve modül
        yazarlarını nasıl etkilediğini öğrenmek için <a href="#module">modül
        değişikliklerine</a> ve <a href="#developer">geliştirici
        değişikliklerine</a> bakabilirsiniz.</dd>

      <dt>Önbellekleme</dt>
      <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> ve
        <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code> modüllerinde büyük oranda değişikliğe
        gidilerek bunlar deneysel olmaktan çıkarılıp üretim amaçlı modüller
        haline getirildiler. <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code> tarafından
        kullanılan disk alanının  <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> tarafından
        düzenli aralıklarla temizlenebilmesi sağlandı.</dd>

      <dt>Yapılandırma</dt>
      <dd>Öntanımlı yapılandırma basitleştirildi ve modüler bir yapıya
        kavuşturuldu. Sık kullanılan ortak özellikleri etkinleştirmekte
        kullanılan yapılandırmalar gruplanarak bunların Apache ile gelmesi ve
        ana sunucu yapılandırılırken yapılandırmaya kolayca eklenebilmesi
        sağlandı.</dd>

      <dt>Nazikçe Durdurma</dt>
      <dd><code class="module"><a href="./mod/prefork.html">prefork</a></code>, <code class="module"><a href="./mod/worker.html">worker</a></code> ve
        <code class="module"><a href="./mod/event.html">event</a></code>  MPM’leri artık <code class="program"><a href="./programs/httpd.html">httpd</a></code>’yi <a href="stopping.html#gracefulstop"><code>graceful-stop</code></a>
        sinyali sayesinde nazikçe durdurabilmektedir.
        <code class="program"><a href="./programs/httpd.html">httpd</a></code> programının sonlandırılmasındaki gecikmelere
        karşı bir önlem olarak, isteğe bağlı bir zaman aşımı belirtmeyi
        mümkün kılan <code class="directive"><a href="./mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code> yönergesi
        sayesinde sunum sürüyor olsa bile <code class="program"><a href="./programs/httpd.html">httpd</a></code>
        sonlandırılabilmektedir.</dd>

      <dt>Vekil Sunucu</dt>
      <dd>Yeni <code class="module"><a href="./mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> modülü ile
        <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> için yük dengeleme hizmetleri sağlanmış,
        yeni <code class="module"><a href="./mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code> modülü ile <a href="http://jakarta.apache.org/tomcat/">Apache Tomcat</a> tarafından
        kullanılan <em>Apache JServ Protokolünün 1.3 sürümü</em> için destek
        eklenmiştir.</dd>

      <dt>Düzenli İfade Kütüphanesi Güncellemesi</dt>
      <dd>Apache, <a href="http://www.pcre.org/">Perl uyumlu düzenli ifade
        kütüphanesinin 5.0 sürümünü</a> (PCRE) içermektedir.
        <code class="program"><a href="./programs/configure.html">configure</a></code> betiğinin <code>--with-pcre</code>
        seçeneği sayesinde <code class="program"><a href="./programs/httpd.html">httpd</a></code> programı PCRE destekli
        olarak derlenebilmektedir.</dd>

      <dt>Akıllı Süzme</dt>
      <dd><code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code> çıktı süzgeç zincirinin devingen olarak
        yapılandırılmasını sağlar. Süzgeçlerin herhangi bir istek veya yanıt
        başlığına veya bir ortam değişkenine dayanarak koşullu olarak
        yerleştirilmesini mümkün kılar ve bunu yaparken 2.0 mimarisindeki
        sorunlu bağımlılıklar ve sıralama sorunlarının da üstesinden
        gelir.</dd>

      <dt>Büyük Dosya (&gt;2GB) Desteği</dt>
      <dd><code class="program"><a href="./programs/httpd.html">httpd</a></code> artık günümüzün 32 bitlik Unix
        sistemlerinde bulunan 2 GB’lık büyük dosyaları destekleyecek tarzda
        derlenebilmektedir. 2 GB’lık istek gövdelerine destek de ayrıca
        eklenmiştir.</dd>

      <dt>Event MPM</dt>
      <dd><code class="module"><a href="./mod/event.html">event</a></code> MPM modülü sürekli bağlantı isteklerinin
        işlenmesi ve bağlantıların kabul edilmesi için ayrı bir evre
        kullanır. Sürekli bağlantı (keepalive) isteklerinin işlenmesi
        geleneksel olarak httpd’nin buna bir <code class="module"><a href="./mod/worker.html">worker</a></code>
        adamasını gerektirirdi. Bu adanmış <code class="module"><a href="./mod/worker.html">worker</a></code> bağlantı
        zaman aşımına uğrayıncaya değin tekrar kullanılamazdı.</dd>

      <dt>SQL Veritabanı Desteği</dt>
      <dd><code class="module"><a href="./mod/mod_dbd.html">mod_dbd</a></code> modülü <code>apr_dbd</code> arayüzü ile
        birlikte, ihtiyacı olan modüllere SQL desteği sağlar. Evreli MPM’ler
        için bağlantı havuzlamasını destekler.</dd>
    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="module" id="module">Modüllerdeki Gelişmeler</a></h2>
    
    <dl>
      <dt>Authn/Authz</dt>
      <dd>Kimlik Doğrulama, Yetkilendirme ve Erişim Denetimi ile ilgili
        modüller özetli kimlik doğrulamasına daha iyi destek sağlamak
        amacıyla yeniden isimlendirildi. Örneğin, <code>mod_auth</code>
        modülü şimdi <code class="module"><a href="./mod/mod_auth_basic.html">mod_auth_basic</a></code> ve
        <code class="module"><a href="./mod/mod_authn_file.html">mod_authn_file</a></code> diye iki modüle bölünmüştür.;
        <code>mod_auth_dbm</code> modülünün ismi
        <code class="module"><a href="./mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ve <code>mod_access</code>  modülünün
        ismi de <code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code> olarak değiştirilmiştir.
        Ayrıca, belli kimlik doğrulama yapılandırmalarını basitleştirmek
        üzere <code class="module"><a href="./mod/mod_authn_alias.html">mod_authn_alias</a></code> diye yeni bir modül vardır.
      </dd>

      <dt><code class="module"><a href="./mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></dt>
      <dd>Bu modül 2.0 sürümü <code>mod_auth_ldap</code> modülünün 2.2
        <code>Authn/Authz</code> arayüzüne bir uyarlamasıdır. <code class="directive"><a href="./mod/core.html#require">Require</a></code> yönergesine LDAP
        öznitelik değerlerinin ve karmaşık arama süzgeçlerinin kullanımı gibi
        yeni özellikler eklenmiştir.</dd>

      <dt><code class="module"><a href="./mod/mod_authz_owner.html">mod_authz_owner</a></code></dt>
      <dd>Dosya sistemi üzerindeki dosyalara erişimi dosya sahibine göre
        düzenleyebilmeyi sağlayan yeni bir modüldür.</dd>

      <dt><code class="module"><a href="./mod/mod_version.html">mod_version</a></code></dt>
      <dd>Çalışan sunucunun sürüm numarasına göre belli yapılandırma
        bloklarını etkinleştirebilen bir modüldür.</dd>

      <dt><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></dt>
      <dd>Apache tarafından çözümlenen haliyle yapılandırma yönergelerinin
        gösterilmesini sağlayan yeni <code>?config</code> parametresini
        ekler. Modül ayrıca, <code>httpd -V</code>’nin yaptığı gibi ek olarak
        derleme bilgisini ve tüm istek kancalarının sırasını da gösterir.</dd>

      <dt><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt>
      
      <dd>TLS şifrelemesini HTTP/1.1 için güncelleyen <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a> için destek
        sağlar.</dd>

      <dt><code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code></dt>
      <dd><code>mod_imap</code> modülünün ismi yanlış anlamalara meydan
        vermemek için <code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code> olarak değiştirildi.</dd>
    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="programs" id="programs">Programlardaki Gelişmeler</a></h2>
    
    <dl>
      <dt><code class="program"><a href="./programs/httpd.html">httpd</a></code></dt>
      <dd>Mevcut yapılandırmaya göre yüklenen modülleri listelemek için
        <code>-M</code> diye yeni bir komut satırı seçeneği eklendi.
        <code>-l</code> seçeneğinin aksine, bu seçenekle elde edilen liste
        <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> üzerinden yüklenen DSO’ları içerir.</dd>

      <dt><code class="program"><a href="./programs/httxt2dbm.html">httxt2dbm</a></code></dt>
      <dd><code class="directive"><a href="./mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> yönergesinde
        <code>dbm</code> eşlem türü ile kullanmak üzere metin girdilerden DBM
        dosyaları üretmek için kullanılan yeni bir program.</dd>
    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="developer" id="developer">Modül Geliştirici Değişiklikleri</a></h2>
    
    <dl>
      <dt><a class="glossarylink" href="./glossary.html#apr" title="sözlüğe bakınız">APR</a> 1.0 Programlama Arayüzü</dt>

      <dd>Apache 2.2’de APR 1.0 API kullanılmıştır.  Kullanımı önerilmeyen
        tüm işlevler ve simgeler <code>APR</code> ve
        <code>APR-Util</code>’den kaldırılmıştır. Ayrıntılar için <a href="http://apr.apache.org/">APR Sitesine bakınız</a>.</dd>

      <dt>Authn/Authz</dt>
      <dd>Dağıtımla gelen kimlik doğrulama ve yetkilendirme modüllerinin
          isimleri aşağıdaki gibi değiştirildi:
          <ul>
          <li><code>mod_auth_*</code>  -&gt; HTTP kimlik doğrulamasını
            gerçekleştiren modüller.</li>
          <li><code>mod_authn_*</code> -&gt; Kimlik doğrulamasının artalanına
            destek sağlayan modüller.</li>
          <li><code>mod_authz_*</code> -&gt; Yetkilendirmeyi (veya erişimi)
            gerçekleştiren modüller.</li>
          <li><code>mod_authnz_*</code> -&gt; Kimlik doğrulama ve
            yetkilendirmeyi birlikte gerçekleştiren modüller.</li>
          </ul>
          Yeni kimlik doğrulama artalanının oluşturulmasını büyük oranda
          kolaylaştıran yeni bir kimlik doğrulama artalanı sağlayıcı şeması
          vardır.</dd>

      <dt>Bağlantı Hatalarının Günlüklenmesi</dt>

      <dd>İstemci bağlantısında ortaya çıkan hataları günlüğe kaydetmek için
        <code>ap_log_cerror</code> isminde yeni bir işlev eklendi. Böyle bir
        durumda günlük kaydı istemcinin IP adresini içermektedir.</dd>

      <dt>Deneme Yapılandırma Kancası Eklendi</dt>

      <dd>Kullanıcı, <code class="program"><a href="./programs/httpd.html">httpd</a></code>’yi sadece <code>-t</code>
        seçeneği ile kullandığı takdirde özel kod icra edilmesini isteyen
        modüllere yardımcı olmak üzere <code>test_config</code> diye yeni bir
        kanca işlev eklendi.</dd>

      <dt>Evreli MPM’lerin Yığıt Boyutunun Ayarlanması</dt>

      <dd>Tüm evreli MPM’lerin yığıt boyutunu ayarlamak üzere <code class="directive"><a href="./mod/mpm_common.html#threadstacksize">ThreadStackSize</a></code> isminde yeni bir
        yönerge eklendi. Öntanımlı yığıt boyutunun küçük olduğu platformlarda
        bazı üçüncü parti modüller tarafından buna ihtiyaç duyulmaktadır.</dd>

      <dt>Çıktı süzgeçlerinde protokoller</dt>

      <dd>Evvelce her süzgeç etkilediğini yanıt başlıklarının doğru olarak
        üretilmesini sağlamak zorundaydı. Süzgeçler artık protokol yönetimini
        <code>ap_register_output_filter_protocol</code> veya
        <code>ap_filter_protocol</code> işlevi üzerinden
        <code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code> modülüne devredebilmektedir.</dd>

      <dt>İzleme kancası eklendi</dt>
      <dd>İzleme kancası, modüllerin ana (tepe) süreçteki sıradan/zamanlanmış
        işlerini yapacak modülleri etkinleştirir.</dd>

      <dt>Düzenli ifade programlama aryüzü değişti</dt>

      <dd><code>pcreposix.h</code> başlık dosyası artık yok; yerine
        <code>ap_regex.h</code> dosyası geçti. Eski başlık dosyasınca ifade
        olunan POSIX.2 <code>regex.h</code> gerçeklenimi şimdi
        <code>ap_</code> isim alanı altında <code>ap_regex.h</code> başlık
        dosyasındadır. <code>regcomp</code>, <code>regexec</code> gibi
        işlevlerin yerine de artık <code>ap_regcomp</code>,
        <code>ap_regexec</code> işlevleri geçerlidir.</dd>

      <dt>DBD Arayüzü (SQL Veritabanı API)</dt>

      <dd><p>Apache 1.x ve 2.0’da, modüller, SQL veritabanlarını kendileri
        yönetebilmek için sorumluluğu alacak bir SQL artalanına ihtiyaç
        duymaktadır. Her biri kendi bağlantısına sahip bir sürü modül
        olduğunda bu yöntem çok verimsiz olabilmektedir.</p>

      <p>Apache 2.1 ve sonrasında veritabanı bağlantılarını (evreli olsun
        olmasın MPM’lerin eniyilenmiş stratejileri dahil) yönetmek için
        <code>ap_dbd</code> arayüzü kullanılmıştır. APR 1.2 ve sonrasında ise
        veritabanı ile etkileşim <code>apr_dbd</code> arayüzüyle
        sağlanmıştır.</p>

      <p>Yeni modüllerin tüm SQL veritabanı işlemlerinde bu arayüzü
        kullanmaları ÖNERİlir.  Mevcut uygulamaların uygulanabildiği takdirde
        hem kullanıcılarına önerilen bir seçenek olarak hem de şeffaf olarak
        kullanmak üzere kendilerini güncellemeleri ÖNERİir.</p></dd>
    </dl>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                          platform/ebcdic.html                                                                                100644       0       0        51707 11256641270  12166  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>The Apache EBCDIC Port - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>The Apache EBCDIC Port</h1>



    <div class="warning"><strong>Warning:</strong> This document
    has not been updated to take into account changes made in
    the 2.0 version of the Apache HTTP Server. Some of the
    information may still be relevant, but please use it with care.
    </div>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#overview">Overview of the Apache EBCDIC Port</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#design">Design Goals</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#technical">Technical Solution</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#porting">Porting Notes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#document">Document Storage Notes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#modules">Apache Modules' Status</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#third-party">Third Party Modules' Status</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Overview of the Apache EBCDIC Port</a></h2>

    

    <p>Version 1.3 of the Apache HTTP Server is the first version
    which includes a port to a (non-ASCII) mainframe machine which
    uses the EBCDIC character set as its native codeset.</p>

    <p>(It is the SIEMENS family of mainframes running the <a href="http://www.siemens.de/servers/bs2osd/osdbc_us.htm">BS2000/OSD
    operating system</a>. This mainframe OS nowadays features a
    SVR4-derived POSIX subsystem).</p>

    <p>The port was started initially to</p>

    <ul>
      <li>prove the feasibility of porting <a href="http://httpd.apache.org/">the Apache HTTP server</a> to
      this platform</li>

      <li>find a "worthy and capable" successor for the venerable
      <a href="http://www.w3.org/Daemon/">CERN-3.0</a> daemon
      (which was ported a couple of years ago), and to</li>

      <li>prove that Apache's preforking process model can on this
      platform easily outperform the accept-fork-serve model used
      by CERN by a factor of 5 or more.</li>
    </ul>

    <p>This document serves as a rationale to describe some of the
    design decisions of the port to this machine.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="design" id="design">Design Goals</a></h2>

    

    <p>One objective of the EBCDIC port was to maintain enough
    backwards compatibility with the (EBCDIC) CERN server to make
    the transition to the new server attractive and easy. This
    required the addition of a configurable method to define
    whether a HTML document was stored in ASCII (the only format
    accepted by the old server) or in EBCDIC (the native document
    format in the POSIX subsystem, and therefore the only realistic
    format in which the other POSIX tools like <code>grep</code> or
    <code>sed</code> could operate on the documents). The current
    solution to this is a "pseudo-MIME-format" which is intercepted
    and interpreted by the Apache server (see below). Future versions
    might solve the problem by defining an "ebcdic-handler" for all
    documents which must be converted.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="technical" id="technical">Technical Solution</a></h2>

    

    <p>Since all Apache input and output is based upon the BUFF
    data type and its methods, the easiest solution was to add the
    conversion to the BUFF handling routines. The conversion must
    be settable at any time, so a BUFF flag was added which defines
    whether a BUFF object has currently enabled conversion or not.
    This flag is modified at several points in the HTTP
    protocol:</p>

    <ul>
      <li><strong>set</strong> before a request is received
      (because the request and the request header lines are always
      in ASCII format)</li>

      <li><strong>set/unset</strong> when the request body is
      received - depending on the content type of the request body
      (because the request body may contain ASCII text or a binary
      file)</li>

      <li><strong>set</strong> before a reply header is sent
      (because the response header lines are always in ASCII
      format)</li>

      <li><strong>set/unset</strong> when the response body is sent
      - depending on the content type of the response body (because
      the response body may contain text or a binary file)</li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="porting" id="porting">Porting Notes</a></h2>

    

    <ol>
      <li>
        <p>The relevant changes in the source are <code>#ifdef</code>'ed
        into two categories:</p>

        <dl>
          <dt><code><strong>#ifdef
          CHARSET_EBCDIC</strong></code></dt>

          <dd>
            <p>Code which is needed for any EBCDIC based machine.
            This includes character translations, differences in
            contiguity of the two character sets, flags which
            indicate which part of the HTTP protocol has to be
            converted and which part doesn't <em>etc.</em></p>
          </dd>

          <dt><code><strong>#ifdef _OSD_POSIX</strong></code></dt>

          <dd>
            <p>Code which is needed for the SIEMENS BS2000/OSD
            mainframe platform only. This deals with include file
            differences and socket implementation topics which are
            only required on the BS2000/OSD platform.</p>
          </dd>
        </dl>
      </li>

      <li>
        <p>The possibility to translate between ASCII and EBCDIC at
        the socket level (on BS2000 POSIX, there is a socket option
        which supports this) was intentionally <em>not</em> chosen,
        because the byte stream at the HTTP protocol level consists
        of a mixture of protocol related strings and non-protocol
        related raw file data. HTTP protocol strings are always
        encoded in ASCII (the <code>GET</code> request, any Header: lines,
        the chunking information <em>etc.</em>) whereas the file transfer
        parts (<em>i.e.</em>, GIF images, CGI output <em>etc.</em>)
        should usually be just "passed through" by the server. This
        separation between "protocol string" and "raw data" is
        reflected in the server code by functions like <code>bgets()</code>
        or <code>rvputs()</code> for strings, and functions like
        <code>bwrite()</code> for binary data. A global translation
        of everything would therefore be inadequate.</p>

        <p>(In the case of text files of course, provisions must be
        made so that EBCDIC documents are always served in
        ASCII)</p>
      </li>

      <li>
        <p>This port therefore features a built-in protocol level
        conversion for the server-internal strings (which the
        compiler translated to EBCDIC strings) and thus for all
        server-generated documents. The hard coded ASCII escapes
        <code>\012</code> and <code>\015</code> which are ubiquitous
        in the server code are an exception: they are already the binary
        encoding of the ASCII <code>\n</code> and <code>\r</code> and
        must not be converted to ASCII a second time.
        This exception is only relevant for server-generated strings;
        and <em>external</em> EBCDIC documents are not expected to
        contain ASCII newline characters.</p>
      </li>

      <li>
        <p>By examining the call hierarchy for the BUFF management
        routines, I added an "ebcdic/ascii conversion layer" which
        would be crossed on every puts/write/get/gets, and a
        conversion flag which allowed enabling/disabling the
        conversions on-the-fly. Usually, a document crosses this
        layer twice from its origin source (a file or CGI output) to
        its destination (the requesting client): <code>file -&gt;
        Apache</code>, and <code>Apache -&gt; client</code>.</p>

        <p>The server can now read the header lines of a CGI-script
        output in EBCDIC format, and then find out that the remainder
        of the script's output is in ASCII (like in the case of the
        output of a WWW Counter program: the document body contains a
        GIF image). All header processing is done in the native
        EBCDIC format; the server then determines, based on the type
        of document being served, whether the document body (except
        for the chunking information, of course) is in ASCII already
        or must be converted from EBCDIC.</p>
      </li>

      <li>
        <p>For Text documents (MIME types text/plain, text/html
        <em>etc.</em>), an implicit translation to ASCII can be
        used, or (if the users prefer to store some documents in
        raw ASCII form for faster serving, or because the files
        reside on a NFS-mounted directory tree) can be served
        without conversion.</p>

        <p><strong>Example:</strong></p>

        <p>to serve files with the suffix <code>.ahtml</code> as a
        raw ASCII <code>text/html</code> document without implicit
        conversion (and suffix <code>.ascii</code> as ASCII
        <code>text/plain</code>), use the directives:</p>

        <div class="example"><p><code>
          AddType  text/x-ascii-html  .ahtml <br />
          AddType  text/x-ascii-plain .ascii
        </code></p></div>

        <p>Similarly, any <code>text/foo</code> MIME type can be
        served as "raw ASCII" by configuring a MIME type
        "<code>text/x-ascii-foo</code>" for it using
        <code>AddType</code>.</p>
      </li>

      <li>
        <p>Non-text documents are always served "binary" without
        conversion. This seems to be the most sensible choice for,
        .<em>e.g.</em>, GIF/ZIP/AU file types. This of course
        requires the user to copy them to the mainframe host using
        the "<code>rcp -b</code>" binary switch.</p>
      </li>

      <li>
        <p>Server parsed files are always assumed to be in native
        (<em>i.e.</em>, EBCDIC) format as used on the machine, and
        are converted after processing.</p>
      </li>

      <li>
        <p>For CGI output, the CGI script determines whether a
        conversion is needed or not: by setting the appropriate
        Content-Type, text files can be converted, or GIF output can
        be passed through unmodified. An example for the latter case
        is the wwwcount program which we ported as well.</p>
      </li>

    </ol>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="document" id="document">Document Storage Notes</a></h2>

    

    <h3><a name="binary" id="binary">Binary Files</a></h3>

      

      <p>All files with a <code>Content-Type:</code> which does not
      start with <code>text/</code> are regarded as <em>binary
      files</em> by the server and are not subject to any conversion.
      Examples for binary files are GIF images, gzip-compressed files
      and the like.</p>

      <p>When exchanging binary files between the mainframe host and
      a Unix machine or Windows PC, be sure to use the ftp "binary"
      (<code>TYPE I</code>) command, or use the
      <code>rcp -b</code> command from the mainframe host (the
      <code>-b</code> switch is not supported in unix
      <code>rcp</code>'s).</p>

    

    <h3><a name="text" id="text">Text Documents</a></h3>

      

      <p>The default assumption of the server is that Text Files
      (<em>i.e.</em>, all files whose <code>Content-Type:</code>
      starts with <code>text/</code>) are stored in the native
      character set of the host, EBCDIC.</p>

    

    <h3><a name="ssi" id="ssi">Server Side Included Documents</a></h3>

      

      <p>SSI documents must currently be stored in EBCDIC only.
      No provision is made to convert it from ASCII before
      processing.</p>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="modules" id="modules">Apache Modules' Status</a></h2>

    

    <table class="bordered">
      <tr>
        <th>Module</th>
        <th>Status</th>
        <th>Notes</th>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/core.html">core</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_auth_anon.html">mod_auth_anon</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code></td>
        <td class="centered">?</td>
        <td>with own <code>libdb.a</code></td>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code></td>
        <td class="centered">?</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code>mod_digest</code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></td>
        <td class="centered">-</td>
        <td>no shared libs</td>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_env.html">mod_env</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_example.html">mod_example</a></code></td>
        <td class="centered">-</td>
        <td>(test bed only)</td>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_info.html">mod_info</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code>mod_log_agent</code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code>mod_log_config</code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_log_referer.html">mod_log_referer</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code></td>
        <td class="centered">?</td>
        <td>not ported yet</td>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></td>
        <td class="centered">+</td>
        <td>untested</td>
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_speling.html">mod_speling</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></td>
        <td class="centered">+</td>
        <td />
      </tr>

      <tr>
        <td><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code></td>
        <td class="centered">?</td>
        <td>untested</td>
      </tr>
    </table>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="third-party" id="third-party">Third Party Modules' Status</a></h2>

    

    <table class="bordered">
      <tr>
        <th>Module</th>
        <th>Status</th>
        <th>Notes</th>
      </tr>

      <tr>
        <td><code><a href="http://java.apache.org/">mod_jserv</a>
        </code></td>
        <td class="centered">-</td>
        <td>JAVA still being ported.</td>
      </tr>

      <tr>
        <td><code><a href="http://www.php.net/">mod_php3</a></code></td>
        <td class="centered">+</td>
        <td><code>mod_php3</code> runs fine, with LDAP and GD
        and FreeType libraries.</td>
      </tr>

      <tr>
        <td><code><a href="http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html">mod_put</a></code></td>
        <td class="centered">?</td>
        <td>untested</td>
      </tr>

      <tr>
        <td><code><a href="ftp://hachiman.vidya.com/pub/apache/">mod_session</a></code></td>
        <td class="centered">-</td>
        <td>untested</td>
      </tr>
    </table>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                         platform/index.html                                                                                 100644       0       0         7432 11256641270  12040  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Platform Specific Notes - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>Platform Specific Notes</h1>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#win">Microsoft Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#other">Other Platforms</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="win" id="win">Microsoft Windows</a></h2>

    

    <dl>
      <dt>Using Apache</dt>
      <dd>
        <p>This document explains how to install, configure and run Apache 2.0
        under Microsoft Windows.</p>

        <p>See: <a href="windows.html">Using Apache with Microsoft Windows</a></p>
      </dd>
    </dl>

    <dl>
      <dt>Compiling Apache</dt>
      <dd>
        <p>There are many important points before you begin compiling Apache.
        This document explain them.</p>

        <p>See: <a href="win_compiling.html">Compiling Apache for Microsoft Windows</a></p>
      </dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="other" id="other">Other Platforms</a></h2>

    

    <dl>
      <dt>Novell NetWare</dt>
      <dd>
        <p>This document explains how to install, configure and run Apache 2.0
        under Novell NetWare 5.1 and above.</p>

        <p>See: <a href="netware.html">Using Apache With Novell NetWare</a></p>
      </dd>
    </dl>

    <dl>
      <dt>EBCDIC</dt>
      <dd>
        <p>Version 1.3 of the Apache HTTP Server is the first version which
        includes a port to a (non-ASCII) mainframe machine which uses the
        EBCDIC character set as its native codeset.</p>

        <div class="warning"><strong>Warning:</strong> This document
        has not been updated to take into account changes made in
        the 2.0 version of the Apache HTTP Server. Some of the
        information may still be relevant, but please use it
        with care.</div>

        <p>See: <a href="ebcdic.html">The Apache EBCDIC Port</a></p>
      </dd>
    </dl>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                      platform/netware.html                                                                               100644       0       0        72540 11256641270  12420  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Using Apache With Novell NetWare - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>Using Apache With Novell NetWare</h1>



    <p>This document explains how to install, configure and run
    Apache 2.0 under Novell NetWare 6.0 and above. If you find any bugs,
    or wish to contribute in other ways, please use our
    <a href="http://httpd.apache.org/bug_report.html">bug reporting
    page.</a></p>

    <p>The bug reporting page and dev-httpd mailing list are <em>not</em>
    provided to answer questions about configuration or running Apache.
    Before you submit a bug report or request, first consult this document, the
    <a href="../faq/index.html">Frequently Asked Questions</a> page and the other
    relevant documentation topics. If you still have a question or problem,
    post it to the <a href="news://developer-forums.novell.com/novell.devsup.webserver">
    novell.devsup.webserver</a> newsgroup, where many Apache users are more than
    willing to answer new and obscure questions about using Apache on NetWare.</p>

    <p>Most of this document assumes that you are installing Apache
    from a binary distribution. If you want to compile Apache
    yourself (possibly to help with development, or to track down
    bugs), see the section on <a href="#comp">Compiling Apache for
    NetWare</a> below.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#req">Requirements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#down">Downloading Apache for NetWare</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#inst">Installing Apache for NetWare</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#run">Running Apache for NetWare</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#use">Configuring Apache for NetWare</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#comp">Compiling Apache for NetWare</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="req" id="req">Requirements</a></h2>

    

    <p>Apache 2.0 is designed to run on NetWare 6.0 service pack 3 
    and above. If you are running a service pack less
    than SP3, you must install the latest 
    <a href="http://developer.novell.com/ndk/libc.htm">NetWare Libraries
    for C (LibC)</a>.</p>

    <p>NetWare service packs are available <a href="http://support.novell.com/misc/patlst.htm#nw">here</a>.</p>

    <p>Apache 2.0 for NetWare can also be run in a NetWare 5.1 environment
    as long as the latest service pack or the latest version
    of the <a href="http://developer.novell.com/ndk/libc.htm">NetWare Libraries
    for C (LibC)</a> has been installed .  <strong>WARNING:</strong> Apache 2.0 
    for NetWare has not been targeted for or tested in this environment.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="down" id="down">Downloading Apache for NetWare</a></h2>

    

    <p>Information on the latest version of Apache can be found on
    the Apache web server at <a href="http://www.apache.org/">http://www.apache.org/</a>. This
    will list the current release, any more recent alpha or
    beta-test releases, together with details of mirror web and
    anonymous ftp sites. Binary builds of the latest releases of
    Apache 2.0 for NetWare can be downloaded from 
    <a href="http://www.apache.org/dist/httpd/binaries/netware">here</a>.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="inst" id="inst">Installing Apache for NetWare</a></h2>

    

    <p>There is no Apache install program for NetWare currently. If you
    are building Apache 2.0 for NetWare from source, you will need to 
    copy the files over to the server manually.</p>

    <p>Follow these steps to install Apache on NetWare from the
    binary download (assuming you will install to
    <code>sys:/apache2</code>):</p>

    <ul>
      <li>Unzip the binary download file to the root of the <code>SYS:</code>
      volume (may be installed to any volume)</li>

      <li>Edit the <code>httpd.conf</code> file setting <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> and <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> along with any file path values
      to reflect your correct server settings</li>

      <li>Add <code>SYS:/APACHE2</code> to the search path, for example:
        <div class="example"><p><code>SEARCH ADD SYS:\APACHE2</code></p></div>
      </li>

    </ul>

    <p>Follow these steps to install Apache on NetWare manually
    from your own build source (assuming you will install to
    <code>sys:/apache2</code>):</p>

    <ul>
      <li>Create a directory called <code>Apache2</code> on a
      NetWare volume</li>

      <li>Copy <code>APACHE2.NLM</code>, <code>APRLIB.NLM</code>
      to <code>SYS:/APACHE2</code></li>

      <li>Create a directory under <code>SYS:/APACHE2</code>
      called <code>BIN</code></li>

      <li>Copy <code>HTDIGEST.NLM</code>, <code>HTPASSWD.NLM</code>, 
      <code>HTDBM.NLM</code>, <code>LOGRES.NLM</code>, <code>ROTLOGS.NLM</code>
      to <code>SYS:/APACHE2/BIN</code></li>

      <li>Create a directory under <code>SYS:/APACHE2</code>
      called <code>CONF</code></li>

      <li>Copy the <code>HTTPD-STD.CONF</code> file to the
      <code>SYS:/APACHE2/CONF</code> directory and rename to
      <code>HTTPD.CONF</code></li>

      <li>Copy the <code>MIME.TYPES</code>, <code>CHARSET.CONV</code> and 
      <code>MAGIC</code> files to <code>SYS:/APACHE2/CONF</code> directory</li>

      <li>Copy all files and subdirectories in <code>\HTTPD-2.0\DOCS\ICONS</code>
      to <code>SYS:/APACHE2/ICONS</code></li>

      <li>Copy all files and subdirectories in <code>\HTTPD-2.0\DOCS\MANUAL</code>
      to <code>SYS:/APACHE2/MANUAL</code></li>

      <li>Copy all files and subdirectories in <code>\HTTPD-2.0\DOCS\ERROR</code>
      to <code>SYS:/APACHE2/ERROR</code></li>

      <li>Copy all files and subdirectories in <code>\HTTPD-2.0\DOCS\DOCROOT</code>
      to <code>SYS:/APACHE2/HTDOCS</code></li>

      <li>Create the directory <code>SYS:/APACHE2/LOGS</code>
      on the server</li>

      <li>Create the directory <code>SYS:/APACHE2/CGI-BIN</code>
      on the server</li>

      <li>Create the directory <code>SYS:/APACHE2/MODULES</code>
      and copy all nlm modules into the <code>modules</code> directory</li>

      <li>Edit the <code>HTTPD.CONF</code> file searching for all
      <code>@@Value@@</code> markers and replacing them with the
      appropriate setting</li>

      <li>Add <code>SYS:/APACHE2</code> to the search path, for example:
        <div class="example"><p><code>SEARCH ADD SYS:\APACHE2</code></p></div>
      </li>
    </ul>

    <p>Apache may be installed to other volumes besides the default <code>SYS</code> volume.</p>

    <p>During the build process, adding the keyword "install" to the makefile command line
    will automatically produce a complete distribution package under the subdirectory 
    <code>DIST</code>. Install Apache by simply copying the distribution that was produced 
    by the makfiles to the root of a NetWare volume (see: <a href="#comp">Compiling Apache for 
    NetWare</a> below).</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="run" id="run">Running Apache for NetWare</a></h2>

    

    <p>To start Apache just type <code>apache</code> at the
    console. This will load apache in the OS address space. If you
    prefer to load Apache in a protected address space you may
    specify the address space with the load statement as follows:</p>

    <div class="example"><p><code>
      load address space = apache2 apache2
    </code></p></div>

    <p>This will load Apache into an address space called apache2.
    Running multiple instances of Apache concurrently on NetWare is
    possible by loading each instance into its own protected
    address space.</p>

    <p>After starting Apache, it will be listening to port 80
    (unless you changed the <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
    directive in the configuration files).
    To connect to the server and access the default page,
    launch a browser and enter the server's name or address. This
    should respond with a welcome page, and a link to the Apache
    manual. If nothing happens or you get an error, look in the
    <code>error_log</code> file in the <code>logs</code>
    directory.</p>

    <p>Once your basic installation is working, you should
    configure it properly by editing the files in the
    <code>conf</code> directory.</p>

    <p>To unload Apache running in the OS address space just type
    the following at the console:</p>

    <div class="example"><p><code>
      unload apache2
    </code></p></div>

    <p>or</p>

    <div class="example"><p><code>
      apache2 shutdown
    </code></p></div>

    <p>If apache is running in a protected address space specify the
    address space in the unload statement:</p>

    <div class="example"><p><code>
      unload address space = apache2 apache2
    </code></p></div>

    <p>When working with Apache it is important to know how it will
    find the configuration files. You can specify a configuration
    file on the command line in two ways:</p>

    <ul>
      <li><code>-f</code> specifies a path to a particular
      configuration file</li>
    </ul>

    <div class="example"><p><code>
      apache2 -f "vol:/my server/conf/my.conf"
    </code></p></div>

    <div class="example"><p><code>
      apache -f test/test.conf
    </code></p></div>

    <p>In these cases, the proper <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
    should be set in the configuration file.</p>

    <p>If you don't specify a configuration file name with <code>-f</code>,
    Apache will use the file name compiled into the server, usually
    <code>conf/httpd.conf</code>. Invoking Apache with the <code>-V</code>
    switch will display this value labeled as <code>SERVER_CONFIG_FILE</code>.
    Apache will then determine its <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
    by trying the following, in this order:</p>

    <ul>
      <li>A <code>ServerRoot</code> directive via a
      <code>-C</code> switch.</li>

      <li>The <code>-d</code> switch on the command line.</li>

      <li>Current working directory</li>

      <li>The server root compiled into the server.</li>
    </ul>

    <p>The server root compiled into the server is usually <code>sys:/apache2</code>.
    invoking apache with the <code>-V</code> switch will display this value labeled as
    <code>HTTPD_ROOT</code>.</p>

    <p>Apache 2.0 for NetWare includes a set of command line directives that can
    be used to modify or display information about the running instance of the
    web server. These directives are only available while Apache is running. Each 
    of these directives must be preceded by the keyword <code>APACHE2</code>.</p>

    <dl>
      <dt>RESTART</dt>
      <dd>Instructs Apache to terminate all running worker
      threads as they become idle, reread the configuration file and restart each
      worker thread based on the new configuration.</dd>

      <dt>VERSION</dt>
      <dd>Displays version information about the currently
      running instance of Apache.</dd>

      <dt>MODULES</dt>
      <dd>Displays a list of loaded modules both built-in
      and external.</dd>

      <dt>DIRECTIVES</dt>
      <dd>Displays a list of all available directives.</dd>

      <dt>SETTINGS</dt>
      <dd>Enables or disables the thread status display
      on the console. When enabled, the state of each running threads is displayed 
      on the Apache console screen.</dd>

      <dt>SHUTDOWN</dt>
      <dd>Terminates the running instance of the Apache
      web server.</dd>

      <dt>HELP</dt>
      <dd>Describes each of the runtime directives.</dd>
    </dl>

    <p>By default these directives are issued against the instance of Apache running
    in the OS address space. To issue a directive against a specific instance running
    in a protected address space, include the -p parameter along with the name of the
    address space. For more information type "apache2 Help" on the command line.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="use" id="use">Configuring Apache for NetWare</a></h2>

    

    <p>Apache is configured by reading configuration files usually stored
    in the <code>conf</code> directory. These are the same as files used 
    to configure the Unix version, but there are a few different directives for
    Apache on NetWare. See the <a href="../index.html">Apache
    documentation</a> for all the available directives.</p>

    <p>The main differences in Apache for NetWare are:</p>

    <ul>
      <li>
        <p>Because Apache for NetWare is multithreaded, it does not
        use a separate process for each request, as Apache does on some Unix
        implementations. Instead there are only threads running: a parent
        thread, and multiple child or worker threads which handle the requests.</p>

        <p>Therefore the "process"-management directives are different:</p>

        <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> -
        Like the Unix directive, this controls how many requests
        a worker thread will serve before exiting. The recommended default,
        <code>MaxRequestsPerChild 0</code>, causes the thread to continue servicing
        request indefinitely. It is recommended on NetWare, unless there is some
        specific reason, that this directive always remain set to <code>0</code>.</p>

        <p><code class="directive"><a href="../mod/mpm_common.html#startthreads">StartThreads</a></code> -
        This directive tells the server how many threads it should start initially.
        The recommended default is <code>StartThreads 50</code>.</p>

        <p><code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code> -
        This directive instructs the server to spawn additional worker threads
        if the number of idle threads ever falls below this value. The recommended
        default is <code>MinSpareThreads 10</code>.</p>

        <p><code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code> -
        This directive instructs the server to begin terminating worker threads
        if the number of idle threads ever exceeds this value. The recommended
        default is <code>MaxSpareThreads 100</code>.</p>

        <p><code class="directive"><a href="../mod/mpm_netware.html#maxthreads">MaxThreads</a></code> -
        This directive limits the total number of work threads to a maximum
        value. The recommended default is <code>ThreadsPerChild 250</code>.</p>

        <p><code class="directive"><a href="../mod/mpm_common.html#threadstacksize">ThreadStackSize</a></code> -
        This directive tells the server what size of stack to use
        for the individual worker thread. The recommended default
        is <code>ThreadStackSize 65536</code>.</p>
      </li>

      <li>
        <p>The directives that accept filenames as arguments must use 
        NetWare filenames instead of Unix names. However, because Apache 
        uses Unix-style names internally, forward slashes must be used 
        rather than backslashes. It is recommended that all rooted file paths 
        begin with a volume name. If omitted, Apache will assume the 
        <code>SYS:</code> volume which may not be correct.</p>
      </li>

      <li>
        <p>Apache for NetWare has the ability to load modules at
        runtime, without recompiling the server. If Apache is
        compiled normally, it will install a number of optional
        modules in the <code>\Apache2\modules</code> directory.
        To activate these, or other modules, the <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> directive
        must be used. For example, to active the status module, use
        the following:</p>

        <div class="example"><p><code>
          LoadModule status_module modules/status.nlm
        </code></p></div>

        <p>Information on <a href="../mod/mod_so.html#creating">creating loadable
        modules</a> is also available.</p>
      </li>
    </ul>

    <h3><a name="use-add" id="use-add">Additional NetWare specific directives:</a></h3>

      

      <ul>
        <li><code class="directive"><a href="../mod/core.html#cgimapextension">CGIMapExtension</a></code> -
        This directive maps a CGI file extension to a script interpreter.</li>
      </ul>
      <ul>
        <li><code class="directive"><a href="../mod/mod_nw_ssl.html#securelisten">SecureListen</a></code> -
        Enables SSL encryption for a specified port.</li>
      </ul>
      <ul>
        <li><code class="directive"><a href="../mod/mod_nw_ssl.html#nwssltrustedcerts">NWSSLTrustedCerts</a></code> -
        Adds trusted certificates that are used to create secure connections to proxied servers.</li>
      </ul>
      <ul>
        <li><code class="directive"><a href="../mod/mod_nw_ssl.html#nwsslupgradeable">NWSSLUpgradeable</a></code> -
        Allow a connection created on the specified address/port to be upgraded to an SSL connection.</li>
      </ul>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="comp" id="comp">Compiling Apache for NetWare</a></h2>

    

    <p>Compiling Apache requires MetroWerks CodeWarrior 6.x or higher. Once 
    Apache has been built, it can be installed to the root of any NetWare 
    volume. The default is the <code>sys:/Apache2</code> directory.</p>

    <p>Before running the server you must fill out the <code>conf</code>
    directory. Copy the file <code>HTTPD-STD.CONF</code> from the distribution
    <code>conf</code> directory and rename it to <code>HTTPD.CONF</code>.
    Edit the <code>HTTPD.CONF</code> file searching for all <code>@@Value@@</code>
    markers and replacing them with the appropriate setting. Copy over
    the <code>conf/magic</code> and <code>conf/mime.types</code> files as well.
    Alternatively, a complete distribution can be built by including the keyword
    <code>install</code> when invoking the makefiles.</p>

    <h3><a name="comp-req" id="comp-req">Requirements:</a></h3>

      

      <p>The following development tools are required to build
      Apache 2.0 for NetWare:</p>

      <ul>
        <li>Metrowerks CodeWarrior 6.0 or higher with the
        <a href="http://developer.novell.com/ndk/cwpdk.htm">NetWare PDK 3.0</a>
        or higher.</li>

        <li><a href="http://developer.novell.com/ndk/libc.htm">NetWare Libraries
        for C (LibC)</a></li>

        <li><a href="http://developer.novell.com/ndk/cldap.htm">LDAP Libraries
        for C</a></li>

        <li><a href="http://www.gzip.org/zlib/">ZLIB Compression Library source code</a></li>

        <li>AWK utility (awk, gawk or similar). AWK can be downloaded from
        <a href="http://developer.novell.com/ndk/apache.htm">http://developer.novell.com/ndk/apache.htm</a>.
        The utility must be found in your windows path and must be named <code>awk.exe</code>.</li>

        <li>To build using the makefiles, you will need GNU make version 3.78.1 (GMake) available at
        <a href="http://developer.novell.com/ndk/apache.htm">http://developer.novell.com/ndk/apache.htm</a>.</li>
      </ul>

    

    <h3><a name="comp-make" id="comp-make">Building Apache using the NetWare makefiles:</a></h3>

      

      <ul>
        <li>Set the environment variable <code>NOVELLLIBC</code> to the
        location of the NetWare Libraries for C SDK, for example:
        <div class="example"><p><code>Set NOVELLLIBC=c:\novell\ndk\libc</code></p></div>
        </li>

        <li>Set the environment variable <code>METROWERKS</code> to the
        location where you installed the Metrowerks CodeWarrior compiler,
        for example:
        <div class="example"><p><code>Set METROWERKS=C:\Program Files\Metrowerks\CodeWarrior</code></p></div>
        If you installed to the default location <code>C:\Program
        Files\Metrowerks\CodeWarrior</code>, you don't need to set this.</li>

        <li>Set the environment variable <code>LDAPSDK</code> to the
        location where you installed the LDAP Libraries for C, for example:
        <div class="example"><p><code>Set LDAPSDK=c:\Novell\NDK\cldapsdk\NetWare\libc</code></p></div>
        </li>

        <li>Set the environment variable <code>ZLIBSDK</code> to the
        location where you installed the source code for the ZLib Library,
        for example:
        <div class="example"><p><code>Set ZLIBSDK=D:\NOVELL\zlib</code></p></div>
        </li>
        
        <li>Set the environment variable <code>AP_WORK</code> to the full path of
        the <code>httpd</code> source code directory.
        <div class="example"><p><code>Set AP_WORK=D:\httpd-2.0.x</code></p></div>
        </li>

        <li>Set the environment variable <code>APR_WORK</code> to the full path of
        the <code>apr</code> source code directory. Typically <code>\httpd\srclib\apr</code>
        but the APR project can be outside of the httpd directory structure.
        <div class="example"><p><code>Set APR_WORK=D:\apr-1.x.x</code></p></div>
        </li>

        <li>Set the environment variable <code>APU_WORK</code> to the full path of
        the <code>apr-util</code> source code directory. Typically <code>\httpd\srclib\apr-util</code>
        but the APR-UTIL project can be outside of the httpd directory structure.
        <div class="example"><p><code>Set APU_WORK=D:\apr-util-1.x.x</code></p></div>
        </li>

        <li>Make sure that the path to the AWK utility and the GNU make utility
        (<code>gmake.exe</code>) have been included in the system's
        <code>PATH</code> environment variable.</li>

        <li>Download the source code and unzip to an appropriate directory on
        your workstation.</li>

        <li>Change directory to <code>\httpd-2.0</code> and build the prebuild utilities
        by running "<code>gmake -f nwgnumakefile prebuild</code>". This target will create
        the directory <code>\httpd-2.0\nwprebuild</code> and copy each of the utilities 
        to this location that are necessary to complete the following build steps.
        </li>

        <li>Copy the files <code>\httpd-2.0\nwprebuild\GENCHARS.nlm</code> and 
        <code>\httpd-2.0\nwprebuild\DFTABLES.nlm</code> to the <code>SYS:</code> volume of a
        NetWare server and run them using the following commands:
          <div class="example"><p><code>
            SYS:\genchars &gt; sys:\test_char.h<br />
            SYS:\dftables sys:\chartables.c<br />
          </code></p></div>
        </li>

        <li>Copy the files <code>test_char.h</code> and <code>chartables.c</code>
        to the directory <code>\httpd-2.0\os\netware</code> on the build machine.</li>

        <li>Change directory to <code>\httpd-2.0</code> and build Apache by running
        "<code>gmake -f nwgnumakefile</code>". You can create a distribution directory by
        adding an install parameter to the command, for example:
        <div class="example"><p><code>gmake -f nwgnumakefile install</code></p></div>
        </li>
      </ul>

    

    <h3><a name="comp-add" id="comp-add">Additional make options</a></h3>

      

      <ul>
        <li><code>gmake -f nwgnumakefile</code><p>Builds release versions of all of the
        binaries and copies them to a <code>\release</code> destination directory.</p></li>

        <li><code>gmake -f nwgnumakefile DEBUG=1</code><p>Builds debug versions of all of the
        binaries and copies them to a <code>\debug</code> destination directory.</p></li>

        <li><code>gmake -f nwgnumakefile install</code><p>Creates a complete Apache
        distribution with binaries, docs and additional support files in a
        <code>\dist\Apache2</code> directory.</p></li>

        <li><code>gmake -f nwgnumakefile prebuild</code><p>Builds all of the prebuild utilities
        and copies them to the <code>\nwprebuild</code> directory.</p></li>

        <li><code>gmake -f nwgnumakefile installdev</code><p>Same as install but also creates a
        <code>\lib</code> and <code>\include</code> directory in the destination directory
        and copies headers and import files.</p></li>

        <li><code>gmake -f nwgnumakefile clean</code><p>Cleans all object files and binaries
        from the <code>\release.o</code> or <code>\debug.o</code> build areas depending on whether
        <code>DEBUG</code> has been defined.</p></li>

        <li><code>gmake -f nwgnumakefile clobber_all</code><p>Same as clean and also deletes
        the distribution directory if it exists.</p></li>
      </ul>

    

    <h3><a name="comp-add-env" id="comp-add-env">Additional environment variable options</a></h3>

      

      <ul>
        <li>To build all of the experimental modules, set the environment 
        variable <code>EXPERIMENTAL</code>:
        <div class="example"><p><code>Set EXPERIMENTAL=1</code></p></div>
        </li>

        <li>To build Apache using standard BSD style sockets rather than
        Winsock, set the environment variable <code>USE_STDSOCKETS</code>:
        <div class="example"><p><code>Set USE_STDSOCKETS=1</code></p></div>
        </li>

      </ul>

    

    <h3><a name="comp-mod_ssl" id="comp-mod_ssl">Building mod_ssl for the NetWare platform</a></h3>

      

      <p>By default Apache for NetWare uses the built-in module 
      <code class="module"><a href="../mod/mod_nw_ssl.html">mod_nw_ssl</a></code> to provide SSL services.  This module
      simply enables the native SSL services implemented in NetWare OS
      to handle all encryption for a given port.  Alternatively, mod_ssl
      can also be used in the same manner as on other platforms.</p>

      <p>Before mod_ssl can be built for the NetWare platform, the OpenSSL
      libraries must be provided.  This can be done through the following 
      steps:</p>

      <ul>
          <li>Download the recent OpenSSL 0.9.8 release source code from the
          <a href="http://www.openssl.org/source/">OpenSSL Source</a>
          page (older 0.9.7 versions need to be patched and are therefore not
          recommended).</li>

          <li>Edit the file <code>NetWare/set_env.bat</code> and modify any 
          tools and utilities paths so that they correspond to your build 
          environment.</li>

          <li>From the root of the OpenSSL source directory, run the following
          scripts:
          <div class="example"><p><code>
              Netware\set_env netware-libc<br />
              Netware\build netware-libc
          </code></p></div>
          For performance reasons you should enable to build with ASM code.
          Download NASM from the <a href="http://nasm.sourceforge.net/">SF site</a>.
          Then configure OpenSSL to use ASM code: 
          <div class="example"><p><code>
              Netware\build netware-libc nw-nasm enable-mdc2 enable-md5
          </code></p></div>
          Warning: dont use the CodeWarrior Assembler - it produces broken code!
          </li>

          <li>Before building Apache, set the environment variable
          <code>OSSLSDK</code> to the full path to the root of the openssl
          source code directory, and set WITH_MOD_SSL to 1.
          <div class="example"><p><code>
              Set OSSLSDK=d:\openssl-0.9.8x<br />
              Set WITH_MOD_SSL=1
          </code></p></div></li>

      </ul>

    

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                platform/perf-hp.html                                                                               100644       0       0        12674 11256641270  12316  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Running a High-Performance Web Server on HPUX - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>Running a High-Performance Web Server on HPUX</h1>



<pre>
Date: Wed, 05 Nov 1997 16:59:34 -0800
From: Rick Jones &lt;<a href="mailto:raj@cup.hp.com">raj@cup.hp.com</a>&gt;
Reply-To: <a href="mailto:raj@cup.hp.com">raj@cup.hp.com</a>
Organization: Network Performance
Subject: HP-UX tuning tips
</pre>

    <p>Here are some tuning tips for HP-UX to add to the tuning page.</p>

    <p>For HP-UX 9.X: Upgrade to 10.20<br />
    For HP-UX 10.[00|01|10]: Upgrade to 10.20</p>

    <p>For HP-UX 10.20:</p>

    <p>Install the latest cumulative ARPA Transport Patch. This
    will allow you to configure the size of the TCP connection
    lookup hash table. The default is 256 buckets and must be set
    to a power of two. This is accomplished with adb against the
    *disc* image of the kernel. The variable name is <code>tcp_hash_size</code>.
    Notice that it's critically important that you use "<code>W</code>"
    to write a 32 bit quantity, not "<code>w</code>" to write a 16 bit
    value when patching the disc image because the <code>tcp_hash_size</code>
    variable is a 32 bit quantity.</p>

    <p>How to pick the value? Examine the output of <a href="ftp://ftp.cup.hp.com/dist/networking/tools/connhist">ftp://ftp.cup.hp.com/dist/networking/tools/connhist</a>
    and see how many total TCP connections exist on the system. You
    probably want that number divided by the hash table size to be
    reasonably small, say less than 10. Folks can look at HP's
    SPECweb96 disclosures for some common settings. These can be
    found at <a href="http://www.specbench.org/">http://www.specbench.org/</a>.
    If an HP-UX system was performing at 1000 SPECweb96 connections
    per second, the <code>TIME_WAIT</code> time of 60 seconds would mean
    60,000 TCP "connections" being tracked.</p>

    <p>Folks can check their listen queue depths with <a href="ftp://ftp.cup.hp.com/dist/networking/misc/listenq">ftp://ftp.cup.hp.com/dist/networking/misc/listenq</a>.</p>

    <p>If folks are running Apache on a PA-8000 based system, they
    should consider "chatr'ing" the Apache executable to have a
    large page size. This would be "<code>chatr +pi L &lt;BINARY&gt;</code>".
    The GID of the running executable must have <code>MLOCK</code> privileges.
    <code>Setprivgrp(1m)</code> should be consulted for assigning
    <code>MLOCK</code>. The change can be validated by running Glance
    and examining the memory regions of the server(s) to make sure that
    they show a non-trivial fraction of the text segment being locked.</p>

    <p>If folks are running Apache on MP systems, they might
    consider writing a small program that uses <code>mpctl()</code>
    to bind processes to processors. A simple <code>pid % numcpu</code>
    algorithm is probably sufficient. This might even go into the
    source code.</p>

    <p>If folks are concerned about the number of <code>FIN_WAIT_2</code>
    connections, they can use nettune to shrink the value of
    <code>tcp_keepstart</code>. However, they should be careful there -
    certainly do not make it less than oh two to four minutes. If
    <code>tcp_hash_size</code> has been set well, it is probably OK to
    let the <code>FIN_WAIT_2</code>'s take longer to timeout (perhaps
    even the default two hours) - they will not on average have a big
    impact on performance.</p>

    <p>There are other things that could go into the code base, but
    that might be left for another email. Feel free to drop me a
    message if you or others are interested.</p>

    <p>sincerely,</p>

    <p>rick jones</p>

    <p><a href="http://www.netperf.org/netperf/">http://www.netperf.org/netperf/</a></p>

  </div>
</div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                    platform/win_compiling.html                                                                         100644       0       0        53143 11256641270  13607  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Compiling Apache for Microsoft Windows - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>Compiling Apache for Microsoft Windows</h1>



    <p>There are many important points before you begin compiling
    Apache. See <a href="windows.html">Using Apache with Microsoft
    Windows</a> before you begin.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#requirements">Requirements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#commandbuild">Command-Line Build</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#workspacebuild">Developer Studio Workspace IDE Build</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exportingmakfiles">Exporting command-line .mak files</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#installation">Installation</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#projectcomponents-warn">Warning about building Apache from the development tree</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requirements" id="requirements">Requirements</a></h2>

    

    <p>Compiling Apache requires the following environment to be
    properly installed:</p>

    <ul>
      <li>
        <p>Disk Space</p>

        <p>Make sure you have at least 200 MB of free disk space
        available. After installation Apache requires approximately
        80 MB of disk space, plus space for log and cache files,
        which can grow rapidly. The actual disk space requirements
        will vary considerably based on your chosen configuration and
        any third-party modules or libraries, especially when OpenSSL
        is also built.  Because many files are text and very easily
        compressed, NTFS filesystem compression cuts these requirements
        in half.</p>
      </li>

      <li>
        <p>Appropriate Patches</p>

        <p>The httpd binary is built with the help of several patches to
        third party packages, which ensure the released code is buildable
        and debuggable.  These patches are available and distributed from <a href="http://www.apache.org/dist/httpd/binaries/win32/patches_applied/">http://www.apache.org/dist/httpd/binaries/win32/patches_applied/</a>
        and are recommended to be applied to obtain identical results as the
        "official" ASF distributed binaries.</p>
      </li>

      <li>
        <p>Microsoft Visual C++ 6.0 (Visual Studio 97) or later.</p>

        <p>Apache can be built using the command line tools, or from
        within the Visual Studio IDE Workbench.  The command line
        build requires the environment to reflect the <code>PATH</code>,
        <code>INCLUDE</code>, <code>LIB</code> and other variables
        that can be configured with the <code>vcvars32.bat</code> script.</p>

        <div class="note">You may want the Visual Studio Processor Pack for your older
        version of Visual Studio, or a full (not Express) version of newer
        Visual Studio editions, for the ml.exe assembler.  This will allow
        you to build OpenSSL, if desired, using the more efficient assembly
        code implementation.</div>

        <div class="note">Only the Microsoft compiler tool chain is actively supported by
        the active httpd contributors.  Although the project regularly accepts
        patches to ensure MinGW and other alternative builds work and improve
        upon them, they are not actively maintained and are often broken in
        the course of normal development.</div>
      </li>

      <li>
        <p>Updated Microsoft Windows Platform SDK, February 2003 or later.</p>

        <p>An appropriate Windows Platform SDK is included by default in the
        full (not express/lite) versions  of Visual C++ 7.1 (Visual Studio 2002)
        and later, these users can ignore these steps unless explicitly choosing
        a newer or different version of the Platform SDK.</p>

        <p>To use Visual C++ 6.0 or 7.0 (Studio 2000 .NET), the Platform SDK
        environment must be prepared using the <code>setenv.bat</code> 
        script (installed by the Platform SDK) before starting the command
        line build or launching the msdev/devenv GUI environment.  Installing
        the Platform SDK for Visual Studio Express versions (2003 and later)
        should adjust the default environment appropriately.</p>

        <div class="example"><p><code>
          "c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32"<br />
          "c:\Program Files\Platform SDK\setenv.bat"
        </code></p></div>
      </li>

      <li>
        <p>Perl and awk</p>

        <p>Several steps recommended here require a perl interpreter during
        the build preparation process, but it is otherwise not required.</p>
 
        <p>To install Apache within the build system, several files are
        modified using the <code>awk.exe</code> utility. awk was chosen since
        it is a very small download (compared with Perl or WSH/VB) and
        accomplishes the task of modifying configuration files upon
        installation.  Brian Kernighan's
        <a href="http://www.cs.princeton.edu/~bwk/btl.mirror/">http://www.cs.princeton.edu/~bwk/btl.mirror/</a>
        site has a compiled native Win32 binary,
        <a href="http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe">http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe</a> which
        you must save with the name <code>awk.exe</code> (rather than
        <code>awk95.exe</code>).</p>

        <div class="note">If awk.exe is not found, Makefile.win's install target
        will not perform substitutions in the installed .conf files.
        You must manually modify the installed .conf files to allow
        the server to start.  Search and replace all "@token@" tags
        as appropriate.</div>

        <div class="note">The Visual Studio IDE will only find <code>awk.exe</code>
        from the PATH, or executable path specified in the menu option
        Tools -&gt; Options -&gt; (Projects -&gt;) Directories.  Ensure
        awk.exe is in your system path.</div>

        <div class="note">Also note that if you are using Cygwin tools
        (<a href="http://www.cygwin.com/">http://www.cygwin.com/</a>) 
        the awk utility is named <code>gawk.exe</code> and that the file 
        <code>awk.exe</code> is really a symlink to the <code>gawk.exe</code>
        file. The Windows command shell does not recognize symlinks, and 
        because of this building InstallBin will fail. A workaround is 
        to delete <code>awk.exe</code> from the cygwin installation and 
        copy <code>gawk.exe</code> to <code>awk.exe</code>.  Also note the
        cygwin/mingw ports of gawk 3.0.x were buggy, please upgrade to 3.1.x
        before attempting to use any gawk port.</div>
      </li>

      <li>
        <p>[Optional] zlib library (for <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>)</p>

        <p>Zlib must be installed into a <code>srclib</code> subdirectory named
        <code>zlib</code>.  This must be built in-place.  Zlib can be obtained 
        from <a href="http://www.zlib.net/">http://www.zlib.net/</a> -- the
        <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> is confirmed to work correctly with 
        version 1.2.3.</p>

        <div class="example"><p><code>
          nmake -f win32\Makefile.msc<br />
          nmake -f win32\Makefile.msc test
        </code></p></div>
      </li>

      <li>
        <p>[Optional] OpenSSL libraries (for <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>
        and <code>ab.exe</code> with ssl support)</p>

        <div class="note">The OpenSSL library is cryptographic software.  The country
        in which you currently reside may have restrictions on the import,
        possession, use, and/or re-export to another country, of encryption
        software.  BEFORE using any encryption software, please check your
        country's laws, regulations and policies concerning the import,
        possession, or use, and re-export of encryption software, to see
        if this is permitted.  See 
        <a href="http://www.wassenaar.org/">http://www.wassenaar.org/</a>
        for more information.</div>

        <p>Configuring and building OpenSSL requires perl to be installed.</p>

        <p>OpenSSL must be installed into a <code>srclib</code> subdirectory 
        named <code>openssl</code>, obtained from 
        <a href="http://www.openssl.org/source/">http://www.openssl.org/source/</a>, in order to compile 
        <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> or the <code>abs.exe</code> project, which
        is ab.c with SSL support enabled.  To prepare OpenSSL to be linked 
        to Apache mod_ssl or abs.exe, and disable patent encumbered features
        in OpenSSL,  you might use the following build commands:</p>

        <div class="example"><p><code>
          perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN32 
               -Ipath/to/srclib/zlib -Lpath/to/srclib/zlib<br />
          ms\do_masm.bat<br />
          nmake -f ms\ntdll.mak
        </code></p></div>

        <div class="note">It is not advisable to use zlib-dynamic, as that transfers
        the cost of deflating SSL streams to the first request which must
        load the zlib dll.  Note the suggested patch enables the -L flag to
        work with windows builds, corrects the name of zdll.lib and ensures
        .pdb files are generated for troubleshooting.  If the assembler is
        not installed, you would add no-asm above and use ms\do_ms.bat 
        instead of the ms\do_masm.bat script.</div>
      </li>

      <li>
        <p>[Optional] Database libraries (for <code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code>
        and <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>)</p>

        <p>The apr-util library exposes dbm (keyed database) and dbd (query
        oriented database) client functionality to the httpd server and its
        modules, such as authentication and authorization.  The sdbm dbm and
        odbc dbd providers are compiled unconditionally.</p>

        <p>The dbd support includes the Oracle instantclient package, MySQL,
        PostgreSQL and sqlite.  To build these all, for example, set up the
        LIB to include the library path, INCLUDE to include the headers path,
        and PATH to include the dll bin path of all four SDK's, and set the
        DBD_LIST environment variable to inform the build which client driver
        SDKs are installed correctly, e.g.;</p>

        <div class="example"><p><code>
          set DBD_LIST=sqlite3 pgsql oracle mysql
        </code></p></div>

        <p>Similarly, the dbm support can be extended with DBM_LIST to
        build a Berkeley DB provider (db) and/or gdbm provider, by similarly
        configuring LIB, INCLUDE and PATH first to ensure the client library
        libs and headers are available.</p>

        <div class="example"><p><code>
          set DBM_LIST=db gdbm
        </code></p></div>

        <div class="note">Depending on the choice of database distributions, it may be
        necessary to change the actual link target name (e.g. gdbm.lib vs.
        libgdb.lib) that are listed in the corresponding .dsp/.mak files
        within the directories srclib\apr-util\dbd or ...\dbm.</div>

        <p>See the README-win32.txt file for more hints on obtaining the
        various database driver SDKs.</p>
      </li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="commandbuild" id="commandbuild">Command-Line Build</a></h2>

    

    <p><code>Makefile.win</code> is the top level Apache makefile.
    To compile Apache on Windows, simply use one of the following commands
    to build the <code>release</code> or <code>debug</code> flavor:</p>

    <div class="example"><p><code>
      nmake /f Makefile.win _apacher<br /><br />
      nmake /f Makefile.win _apached
    </code></p></div>

    <p>Either command will compile Apache. The latter will disable
    optimization of the resulting files, making it easier to single
    step the code to find bugs and track down problems.</p>

    <p>You can add your apr-util dbd and dbm provider choices with the
    additional make (environment) variables DBD_LIST and DBM_LIST, 
    see the comments about [Optional] Database libraries, above.
    Review the initial comments in Makefile.win for additional options
    that can be provided when invoking the build.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="workspacebuild" id="workspacebuild">Developer Studio Workspace IDE Build</a></h2>

    

    <p>Apache can also be compiled using VC++'s Visual Studio
    development environment. To simplify this process, a
    Visual Studio workspace, <code>Apache.dsw</code>, is provided.
    This workspace exposes the entire list of working <code>.dsp</code>
    projects that are required for the complete Apache binary release.
    It includes dependencies between the projects to assure that they
    are built in the appropriate order.</p>

    <p>Open the <code>Apache.dsw</code> workspace, and select
    <code>InstallBin</code> (<code>Release</code> or <code>Debug</code> build,
    as desired) as the Active Project. <code>InstallBin</code> causes all
    related project to be built, and then invokes <code>Makefile.win</code> to
    move the compiled executables and dlls. You may personalize the
    <code>INSTDIR=</code> choice by changing <code>InstallBin</code>'s Settings,
    General tab, Build command line entry. <code>INSTDIR</code> defaults to the
    <code>/Apache2</code> directory. If you only want a test compile (without
    installing) you may build the <code>BuildBin</code> project instead.</p>

    <p>The <code>.dsp</code> project files are distributed in Visual Studio 6.0
    (98) format. Visual C++ 5.0 (97) will recognize them. Visual Studio
    2002 (.NET) and later users must convert <code>Apache.dsw</code> plus
    the <code>.dsp</code> files into an <code>Apache.sln</code> plus
    <code>.msproj</code> files.  Be sure you reconvert the <code>.msproj</code>
    file again if its source <code>.dsp</code> file changes! This is really
    trivial, just open <code>Apache.dsw</code> in the VC++ 7.0 IDE once again
    and reconvert.</p>

    <div class="note">There is a flaw in the .vcproj conversion of .dsp files.  devenv.exe
    will mis-parse the /D flag for RC flags containing long quoted /D'efines
    which contain spaces.  The command:
    <div class="example"><p><code>
      perl srclib\apr\build\cvtdsp.pl -2005
    </code></p></div>
    will convert the /D flags for RC flags to use an alternate, parseable
    syntax; unfortunately this syntax isn't supported by Visual Studio 97
    or its exported .mak files.  These /D flags are used to pass the long
    description of the mod_apachemodule.so files to the shared .rc resource
    version-identifier build.</div>

    <p>Visual Studio 2002 (.NET) and later users should also use the Build
    menu, Configuration Manager dialog to uncheck both the <code>Debug</code>
    and <code>Release</code> Solution modules <code>abs</code>, 
    <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> and <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> components, as
    well as every component starting with <code>apr_db*</code>.  These modules
    are built by invoking <code>nmake</code>, or the IDE directly with the
    <code>BinBuild</code> target, which builds those modules conditionally
    if the <code>srclib</code> directories <code>openssl</code> and/or
    <code>zlib</code> exist, and based on the setting of <code>DBD_LIST</code>
    and <code>DBM_LIST</code> environment variables.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exportingmakfiles" id="exportingmakfiles">Exporting command-line .mak files</a></h2>

    

    <p>Exported <code>.mak</code> files pose a greater hassle, but they are
    required for Visual C++ 5.0 users to build <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>,
    abs (<code class="program"><a href="../programs/ab.html">ab</a></code> with SSL support) and/or
    <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>.  The .mak files also support a broader
    range of C++ tool chain distributions, such as Visual Studio Express.</p>

    <p>You must first build all projects in order to create all dynamic 
    auto-generated targets, so that dependencies can be parsed correctly. 
    Build the entire project from within the Visual Studio 6.0 (98) IDE,
    using the <code>BuildAll</code> target, then use the Project Menu Export
    for all makefiles (checking on "with dependencies".)  Run the following
    command to correct absolute paths into relative paths so they will build
    anywhere:</p>

    <div class="example"><p><code>
      perl srclib\apr\build\fixwin32mak.pl
    </code></p></div>

    <p>You must type this command from the <em>top level</em>
    directory of the httpd source tree. Every
    <code>.mak</code> and <code>.dep</code> project file within
    the current directory and below will be corrected, and the
    timestamps adjusted to reflect the <code>.dsp</code>.</p>

    <p>Always review the generated <code>.mak</code> and <code>.dep</code>
    files for Platform SDK or other local, machine specific file paths.
    The <code>DevStudio\Common\MSDev98\bin\</code> (VC6) directory contains
    a <code>sysincl.dat</code> file, which lists all exceptions.  Update
    this file (including both forward and backslashed paths, such as both
    <code>sys/time.h</code> and <code>sys\time.h</code>) to ignore such
    newer dependencies.  Including local-install paths in a distributed 
    <code>.mak</code> file will cause the build to fail completely.</p>

    <p>If you contribute back a patch that revises project files, we
    must commit project files in Visual Studio 6.0 format. Changes
    should be simple, with minimal compilation and linkage flags that
    can be recognized by all Visual Studio environments.</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="installation" id="installation">Installation</a></h2>

    

    <p>Once Apache has been compiled, it needs to be installed in
    its server root directory. The default is the
    <code>\Apache2</code> directory, of the same drive.</p>

    <p>To build and install all the files into the desired folder
    <em>dir</em> automatically, use one of the following
    <code>nmake</code> commands:</p>

    <div class="example"><p><code>
      nmake /f Makefile.win installr INSTDIR=<em>dir</em><br />
      nmake /f Makefile.win installd INSTDIR=<em>dir</em>
    </code></p></div>

    <p>The <em>dir</em> argument to <code>INSTDIR</code> provides
    the installation directory; it can be omitted if Apache is
    to be installed into <code>\Apache22</code> (of the current
    drive).</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="projectcomponents-warn" id="projectcomponents-warn">Warning about building Apache from the development tree</a></h2>

    

    <div class="note">Note only the <code>.dsp</code> files are maintained between <code>release</code>
    builds. The <code>.mak</code> files are NOT regenerated, due to the tremendous
    waste of reviewer's time. Therefore, you cannot rely on the <code>NMAKE</code>
    commands above to build revised <code>.dsp</code> project files unless you
    then export all <code>.mak</code> files yourself from the project. This is
    unnecessary if you build from within the Microsoft
    Developer Studio environment.</div>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                             platform/windows.html                                                                               100644       0       0       102143 11256641270  12456  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Using Apache HTTP Server on Microsoft Windows - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>Using Apache HTTP Server on Microsoft Windows</h1>


    <p>This document explains how to install, configure and run
    Apache 2.2 under Microsoft Windows.  If you have questions after
    reviewing the documentation (and any event and error logs), you
    should consult the peer-supported 
    <a href="http://httpd.apache.org/userslist.html">users' mailing
    list</a>.</p>

    <p>This document assumes that you are installing a binary
    distribution of Apache. If you want to compile Apache yourself
    (possibly to help with development or tracking down bugs),
    see <a href="win_compiling.html">Compiling Apache for Microsoft
    Windows</a>.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#req">Operating System Requirements</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#down">Downloading Apache for Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#inst">Installing Apache for Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cust">Customizing Apache for Windows</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#winsvc">Running Apache as a Service</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#wincons">Running Apache as a Console Application</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#test">Testing the Installation</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="req" id="req">Operating System Requirements</a></h2>
    

    <p>The primary Windows platform for running Apache 2.2 is Windows
    2000 or later.  The binary installer only works with the x86 family
    of processors, such as Intel and AMD processors.  Always obtain and
    install the current service pack to avoid operating system bugs.</p>

    <div class="note">Running Apache on Windows 9x is ignored by the developers, and
    is strongly discouraged.  On Windows NT 4.0, installing Service
    Pack 6 is required.  Apache HTTP Server versions later than 2.2 will
    not run on any operating system earlier than Windows 2000.</div>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="down" id="down">Downloading Apache for Windows</a></h2>
    

    <p>Information on the latest versions of Apache can be found on the
    web site of the Apache web server at
    <a href="http://httpd.apache.org/download.cgi">http://httpd.apache.org/download.cgi</a>.
    There you will find the current release, as well as more recent alpha
    or beta test versions, and a list of HTTP and FTP mirrors from which
    you can download the Apache web server. Please use a mirror near to
    you for a fast and reliable download.</p>

    <p>For Windows installations you should download the version of
    Apache for Windows with the <code>.msi</code> extension. This is a
    single Microsoft Installer file, which contains a ready-to-run
    build of Apache.  There is a separate <code>.zip</code> file,
    which contains only the source code, see the summary above.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="inst" id="inst">Installing Apache for Windows</a></h2>
    

    <p>You need Microsoft Installer 2.0 or above for the installation
    to work.  For Windows NT 4.0 and 2000 refer to Microsoft's article
    <a href="http://support.microsoft.com/kb/292539/">KB 292539</a>.
    Windows XP and later do not require this update.  The Windows 98/ME
    installer engine appears to no longer be available from Microsoft,
    and these instructions no longer detail such prerequisites.</p>

    <p>Note that you cannot install two versions of Apache 2.2 on the
    same computer with the binary installer. You can, however, install
    a version of the 1.3 series <strong>and</strong> a version of the
    2.2 series on the same computer without problems. If you need to
    have two different 2.2 versions on the same computer, you have to
    <a href="win_compiling.html">compile and install Apache from the
    source</a>.</p>

    <p>Run the Apache <code>.msi</code> file you downloaded above. The
    installation will ask you for these things:</p>

    <ol>
      <li><p><strong>Network Domain.</strong> Enter the DNS domain in which
      your server is or will be registered in. For example, if your
      server's full DNS name is <code>server.mydomain.net</code>, you would
      type <code>mydomain.net</code> here.</p></li>

      <li><p><strong>Server Name.</strong> Your server's full DNS name.
      From the example above, you would type <code>server.mydomain.net</code>
      here.</p></li>

      <li><p><strong>Administrator's Email Address.</strong> Enter the
      server administrator's or webmaster's email address here. This
      address will be displayed along with error messages to the client
      by default.</p></li>

      <li><p><strong>For whom to install Apache</strong> Select <code>for
      All Users, on Port 80, as a Service - Recommended</code> if you'd
      like your new Apache to listen at port 80 for incoming traffic.
      It will run as a service (that is, Apache will run even if no one
      is logged in on the server at the moment) Select <code>only for
      the Current User, on Port 8080, when started Manually</code> if
      you'd like to install Apache for your personal experimenting or
      if you already have another WWW server running on port 80.</p></li>

      <li><p><strong>The installation type.</strong> Select <code>Typical</code>
      for everything except the source code and libraries for module
      development. With <code>Custom</code> you can specify what to
      install. A full install will require about 13 megabytes of free
      disk space. This does <em>not</em> include the size of your web
      site(s).</p></li>

      <li><p><strong>Where to install.</strong> The default path is
      <code>C:\Program Files\Apache Software Foundation</code>
      under which a directory called 
      <code>Apache2.2</code> will be created by default.</p></li>
    </ol>

    <p>During the installation, Apache will configure the files in the
    <code>conf</code> subdirectory to reflect the chosen installation
    directory. However, if any of the configuration files in this
    directory already exist, they will not be overwritten. Instead, the
    new copy of the corresponding file will be left with the extension
    <code>.default</code>. So, for example, if <code>conf\httpd.conf</code>
    already exists, it will be renamed as <code>conf\httpd.conf.default</code>.
    After the installation you should manually check to see what new
    settings are in the <code>.default</code> file, and if necessary,
    update your existing configuration file.</p>

    <p>Also, if you already have a file called <code>htdocs\index.html</code>,
    it will not be overwritten (and no <code>index.html.default</code>
    will be installed either). This means it should be safe to install
    Apache over an existing installation, although you would have to
    stop the existing running server before doing the installation, and
    then start the new one after the installation is finished.</p>

    <p>After installing Apache, you must edit the configuration files
    in the <code>conf</code> subdirectory as required. These files
    will be configured during the installation so that Apache is ready
    to be run from the directory it was installed into, with the
    documents server from the subdirectory <code>htdocs</code>. There
    are lots of other options which you should set before you really
    start using Apache. However, to get started quickly, the files
    should work as installed.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cust" id="cust">Customizing Apache for Windows</a></h2>
    

    <p>Apache is configured by the files in the <code>conf</code>
    subdirectory. These are the same files used to configure the Unix
    version, but there are a few different directives for Apache on
    Windows. See the <a href="../mod/directives.html">directive index</a>
    for all the available directives.</p>

    <p>The main differences in Apache for Windows are:</p>
    <ul>
      <li><p>Because Apache for Windows is multithreaded, it does not
      use a separate process for each request, as Apache can on Unix.
      Instead there are usually only two Apache processes running: a
      parent process, and a child which handles the requests. Within
      the child process each request is handled by a separate thread.
      </p>

      <p>The process management directives are also different:</p>

      <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>:
      Like the Unix directive, this controls how many requests (actually,
      connections) which a single child process will serve before exiting.
      However, unlike on Unix, a replacement process is not instantly
      available.  Use the default <code>MaxRequestsPerChild 0</code>,
      unless instructed to change the behavior to overcome a memory leak
      in third party modules or in-process applications.</p>

      <div class="warning"><strong>Warning: The server configuration
      file is reread when a new child process is started. If you have
      modified <code>httpd.conf</code>, the new child may not start or
      you may receive unexpected results.</strong></div>

      <p><code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>:
      This directive is new. It tells the server how many threads it
      should use. This is the maximum number of connections the server
      can handle at once, so be sure to set this number high enough for
      your site if you get a lot of hits. The recommended default is
      <code>ThreadsPerChild 150</code>, but this must be adjusted to
      reflect the greatest anticipated number of simultanious
      connections to accept.</p></li>

      <li><p>The directives that accept filenames as arguments must use
      Windows filenames instead of Unix ones. However, because Apache
      may interpret backslashes as an "escape character" sequence, you
      should consistently use forward slashes in path names, not 
      backslashes.  Drive letters can be used; if omitted, the drive
      of the SystemRoot directive (or -d command line option) becomes
      the default.</p></li>

      <li><p>While filenames are generally case-insensitive on
      Windows, URLs are still treated internally as case-sensitive
      before they are mapped to the filesystem.  For example, the
      <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>,
      <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, and <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> directives all use
      case-sensitive arguments.  For this reason, it is particularly
      important to use the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> directive when attempting
      to limit access to content in the filesystem, since this
      directive applies to any content in a directory, regardless of
      how it is accessed.  If you wish to assure that only lowercase
      is used in URLs, you can use something like:</p>

      <div class="example"><p><code>
      RewriteEngine On<br />
      RewriteMap lowercase int:tolower<br />
      RewriteCond %{REQUEST_URI} [A-Z]<br />
      RewriteRule (.*) ${lowercase:$1} [R,L]
      </code></p></div></li>

      <li><p>When running, Apache needs write access only to the logs
      directory and any configured cache directory tree.  Due to the
      issue of case insensitive and short 8.3 format names, Apache must
      validate all path names given.  This means that each directory
      which Apache evaluates, from the drive root up to the directory
      leaf, must have read, list and traverse directory permissions.
      If Apache2.2 is installed at C:\Program Files, then the root
      directory, Program Files and Apache2.2 must all be visible
      to Apache.</p></li>

      <li><p>Apache for Windows contains the ability to load modules at
      runtime, without recompiling the server. If Apache is compiled
      normally, it will install a number of optional modules in the
      <code>\Apache2.2\modules</code> directory. To activate these or
      other modules, the new <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
      directive must be used. For example, to activate the status
      module, use the following (in addition to the status-activating
      directives in <code>access.conf</code>):</p>

      <div class="example"><p><code>
        LoadModule status_module modules/mod_status.so
      </code></p></div>

      <p>Information on <a href="../mod/mod_so.html#creating">creating
      loadable modules</a> is also available.</p></li>

      <li><p>Apache can also load ISAPI (Internet Server Application
      Programming Interface) extensions such as those used by Microsoft
      IIS and other Windows servers. <a href="../mod/mod_isapi.html">More
      information is available</a>. Note that Apache <strong>cannot</strong>
      load ISAPI Filters, and ISAPI Handlers with some Microsoft feature
      extensions will not work.</p></li>

      <li><p>When running CGI scripts, the method Apache uses to find
      the interpreter for the script is configurable using the
      <code class="directive"><a href="../mod/core.html#scriptinterpretersource">ScriptInterpreterSource</a></code>
      directive.</p></li>

      <li><p>Since it is often difficult to manage files with names
      like <code>.htaccess</code> in Windows, you may find it useful to
      change the name of this per-directory configuration file using
      the <code class="directive"><a href="../mod/core.html#accessfilename">AccessFilename</a></code>
      directive.</p></li>

      <li><p>Any errors during Apache startup are logged into the
      Windows event log when running on Windows NT. This mechanism
      acts as a backup for those situations where Apache is not yet
      prepared to use the <code>error.log</code> file. You can
      review the Windows Applicat Event Log by using the Event Viewer,
      e.g. Start - Settings - Control Panel - Administrative Tools
      - Event Viewer.</p></li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="winsvc" id="winsvc">Running Apache as a Service</a></h2>
    

    <p>You can install Apache as a service automatically during the
    installation. If you chose to install for all users, the
    installation will create an Apache service for you. If you specify
    to install for yourself only, you can manually register Apache as a
    service after the installation. You have to be a member of the
    Administrators group for the service installation to succeed.</p>

    <p>Apache comes with a utility called the Apache Service Monitor.
    With it you can see and manage the state of all installed Apache
    services on any machine on your network. To be able to manage an
    Apache service with the monitor, you have to first install the
    service (either automatically via the installation or manually).
    </p>

    <p>You can install Apache as a Windows NT service as follows from
    the command prompt at the Apache <code>bin</code> subdirectory:</p>

    <div class="example"><p><code>
      httpd.exe -k install
    </code></p></div>

    <p>If you need to specify the name of the service you want to
    install, use the following command. You have to do this if you
    have several different service installations of Apache on your
    computer.</p>

    <div class="example"><p><code>
      httpd.exe -k install -n "MyServiceName"
    </code></p></div>

    <p>If you need to have specifically named configuration files for
    different services, you must use this:</p>

    <div class="example"><p><code>
      httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"
    </code></p></div>

    <p>If you use the first command without any special parameters except
    <code>-k install</code>, the service will be called <code>Apache2.2</code>
    and the configuration will be assumed to be <code>conf\httpd.conf</code>.
    </p>

    <p>Removing an Apache service is easy. Just use:</p>

    <div class="example"><p><code>
      httpd.exe -k uninstall
    </code></p></div>

    <p>The specific Apache service to be uninstalled can be specified by using:</p>

    <div class="example"><p><code>
      httpd.exe -k uninstall -n "MyServiceName"
    </code></p></div>

    <p>Normal starting, restarting and shutting down of an Apache
    service is usually done via the Apache Service Monitor, by using
    commands like <code>NET START Apache2.2</code> and <code>NET STOP
    Apache2.2</code> or via normal Windows service management. Before
    starting Apache as a service by any means, you should test the
    service's configuration file by using:</p>

    <div class="example"><p><code>
      httpd.exe -n "MyServiceName" -t
    </code></p></div>

    <p>You can control an Apache service by its command line switches,
    too. To start an installed Apache service you'll use this:</p>

    <div class="example"><p><code>
      httpd.exe -k start
    </code></p></div>

    <p>To stop an Apache service via the command line switches, use
    this:</p>

    <div class="example"><p><code>
      httpd.exe -k stop
    </code></p></div>

    <p>or</p>

    <div class="example"><p><code>
      httpd.exe -k shutdown
    </code></p></div>

    <p>You can also restart a running service and force it to reread
    its configuration file by using:</p>

    <div class="example"><p><code>
      httpd.exe -k restart
    </code></p></div>

    <p>By default, all Apache services are registered to run as the
    system user (the <code>LocalSystem</code> account). The
    <code>LocalSystem</code> account has no privileges to your network
    via any Windows-secured mechanism, including the file system, named
    pipes, DCOM, or secure RPC. It has, however, wide privileges locally.
    </p>

    <div class="warning"><strong>Never grant any network privileges to
    the <code>LocalSystem</code> account! If you need Apache to be able
    to access network resources, create a separate account for Apache as
    noted below.</strong></div>

    <p>It is recommended that users create a separate account for running
    Apache service(s). If you have to access network resources via Apache,
    this is required.</p>

    <ol>
      <li>Create a normal domain user account, and be sure to
      memorize its password.</li>

      <li>Grant the newly-created user a privilege of <code>Log on
      as a service</code> and <code>Act as part of the operating
      system</code>. On Windows NT 4.0 these privileges are granted via
      User Manager for Domains, but on Windows 2000 and XP you probably
      want to use Group Policy for propagating these settings. You can
      also manually set these via the Local Security Policy MMC snap-in.
      </li>

      <li>Confirm that the created account is a member of the Users
      group.</li>

      <li>Grant the account read and execute (RX) rights to all document
      and script folders (<code>htdocs</code> and <code>cgi-bin</code>
      for example).</li>

      <li>Grant the account change (RWXD) rights to the
      Apache <code>logs</code> directory.</li>

      <li>Grant the account read and execute (RX) rights to the
      <code>httpd.exe</code> binary executable.</li>
    </ol>

    <div class="note">It is usually a good practice to grant the user the Apache
    service runs as read and execute (RX) access to the whole Apache2.2
    directory, except the <code>logs</code> subdirectory, where the
    user has to have at least change (RWXD) rights.</div>

    <p>If you allow the account to log in as a user and as a service,
    then you can log on with that account and test that the account has
    the privileges to execute the scripts, read the web pages, and that
    you can start Apache in a console window. If this works, and you
    have followed the steps above, Apache should execute as a service
    with no problems.</p>

    <div class="note"><strong>Error code 2186</strong> is a good indication that
    you need to review the "Log On As" configuration for the service,
    since Apache cannot access a required network resource. Also, pay
    close attention to the privileges of the user Apache is
    configured to run as.</div>

    <p>When starting Apache as a service you may encounter an error
    message from the Windows Service Control Manager. For example,
    if you try to start Apache by using the Services applet in the
    Windows Control Panel, you may get the following message:</p>

    <div class="example"><p><code>
      Could not start the Apache2.2 service on \\COMPUTER <br />
      Error 1067; The process terminated unexpectedly.
    </code></p></div>

    <p>You will get this generic error if there is any problem with
    starting the Apache service. In order to see what is really causing
    the problem you should follow the instructions for Running Apache
    for Windows from the Command Prompt.</p>

    <p>If you are having problems with the service, it is suggested
    you follow the instructions below to try starting httpd.exe from
    a console window, and work out the errors before struggling to
    start it as a service again.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="wincons" id="wincons">Running Apache as a Console Application</a></h2>
    

    <p>Running Apache as a service is usually the recommended way to
    use it, but it is sometimes easier to work from the command line
    (on Windows 9x running Apache from the command line is the
    recommended way due to the lack of reliable service support.)</p>

    <p>To run Apache from the command line as a console application,
    use the following command:</p>

    <div class="example"><p><code>
      httpd.exe
    </code></p></div>

    <p>Apache will execute, and will remain running until it is stopped
    by pressing Control-C.</p>

    <p>You can also run Apache via the shortcut Start Apache in Console
    placed to <code>Start Menu --&gt; Programs --&gt; Apache HTTP Server
    2.2.xx --&gt; Control Apache Server</code> during the installation.
    This will open a console window and start Apache inside it. If you
    don't have Apache installed as a service, the window will remain
    visible until you stop Apache by pressing Control-C in the console
    window where Apache is running in. The server will exit in a few
    seconds. However, if you do have Apache installed as a service, the
    shortcut starts the service. If the Apache service is running
    already, the shortcut doesn't do anything.</p>

    <p>You can tell a running Apache to stop by opening another console
    window and entering:</p>

    <div class="example"><p><code>
      httpd.exe -k shutdown
    </code></p></div>

    <p>This should be preferred over pressing Control-C because this
    lets Apache end any current operations and clean up gracefully.</p>

    <p>You can also tell Apache to restart. This forces it to reread
    the configuration file. Any operations in progress are allowed to
    complete without interruption. To restart Apache, either press
    Control-Break in the console window you used for starting Apache,
    or enter</p>

    <div class="example"><p><code>
      httpd.exe -k restart
    </code></p></div>

    <p>in any other console window.</p>

    <div class="note">Note for people familiar with the Unix version of Apache:
    these commands provide a Windows equivalent to <code>kill -TERM
    <em>pid</em></code> and <code>kill -USR1 <em>pid</em></code>. The
    command line option used, <code>-k</code>, was chosen as a reminder
    of the <code>kill</code> command used on Unix.</div>

    <p>If the Apache console window closes immediately or unexpectedly
    after startup, open the Command Prompt from the Start Menu --&gt;
    Programs. Change to the folder to which you installed Apache, type
    the command <code>httpd.exe</code>, and read the error message. Then
    change to the logs folder, and review the <code>error.log</code>
    file for configuration mistakes. If you accepted the defaults when
    you installed Apache, the commands would be:</p>

    <div class="example"><p><code>
      c: <br />
      cd "\Program Files\Apache Software Foundation\Apache2.2\bin" <br />
      httpd.exe
    </code></p></div>

    <p>Then wait for Apache to stop, or press Control-C. Then enter the
    following:</p>

    <div class="example"><p><code>
      cd ..\logs <br />
      more &lt; error.log
    </code></p></div>

    <p>When working with Apache it is important to know how it will
    find the configuration file. You can specify a configuration file
    on the command line in two ways:</p>

    <ul>
      <li><p><code>-f</code> specifies an absolute or relative path to
      a particular configuration file:</p>

      <div class="example"><p><code>
        httpd.exe -f "c:\my server files\anotherconfig.conf"
      </code></p></div>

      <p>or</p>

      <div class="example"><p><code>
        httpd.exe -f files\anotherconfig.conf
      </code></p></div></li>

      <li><p><code>-n</code> specifies the installed Apache service
      whose configuration file is to be used:</p>

      <div class="example"><p><code>
        httpd.exe -n "MyServiceName"
      </code></p></div>
      </li>
    </ul>

    <p>In both of these cases, the proper
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> should be set in
    the configuration file.</p>

    <p>If you don't specify a configuration file with <code>-f</code>
    or <code>-n</code>, Apache will use the file name compiled into the
    server, such as <code>conf\httpd.conf</code>. This built-in path
    is relative to the installation directory. You can verify the compiled
    file name from a value labelled as <code>SERVER_CONFIG_FILE</code> when
    invoking Apache with the <code>-V</code> switch, like this:</p>

    <div class="example"><p><code>
      httpd.exe -V
    </code></p></div>

    <p>Apache will then try to determine its <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> by trying the following, in this order:</p>

    <ol>
      <li>A <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive
      via the <code>-C</code> command line switch.</li>

      <li>The <code>-d</code> switch on the command line.</li>

      <li>Current working directory.</li>

      <li>A registry entry which was created if you did a binary
      installation.</li>

      <li>The server root compiled into the server. This is <code>
      /apache</code> by default, you can verify it by using <code>
      httpd.exe -V</code> and looking for a value labelled as
      <code>HTTPD_ROOT</code>.</li>
    </ol>

    <p>During the installation, a version-specific registry key is
    created in the Windows registry. The location of this key depends
    on the type of the installation. If you chose to install Apache
    for all users, the key is located under the
    <code>HKEY_LOCAL_MACHINE</code> hive, like this (the version
    numbers will of course vary between different versions of Apache:
    </p>

    <div class="example"><p><code>
      HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache\2.2.2
    </code></p></div>

    <p>Correspondingly, if you chose to install Apache for the current
    user only, the key is located under the <code>HKEY_CURRENT_USER</code>
    hive, the contents of which are dependent of the user currently
    logged on:</p>

    <div class="example"><p><code>
      HKEY_CURRENT_USER\SOFTWARE\Apache Software Foundation\Apache\2.2.2
    </code></p></div>

    <p>This key is compiled into the server and can enable you to test
    new versions without affecting the current version. Of course, you
    must take care not to install the new version in the same
    directory as another version.</p>

    <p>If you did not do a binary install, Apache will in some
    scenarios complain about the missing registry key. This warning can
    be ignored if the server was otherwise able to find its
    configuration file.</p>

    <p>The value of this key is the
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directory which
    contains the <code>conf</code> subdirectory. When Apache starts it
    reads the <code>httpd.conf</code> file from that directory. If
    this file contains a <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
    directive which contains a different directory from the one
    obtained from the registry key above, Apache will forget the
    registry key and use the directory from the configuration file. If
    you copy the Apache directory or configuration files to a new
    location it is vital that you update the
    <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive in the
    <code>httpd.conf</code> file to reflect the new location.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="test" id="test">Testing the Installation</a></h2>
    

    <p>After starting Apache (either in a console window or as a
    service) it will be listening on port 80 (unless you changed the
    <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> directive in the
    configuration files or installed Apache only for the current user).
    To connect to the server and access the default page, launch a
    browser and enter this URL:</p>

    <div class="example"><p><code>
      http://localhost/
    </code></p></div>

    <p>Apache should respond with a welcome page and you should see
    "It Works!". If nothing happens or you get an error, look in the
    <code>error.log</code> file in the <code>logs</code> subdirectory.
    If your host is not connected to the net, or if you have serious
    problems with your DNS (Domain Name Service) configuration, you
    may have to use this URL:</p>

    <div class="example"><p><code>
      http://127.0.0.1/
    </code></p></div>

    <p>If you happen to be running Apache on an alternate port, you
    need to explicitly put that in the URL:</p>

    <div class="example"><p><code>
      http://127.0.0.1:8080/
    </code></p></div>

    <p>Once your basic installation is working, you should configure it
    properly by editing the files in the <code>conf</code> subdirectory.
    Again, if you change the configuration of the Windows NT service
    for Apache, first attempt to start it from the command line to
    make sure that the service starts with no errors.</p>

    <p>Because Apache <strong>cannot</strong> share the same port with
    another TCP/IP application, you may need to stop, uninstall or reconfigure
    certain other services before running Apache. These conflicting
    services include other WWW servers, some firewall implementations,
    and even some client applications (such as Skype) which will use port
    80 to attempt to bypass firewall issues.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                             programs/ab.html                                                                                    100644       0       0        31057 11256641270  11341  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>ab - Apache HTTP sunucusu başarım ölçme aracı - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>ab - Apache HTTP sunucusu başarım ölçme aracı</h1>


    <p><code><strong>ab</strong></code> Apache Hiper Metin Aktarım Protokolü
      (HTTP) sunucunuzun başarımını ölçmek amacıyla kullanabileceğiniz bir
      kıyaslama aracıdır. Mevcut Apache kurulumunuzun görevini nasıl yerine
      getirdiği hakkında bir izlenim edinmeniz için tasarlanmıştır.
      Özellikle, Apache kurulumunuzun saniyede kaç isteği sunma yeteneğinde
      olduğunu gösterir.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#bugs">Börtü böcek</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>ab</strong>
    [ -<strong>A</strong> <var>yetkili-kullanıcı:parola</var> ]
    [ -<strong>b</strong> <var>tampon-boyu</var> ]
    [ -<strong>c</strong> <var>bağlantı-sayısı</var> ]
    [ -<strong>C</strong> <var>çerez-ismi=değer</var> ]
    [ -<strong>d</strong> ]
    [ -<strong>e</strong> <var>csv-dosyası</var> ]
    [ -<strong>f</strong> <var>protokol</var> ]
    [ -<strong>g</strong> <var>gnuplot-dosyası</var> ]
    [ -<strong>h</strong> ]
    [ -<strong>H</strong> <var>özel-başlık</var> ]
    [ -<strong>i</strong> ]
    [ -<strong>k</strong> ]
    [ -<strong>n</strong> <var>istek-sayısı</var> ]
    [ -<strong>p</strong> <var>POST-dosyası</var> ]
    [ -<strong>P</strong> <var>vekil-yetkilisi:parola</var> ]
    [ -<strong>q</strong> ]
    [ -<strong>r</strong> ]
    [ -<strong>s</strong> ]
    [ -<strong>S</strong> ]
    [ -<strong>t</strong> <var>saniye</var> ]
    [ -<strong>T</strong> <var>içerik-türü</var> ]
    [ -<strong>u</strong> <var>PUT-dosyası</var> ]
    [ -<strong>v</strong> <var>ayrıntı-düzeyi</var>]
    [ -<strong>V</strong> ]
    [ -<strong>w</strong> ]
    [ -<strong>x</strong> <var>&lt;table&gt;-öznitelikleri</var> ]
    [ -<strong>X</strong> <var>vekil</var>[:<var>port</var>] ]
    [ -<strong>y</strong> <var>&lt;tr&gt;-öznitelikleri</var> ]
    [ -<strong>z</strong> <var>&lt;td&gt;-öznitelikleri</var> ]
    [ -<strong>Z</strong> <var>şifre-kümesi</var> ]
    [http[s]://]<var>konakadı</var>[:<var>port</var>]/<var>dizin</var></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><strong>-A</strong>
      <var>yetkili-kullanıcı</var>:<var>parola</var></code></dt>
    <dd>Sunucuya TEMEL Kimlik Doğrulamada kullanılmak üzere kanıt sağlar.
      Kullanıcı adı ile parola arasına sadece <code>:</code> konur ve
      sunucunun buna ihtiyacı olup olmadığına bakılmaksızın (yani, bir "401
      kimlik doğrulaması gerekli" yanıtı beklenmeden) bağlantı üzerinden
      base64 kodlu olarak sunucuya gönderilir.</dd>

    <dt><code><strong>-b</strong> <var>tampon-boyu</var></code></dt>
    <dd>TCP gönderme/alma tamponlarının bayt cinsinden uzunluğu.</dd>

    <dt><code><strong>-c</strong> <var>bağlantı-sayısı</var></code></dt>
    <dd>Aynı anda işleme sokulacak bağlantı sayısı. Aynı anda bir bağlantı
      öntanımlı değerdir.</dd>

    <dt><code><strong>-C</strong>
      <var>çerez-ismi</var>=<var>değer</var></code></dt>
    <dd>İsteğe bir <code>Cookie:</code> satırı ekler. Argüman olarak
      genellikle bir <code><var>isim=değer</var></code> çifti kullanılır. Bu
      çiftler birden fazla olabilir.</dd>

    <dt><code><strong>-d</strong></code></dt>
    <dd>"percentage served within XX [ms] table" iletisi gösterilmez. (Geriye
      uyumluluk için vardır).</dd>

    <dt><code><strong>-e</strong> <var>csv-dosyası</var></code></dt>
    <dd>Sunulan isteğin birim zamanda (milisaniye) ne kadarının (yüzde
      cinsinden) sunulduğunu gösteren virgül ayraçlı değerler (CSV) dosyası.
      Sonuçlar 'bobin haline' getirilmiş olduğundan doğal olarak 'gnuplot'
      dosyasından daha yararlıdır.</dd>

    <dt><code><strong>-f</strong> <var>protokol</var></code></dt>
    <dd>SSL/TLS protokolü belirtilir (SSL2, SSL3, TLS1 veya ALL).</dd>

    <dt><code><strong>-g</strong> <var>gnuplot-dosyası</var></code></dt>
    <dd>Ölçülen değerler bir 'gnuplot' veya TSV (sekme ayraçlı değerler)
      dosyasına yazılır. Bu dosya, Gnuplot, IDL, Mathematica, Igor hatta
      Excel tarafından veri dosyası olarak kabul edilir. Veri sütunlarının
      başlıkları dosyanın ilk satırında bulunur. </dd>

    <dt><code><strong>-h</strong></code></dt>
    <dd>Kullanım bilgisi gösterir.</dd>

    <dt><code><strong>-H</strong> <var>özel-başlık</var></code></dt>
    <dd>İsteğe fazladan başlık ekler. <var>özel-başlık</var>, aralarında iki
      nokta imi bulunan bir isim-değer çifti olarak belirtilir. Örnek:
      <code>"Accept-Encoding: zip/zop;8bit"</code></dd>

    <dt><code><strong>-i</strong></code></dt>
    <dd><code>GET</code> istekleri yerine <code>HEAD</code> istekleri
      yapılır.</dd>

    <dt><code><strong>-k</strong></code></dt>
    <dd>HTTP KeepAlive (kalıcı bağlantı) özelliğini etkinleştirir, yani tek
      bir oturum içinde çok sayıda isteğe hizmet sunulabilir. Özellik
      öntanımlı olarak kapalıdır.</dd>

    <dt><code><strong>-n</strong> <var>istek-sayısı</var></code></dt>
    <dd>Kıyaslama oturumu sırasında sunucuya uygulanacak istek sayısı.
      Öntanımlı olarak hiçbir başarım ölçütü sağlamayan tek bir istek
      yapılır.</dd>

    <dt><code><strong>-p</strong> <var>POST-dosyası</var></code></dt>
    <dd>POST isteği ile ilgili verileri içeren dosya. Ayrıca
      <code><strong>-T</strong></code> seçeneğini de belirtmeyi
      unutmayın..</dd>

    <dt><code><strong>-P</strong>
      <var>vekil-yetkilisi</var>:<var>parola</var></code></dt>
    <dd>Vekil sunucuya TEMEL Kimlik Doğrulamasında kullanılacak kanıtları
      sağlar. Kullanıcı adı ile parola arasına sadece <code>:</code> konur ve
      vekilin buna ihtiyacı olup olmadığına bakılmaksızın (yani, bir "407
      vekilde kimlik doğrulaması gerekiyor" yanıtı beklenmeden) bağlantı
      üzerinden base64 kodlu olarak sunucuya gönderilir.</dd>

    <dt><code><strong>-q</strong></code></dt>
    <dd>İstek sayısı 150'den fazla olduğunda,
      <code><strong>ab</strong></code> her 100 veya %10 istekte bir, standart
      hataya bir işlenen istek sayacı çıktılar.
      <code><strong>-q</strong></code> seçeneği bu çıktının üretilmemesini
      sağlar.</dd>

    <dt><code><strong>-r</strong></code></dt>
    <dd>Soket hata alsa bile program çıkmaz.</dd>

    <dt><code><strong>-s</strong></code></dt>
    <dd>Derlendiği takdirde (<code><strong>ab -h</strong></code> bunu
      gösterir) <code>http</code> protokolü yerine SSL korumalı
      <code>https</code> protokolü kullanılır. Bu özellik henüz
      <em>emekleme</em> aşamasında olup geliştirilmeye devam edilmektedir. Bu
      bakımdan kullanımı önerilmez.</dd>

    <dt><code><strong>-S</strong></code></dt>
    <dd>Ortalama ve ortanca değerler arasında bir veya iki standart sapmadan
      fazlası varsa ne ortalama değer ne standart sapma değeri ne de
      uyarı/hata iletileri gösterilir. Öntanımlı olarak,
      asgari/ortalama/azami değerler gösterilir. (Geriye uyumluluk).</dd>

    <dt><code><strong>-t</strong> <var>saniye</var></code></dt>
    <dd>Ölçümleme işleminin ne kadar süreyle uygulanacağı belirtilir. Dahili
      olarak <code><strong>-n 50000</strong></code> seçeneği uygulanır. Bunu
      belli bir süreye göre kıyaslama yapmak amacıyla kullanabilirsiniz.
      Öntanımlı olarak bir süre kısıtlaması yoktur.</dd>

    <dt><code><strong>-T</strong> <var>içerik-türü</var></code></dt>
    <dd>POST/PUT verisi için kullanılacak içerik türü belirtilir. Örnek:
      <code>application/x-www-form-urlencoded</code>.
      Öntanımlı değer: <code>text/plain</code>.</dd>

    <dt><code>-u <var>PUT-dosyası</var></code></dt>
    <dd>PUT verisini içeren dosya.  Ayrıca, <code>-T</code> seçeneğini
      belirtmeyi de unutmayın.</dd>

    <dt><code><strong>-v</strong> <var>ayrıntı-düzeyi</var></code></dt>
    <dd>Çıktının ayrıntı düzeyi belirtilir.  <code>4</code> ve üstü ile
      başlıklar hakkında bilgi, <code>3</code> ve üstü ile yanıt kodları
      (404, 200, vb.), <code>2</code> ve üstü ile ise uyarı ve bilgi
      iletileri gösterilir.</dd>

    <dt><code><strong>-V</strong></code></dt>
    <dd>Sürüm bilgilerini gösterir ve çıkar.</dd>

    <dt><code><strong>-w</strong></code></dt>
    <dd>Sonuçları HTML tabloları olarak basar. Öntanımlı tablo, beyaz
      artalanlı ve iki sütunludur.</dd>

    <dt><code><strong>-x</strong>
      <var>&lt;table&gt;-öznitelikleri</var></code></dt>
    <dd><code>&lt;table&gt;</code> etiketinde kullanılacak öznitelikler
      belirtilir. Belirtilen öznitelikler etiket içine <code>&lt;table
      <var>buraya</var> &gt;</code> biçeminde yerleştirilir.</dd>

    <dt><code><strong>-X</strong>
      <var>vekil</var>[:<var>port</var>]</code></dt>
    <dd>İstekler için bir vekil sunucu kullanılır.</dd>

    <dt><code><strong>-y</strong>
      <var>&lt;tr&gt;-öznitelikleri</var></code></dt>
    <dd><code>&lt;tr&gt;</code> etiketinde kullanılacak öznitelikler
      belirtilir.</dd>

    <dt><code><strong>-z</strong>
      <var>&lt;td&gt;-öznitelikleri</var></code></dt>
    <dd><code>&lt;td&gt;</code> etiketinde kullanılacak öznitelikler
      belirtilir.</dd>

    <dt><code>-Z <var>şifre-kümesi</var></code></dt>
    <dd>SSL/TLS şifre kümesi belirtilir (<code><strong>openssl</strong></code>(1) şifrelerine bakınız).</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="bugs" id="bugs">Börtü böcek</a></h2>
    <p>Duruk bildirimli sabit uzunlukta çeşitli tamponlar vardır.
      Sunucudan gelen yanıt başlıkları ve diğer harici girdiler, komut satırı
      argümanları ile birlikte basitçe çözümlenir, bu size can sıkıcı
      gelebilir.</p>

    <p>HTTP/1.x protokolünü tamamen gerçeklemez; sadece yanıtların 'belli
      başlı' bazı biçimlerini kabul eder. Aksi takdirde,
      <code><strong>strstr</strong></code>(3) işlevinin yoğun kullanımı
      nedeniyle sunucu yerine <code><strong>ab</strong></code>'nin başarımını
      ölçerdiniz.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 programs/apachectl.html                                                                             100644       0       0        23775 11256641270  12713  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>apachectl - Apache HTTP Sunucusu Denetim Arayüzü - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>apachectl - Apache HTTP Sunucusu Denetim Arayüzü</h1>


    <p><code><strong>apachectl</strong></code> Apache Hiper Metin Aktarım
      Protokolü (HTTP) sunucusu için bir denetim aracıdır. Sistem
      yöneticisinin Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan
      sürecini denetimi altında tutabilmesine yardımcı olmak amacıyla
      tasarlanmıştır.</p>

    <p><code><strong>apachectl</strong></code> iki kipte işleyebilir.
      İlkinde, <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> komutu için basit
      bir önyüz gibi davranarak, gerekli ortam değişkenlerini atar ve
      belirtilen komut satırı seçenekleriyle
      <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> sürecini başlatır. İkinci
      kipte ise, <code><strong>apachectl</strong></code> bir SysV başlatma
      betiği olarak <code><strong>start</strong></code>,
      <code><strong>restart</strong></code>,
      <code><strong>stop</strong></code> gibi tek sözcüklük basit argümanlar
      alır ve bunları uygun sinyallere dönüştürerek
      <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong>'ye gönderir.</p>

    <p>Eğer Apache kurulumunuzda standart dışı dosya yolları kullanmışsanız,
      <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> programına uygun yolları
      atamak için <code><strong>apachectl</strong></code> betiğini elden
      geçirmelisiniz. Bu arada gerek gördüğünüz
      <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> komut satırı argümanlarını da
      belirtebilirsiniz. Ayrıntılar için betik içindeki açıklamalara
      bakınız.</p>

    <p><code><strong>apachectl</strong></code> betiği başarı durumunda 0
      çıkış değeri ile döner. Bir hata durumunda ise sıfırdan farklı bir
      değerle döner. Daha fazla bilgi için betik içindeki açıklamalara
      bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../invoking.html">Apache'nin Başlatılması</a></li><li><a href="../stopping.html">Apache'nin Durdurulması</a></li><li><a href="../configuring.html">Yapılandırma Dosyaları</a></li><li><a href="../platform/index.html">Platform Belgeleri</a></li><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>

    <p><code><strong>apachectl</strong></code> önyüz kipinde çalıştığında
      <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> programının bütün komut
      satırı argümanlarını kabul edebilir.</p>

    <p><code><strong>apachectl</strong> [ <var>httpd-argümanları</var> ]
    </code></p>

    <p>SysV başlatma betiği kipinde ise,
      <code><strong>apachectl</strong></code> aşağıda tanımlanan basit, tek
      sözcüklük komutları kabul eder.</p>

    <p><code><strong>apachectl</strong> <var>komut</var></code></p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>

    <p>Burada sadece SysV başlatma betiğine özgü seçeneklere yer verilmiştir.
      Diğer argümanlar için <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> kılavuz
      sayfasına bakınız.</p>

    <dl>
      <dt><code><strong>start</strong></code></dt>
      <dd>Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan sürecini
        başlatır. Zaten çalışmaktaysa bir hata verir. <code><strong>apachectl
        -k start</strong></code> komutuna eşdeğerdir.</dd>

      <dt><code><strong>stop</strong></code></dt>
      <dd>Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan sürecini
        durdurur. <code><strong>apachectl -k stop</strong></code> komutuna
        eşdeğerdir.</dd>

      <dt><code><strong>restart</strong></code></dt>
      <dd>Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan sürecini
        yeniden başlatır; çalışmıyorsa çalıştırılır. Artalan sürecinin ölü
        olmadığından emin olmak için yeniden başlatmadan önce
        <code><strong>configtest</strong></code> seçeneği verilmiş gibi
        yapılandırma dosyaları sınanır. <code><strong>apachectl -k
        restart</strong></code> komutuna eşdeğerdir.</dd>

      <dt><code><strong>fullstatus</strong></code></dt>
      <dd><strong><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></strong> üzerinden tam bir
        durum raporu gösterir. Bunun çalışması için sunucuda
        <strong><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></strong> etkinleştirilmiş olmalı
        ve sisteminizde <code><strong>lynx</strong></code> gibi bir metin
        kipi HTTP tarayıcı kurulu olmalıdır. Durum raporuna erişmek için
        kullanılacak adres betik içinde <code>STATUSURL</code> değişkenine
        atanabilir.</dd>

      <dt><code><strong>status</strong></code></dt>
      <dd>Özet halinde bir durum raporu gösterir. O an sunulmakta olan
        isteklerin gösterilmemesi dışında
        <code><strong>fullstatus</strong></code> seçeneği gibidir.</dd>

      <dt><code><strong>graceful</strong></code></dt>
      <dd>Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan sürecini
        <em>nazikçe</em> yeniden başlatır; çalışmıyorsa çalıştırılır. O an
        hizmet sunmakta olan çocuk süreçleri hemen durdurmaması dışında
        normal yeniden başlatma gibidir. Bir yan etki olarak eski günlük
        dosyaları hemen kapatılmaz. Yani, günlük dosyalarını döndüren bir
        betik kullanıyorsanız yenilerini başlatmadan önce eski dosyaların
        tamamen kapandığından emin olmak için belli bir süre beklemeniz
        gerekecektir. Artalan sürecinin ölü olmadığından emin olmak için
        yeniden başlatmadan önce  <code><strong>configtest</strong></code>
        seçeneği verilmiş gibi yapılandırma dosyaları sınanır.
        <code><strong>apachectl -k graceful</strong></code> komutuna
        eşdeğerdir.</dd>

      <dt><code><strong>graceful-stop</strong></code></dt>
      <dd>Apache <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> artalan sürecini
        <em>nazikçe</em> durdurur. O an hizmet sunmakta olan çocuk süreçleri
        hemen durdurmaması dışında normal durdurma gibidir. Bir yan etki
        olarak eski günlük dosyaları hemen kapatılmaz.
        <code><strong>apachectl -k graceful-stop</strong></code> komutuna
        eşdeğerdir.</dd>

      <dt><code><strong>configtest</strong></code></dt>
      <dd>Yapılandırma dosyasında sözdizimi denetimi yapılmasını sağlar.
        Yapılandırma dosyaları çözümlenir ve bir sorun yoksa bir <code>Syntax
        Ok</code> raporu verilir fakat, bir hata varsa o hataya ilişkin
        ayrıntılı bilgi verilir. <code><strong>apachectl -t</strong></code>
        komutuna eşdeğerdir.</dd>

    </dl>

    <p>Aşağıdaki seçenek eski sürümlerde kullanılmaktaydı, fakat artık
      kullanılmamaktadır.</p>

    <dl>
      <dt><code>startssl</code></dt>
      <dd><strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> programını SSL destekli
        başlatmak için, yapılandırma dosyanızı ilgili yönergeleri içermesi
        için elden geçirmeli ve normal <code><strong>apachectl
        start</strong></code> komutunu kullanmalısınız.</dd>
    </dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
   programs/apxs.html                                                                                  100644       0       0        44460 11256641270  11734  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>apxs - Apache Eklenti Aracı - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>apxs - Apache Eklenti Aracı</h1>


    <p><code><strong>apxs</strong></code>, Apache Hiper Metin Aktarım
     Protokolü (HTTP) sunucusu için ek modül derleme ve kurulum aracıdır. Bu
     araç sayesinde, bir veya daha fazla kaynak veya nesne
     <var>dosya</var>sından bir devingen paylaşımlı nesne (DSO - "Dynamic
     Shared Object" kısaltması) derlemek ve bu nesneyi (modülü) Apache
     sunucusuna çalışma anında <strong><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></strong>
     modülünün <strong><code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code></strong> yönergesi üzerinden yüklemek mümkün
     olmaktadır.</p>

    <p>Bu eklenti mekanizmasını platformunuzda kullanmak için DSO desteğinin
     olması ve <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong> programının
     <strong><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></strong> modülünü içerecek şekilde
     derlenmiş olması gerekir. Eğer bunlar mevcut değilse
     <strong><code>apxs</code></strong> aracı durumu size bildirecektir. Bunu
     aşağıdaki komutla kendiniz de sınayabilirsiniz:</p>

    <div class="example"><p><code>
      $ httpd -l
    </code></p></div>

    <p><strong><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></strong> modülü gösterilen listede yer
     almalıdır. Bu gereksinimler sağlandığı takdirde
     <strong><code>apxs</code></strong> aracı sayesinde DSO mekanizması
     üzerinden kendi modüllerinizi kurmak suretiyle Apache sunucunuzun
     işlevselliğini kolayca arttırabilirsiniz. Örnek bir uygulama:</p>

    <div class="example"><p><code>
      $ apxs -i -a -c mod_foo.c<br />
      gcc -fpic -DSHARED_MODULE -I/dosya/yolu/apache/include -c mod_foo.c<br />
      ld -Bshareable -o mod_foo.so mod_foo.o<br />
      cp mod_foo.so /dosya/yolu/apache/modules/mod_foo.so<br />
      chmod 755 /dosya/yolu/apache/modules/mod_foo.so<br />
      [`foo' modülü /dosya/yolu/apache/etc/httpd.conf'ta etkinleştiriliyor]<br />
      $ apachectl restart<br />
      /dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start<br />
      [Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
      /dosya/yolu/apache/sbin/apachectl restart: httpd started<br />
      $ _
    </code></p></div>

    <p><var>dosya</var> olarak bir C kaynak dosyası (.c), bir nesne dosyası
     (.o) ve hatta bir kütüphane arşivi archive (.a) belirtebilirsiniz.
     <strong><code>apxs</code></strong> aracı bu dosya uzantılarını
     tanıdığından C dosyalarını derleme işleminden, arşiv ve nesne
     dosyalarını ise doğrudan ilintileme işleminden geçirir. Fakat böyle
     önceden derlenmiş nesne dosyalarını kullanırken, devingen paylaşımlı
     nesne olarak kullanılmalarını sağlamak üzere konumdan bağımsız kod (PIC)
     üretecek şekilde derlenmiş olduklarından emin olmalısınız. Örneğin
     GCC'yi bunun için daima <strong><code>-fpic</code></strong> seçeneği ile
     kullanmalısınız. Diğer C derleyiciler için,
     <strong><code>apxs</code></strong>'in nesne dosyalarını derlerken
     kullanacağı seçenekleri öğrenmek için o derleyicilerin kılavuz
     sayfalarına bakınız.</p>

    <p>Apache'deki DSO desteği ile ilgili daha ayrıntılı bilgi edinmek için
     <strong><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></strong> belgesini okumakla yetinmeyip
     <code>src/modules/standard/mod_so.c</code> kaynak dosyasını da
     okuyunuz.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>apxs</strong> -<strong>g</strong>
    [ -<strong>S</strong> <var>isim=değer</var> ]
    -<strong>n</strong> <var>modüladı</var></code></p>

    <p><code><strong>apxs</strong> -<strong>q</strong>
    [ -<strong>S</strong> <var>isim=değer</var> ]
    <var>sorgu</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>c</strong>
    [ -<strong>S</strong> <var>isim=değer</var> ]
    [ -<strong>o</strong> <var>dso-dosyası</var> ]
    [ -<strong>I</strong> <var>include-dizini</var> ]
    [ -<strong>D</strong> <var>isim=değer</var> ]
    [ -<strong>L</strong> <var>lib-dizini</var> ]
    [ -<strong>l</strong> <var>kütüphane-adı</var> ]
    [ -<strong>Wc,</strong><var>derleyici-seçenekleri</var> ]
    [ -<strong>Wl,</strong><var>ilintileyici-seçenekleri</var> ]
    <var>dosya</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>i</strong>
    [ -<strong>S</strong> <var>isim=değer</var> ]
    [ -<strong>n</strong> <var>modüladı</var> ]
    [ -<strong>a</strong> ]
    [ -<strong>A</strong> ]
    <var>dso-dosyası</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>e</strong>
    [ -<strong>S</strong> <var>isim=değer</var> ]
    [ -<strong>n</strong> <var>modüladı</var> ]
    [ -<strong>a</strong> ]
    [ -<strong>A</strong> ]
    <var>dso-dosyası</var> ...</code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <h3><a name="options.common" id="options.common">Ortak Seçenekler</a></h3>
      <dl>
        <dt><code><strong>-n</strong> <var>modüladı</var></code></dt>
        <dd><code>-i</code> (kurulum) ve <code>-g</code> (şablon üretimi)
         seçenekleri için modül ismi belirtmek amacıyla kullanılır. Bir modül
         ismi belirtmek için bu seçeneği kullanın.
         <code><strong>-g</strong></code> seçeneği için bu gereklidir.
         <code><strong>-i</strong></code> seçeneği için ise araç, modül
         ismini kaynağın ismine bakarak veya (son çare olarak) dosya isminden
         tahmin etmeye çalışarak saptamaya çalışır.</dd>
      </dl>
    

    <h3><a name="options.query" id="options.query">Sorgu Seçenekleri</a></h3>
      <dl>
        <dt><code><strong>-q</strong> <var>sorgu</var></code></dt>
        <dd><strong><code>apxs</code></strong>'in belli ayarlar hakkında
         bilgisine başvurmak için bir sorgu gerçekleştirir.
         <code><var>sorgu</var></code> olarak şu dizgelerden biri veya
         birkaçı belirtilebilir: <code>CC</code>, <code>CFLAGS</code>,
         <code>CFLAGS_SHLIB</code>, <code>INCLUDEDIR</code>,
         <code>LD_SHLIB</code>, <code>LDFLAGS_SHLIB</code>,
         <code>LIBEXECDIR</code>, <code>LIBS_SHLIB</code>,
         <code>SBINDIR</code>, <code>SYSCONFDIR</code>, <code>TARGET</code>.

        <p>Bu seçeneği ayarları öğrenmek için kullanın. Örneğin, Apache'nin C
         başlık dosyalarının yerini kendi Makefile dosyalarınızın içinde
         şöyle belirtebilirsiniz:</p>
        <div class="example"><p><code>
          INC=-I`apxs -q INCLUDEDIR`
        </code></p></div></dd>
      </dl>
    

    <h3><a name="options.conf" id="options.conf">Yapılandırma Seçenekleri</a></h3>
      <dl>
      <dt><code><strong>-S</strong> <var>isim=değer</var></code></dt>
      <dd>Bu seçenek yukarıda açıklanan <code><strong>apxs</strong></code>
        ayarlarını değiştirir.</dd>
      </dl>
    

    <h3><a name="options.template" id="options.template">Şablon Üretme Seçenekleri</a></h3>
      <dl>
      <dt><code><strong>-g</strong></code></dt>
      <dd><var>modüladı</var> (<strong><code>-n</code></strong> seçeneğihe
       bakınız) adında bir alt dizin oluşturur ve içine iki dosya
       yerleştirir: Kendi modülünüzü oluşturabilmeniz için veya
       <code><strong>apxs</strong></code> mekanizmaları ile hemen oynamaya
       başlayabilmeniz için <code>mod_<var>modüladı</var>.c</code> adında bir
       modül kaynak dosyası örneği ve bu modülü derleyip kurmayı
       kolaylaştırmak için bir <code>Makefile</code> dosyası.</dd>
      </dl>
    

    <h3><a name="options.dso" id="options.dso">DSO Derleme Seçenekleri</a></h3>
      <dl>
      <dt><code><strong>-c</strong></code></dt>
      <dd>Bu seçenek derleme yapılacağını belirtir. Önce belirtilen C kaynak
       <var>dosyalar</var>ını (.c), nesne dosyalarını (.o) elde etmek için
       derler. Sonra bunları kalan nesne dosyaları (.o ve .a) ile
       ilintileyerek <var>dso-dosyası</var> adında bir devingen paylaşımlı
       nesne oluşturur. Eğer <strong><code>-o</code></strong> seçeneği ile
       modül ismi belirtilmemişse <var>dosyalar</var> arasındaki ilk dosyanın
       ismine bakarak dosya ismi tahmin edilmeye çalışılır ve
       <code>mod_<var>isim</var>.so</code> dosya adı bu isimden elde
       edilir.</dd>

      <dt><code><strong>-o</strong> <var>dso-dosyası</var></code></dt>
      <dd>Oluşturulacak devingen paylaşımlı nesnenin ismini belirtmek için
       kullanılır. Modül ismi bu seçenekle belirtilmez ve <var>dosya</var>
       listesinden bir isim tahmini de yapılamazsa son çare olarak
       <code>mod_unknown.so</code> ismi kullanılır.</dd>

      <dt><code><strong>-D</strong> <var>isim=değer</var></code></dt>
      <dd>Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği
       derleme işlemine kendi tanımlarınızı belirtmek için kullanın.</dd>

      <dt><code><strong>-I</strong> <var>include-dizini</var></code></dt>
      <dd>Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği
       derleme işleminde kullanılmak üzere kendi başlık dosyalarınızı içeren
       dizinleri arama yollarına eklemek için kullanın.</dd>

      <dt><code><strong>-L</strong> <var>lib-dizini</var></code></dt>
      <dd>Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği
       derleme işleminde kullanılmak üzere kendi kütüphane dizinlerinizi
       arama yollarına eklemek için kullanın.</dd>

      <dt><code><strong>-l</strong> <var>kütüphane-adı</var></code></dt>
      <dd>Bu seçenek doğrudan derleme komutlarına aktarılır. Bu seçeneği
       derleme işleminde kullanılmak üzere kendi kütüphanelerinizi arama
       yollarına eklemek için kullanın.</dd>

      <dt><code><strong>-Wc</strong>,<var>derleyici-seçenekleri</var></code></dt>
      <dd>Bu seçenek <code>libtool --mode=compile</code> komutuna doğrudan
       seçenek aktarmak için kullanılır. Bu seçeneği yerel derleyiciniz için
       gereken ek seçenekleri belirtmek için kullanın.</dd>

      <dt><code><strong>-Wl</strong>,<var>ilintileyici-seçenekleri</var></code></dt>
      <dd>Bu seçenek <code>libtool --mode=link</code> komutuna doğrudan
       seçenek aktarmak için kullanılır. Bu seçeneği yerel ilintileyiciniz
       için gereken ek seçenekleri belirtmek için kullanın.</dd>
      </dl>
    

    <h3><a name="options.dsoinstall" id="options.dsoinstall">DSO Kurulum ve Yapılandırma Seçenekleri</a></h3>
    
      <dl>
      <dt><code><strong>-i</strong></code></dt>
      <dd>Kurulum işlemini belirtir ve devingen olarak paylaşımlı nesneleri
       sunucunun <var>modules</var> dizinine kurar.</dd>

      <dt><code><strong>-a</strong></code></dt>
      <dd>İlgili <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> satırını
       Apache'nin <code>httpd.conf</code> yapılandırma dosyasına özdevinimli
       olarak ekleyerek veya böyle bir satır varsa bunu etkin kılarak modülü
       etkinleştirir.</dd>

      <dt><code><strong>-A</strong></code></dt>
      <dd><strong><code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code></strong>
       yönergesini daha sonra etkinleştirmek üzere satırın başına bir diyez
       imi (<code>#</code>) yerleştirmesi dışında
       <strong><code>-a</code></strong> seçeneği ile aynıdır.</dd>

      <dt><code><strong>-e</strong></code></dt>
      <dd>Modülü kurmaya çalışmaksızın Apache'nin <code>httpd.conf</code>
       yapılandırma dosyasını <strong><code>-i</code></strong> işlemine
       benzer şekilde <strong><code>-a</code></strong> ve
       <strong><code>-A</code></strong> seçenekleri ile düzenleme işlemini
       belirtir.</dd>
      </dl>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    <p>Apache'nin sunucu işlevselliğini genişletmek amacıyla kullanacağınız
     <code>mod_foo.c</code> adında bir Apache modülünüz olduğunu varsayalım.
     Öncelikle, C kaynak dosyasını, Apache sunucusuna çalışma anında
     yüklenmeye uygun bir paylaşımlı nesne olarak derlemeniz gerekir. Bunu
     sağlamak için şu komutları vermelisiniz:</p>

    <div class="example"><p><code>
      $ apxs -c mod_foo.c<br />
      /dosya/yolu/libtool --mode=compile gcc ... -c mod_foo.c<br />
      /dosya/yolu/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
      $ _
    </code></p></div>

    <p>Bundan sonra, Apache yapılandırmanızın bu paylaşımlı nesneyi yüklemek
     için bir <strong><code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code></strong> yönergesi içermesini
     sağlamalısınız. <strong><code>apxs</code></strong> bu adımı
     basitleştirmek amacıyla, paylaşımlı nesneyi sunucunun <var>modules</var>
     dizinine özdevinimli olarak kurmak ve <code>httpd.conf</code> dosyasını
     buna uygun olarak güncellemek için bir yol sağlar. Bu sonuç şöyle elde
     edilebilir:</p>

    <div class="example"><p><code>
      $ apxs -i -a mod_foo.la<br />
      /dosya/yolu/instdso.sh mod_foo.la /path/to/apache/modules<br />
      /dosya/yolu/libtool --mode=install cp mod_foo.la /dosya/yolu/apache/modules
      ...
      chmod 755 /dosya/yolu/apache/modules/mod_foo.so<br />
      [`foo' modülü /dosya/yolu/apache/conf/httpd.conf'da etkinleştiriliyor] <br />
      $ _
    </code></p></div>

    <p>Yapılandıma dosyasına (eğer yoksa) şu satır eklenir:</p>

    <div class="example"><p><code>
      LoadModule foo_module modules/mod_foo.so
    </code></p></div>

    <p>Bunu öntanımlı olarak iptal etmek isterseniz
     <strong><code>-A</code></strong> seçeneğini kullanmanız gerekir:</p>

    <div class="example"><p><code>
      $ apxs -i -A mod_foo.c
    </code></p></div>

    <p><strong><code>apxs</code></strong> mekanizmalarını hızlıca denemek
     için örnek bir Apache modül şablonunu ve bir Makefile dosyasını şöyle
     oluşturabilirsiniz:</p>

    <div class="example"><p><code>
      $ apxs -g -n foo<br />
      Creating [DIR]  foo<br />
      Creating [FILE] foo/Makefile<br />
      Creating [FILE] foo/modules.mk<br />
      Creating [FILE] foo/mod_foo.c<br />
      Creating [FILE] foo/.deps<br />
      $ _
    </code></p></div>

    <p>Ardından bu örnek modülü bir paylaşımlı nesne olarak derleyip Apache
     sunucusuna yükleyebilirsiniz:</p>

    <div class="example"><p><code>
      $ cd foo<br />
      $ make all reload<br />
      apxs -c mod_foo.c<br />
      /dosya/yolu/libtool --mode=compile gcc ... -c mod_foo.c<br />
      /dosya/yolu/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
      apxs -i -a -n "foo" mod_foo.la<br />
      /dosya/yolu/instdso.sh mod_foo.la /dosya/yolu/apache/modules<br />
      /dosya/yolu/libtool --mode=install cp mod_foo.la /dosya/yolu/apache/modules
      ...
       chmod 755 /dosya/yolu/apache/modules/mod_foo.so<br />
      [`foo' modülü /dosya/yolu/apache/conf/httpd.conf'ta etkinleştiriliyor]<br />
       apachectl restart<br />
       /dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start<br />
      chmod 755 /dosya/yolu/apache/modules/mod_foo.so<br />
      [`foo' modülü /dosya/yolu/apache/etc/httpd.conf'ta etkinleştiriliyor]<br />
      apachectl restart<br />
      /dosya/yolu/apache/sbin/apachectl restart: httpd not running, trying to start<br />
      [Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
      /dosya/yolu/apache/sbin/apachectl restart: httpd started<br />
      $ _
    </code></p></div>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                programs/configure.html                                                                             100644       0       0       156373 11256641270  12771  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>configure - kaynak ağacını yapılandırır - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>configure - kaynak ağacını yapılandırır</h1>


    <p><code>configure</code> betiği, Apache HTTP Sunucusunun kaynak kodlarını
      belli bir platform için yapılandırmakta ve derlemekte kullanılır.
      Sunucuyu kişisel gereksinimlerinize uygun şekilde derlemek için çeşitli
      seçeneklere sahiptir.</p>

    <p>Bu betik Apache HTTP Sunucusu kaynak paketinin kök dizininde bulunur ve
      sadece Unix ve benzeri sistemlerde kullanılabilir. Kaynak paketinin
      diğer platformalarda yapılandırılması ve derlenmesi hakkında bilgi
      edinmek için <a href="../platform/index.html">platform</a> belgelerine bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Komut Satırı</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#env">Ortam Değişkenleri</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../install.html">Derleme ve Kurulum</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Komut Satırı</a></h2>
    <p><code>configure</code> betiğini kaynak paketinin kök dizininden başka
      bir yere kopyalayıp çalıştırmamalısınız.</p>

    <p><code><strong>./configure</strong> [<var>seçenek</var>]...
      [<var>değişken=değer</var>]...</code></p>

    <p><code>CC</code>, <code>CFLAGS</code> gibi ortam değişkenlerini
      <code><var>değişken</var>=<var>değer</var></code> atamaları biçiminde
      kullanabilirsiniz. Kullanışlı değişkenlerin bazıları <a href="#env">aşağıda</a> açıklanmıştır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
  <ul>
    <li><a href="#configurationoptions">Yapılandırma seçenekleri</a></li>
    <li><a href="#installationdirectories">Kurulum dizinleri</a></li>
    <li><a href="#systemtypes">Sistem türleri</a></li>
    <li><a href="#optionalfeatures">Seçimlik özellikler</a></li>
    <li><a href="#supportopt">Destek programları için seçenekler</a></li>
  </ul>

  <h3><a name="configurationoptions" id="configurationoptions">Yapılandırma seçenekleri</a></h3>

    <p>Aşağıdaki seçenekler <code>configure</code> betiğinin kendi davranışını
      belirlemekte kullanılır.</p>

    <dl>
      <dt><code>-C</code></dt>
      <dt><code>--config-cache</code></dt>
      <dd><code>--cache-file=config.cache</code> için bir kısaltmadır.</dd>

      <dt><code>--cache-file=<var>dosya</var></code></dt>
      <dd>Sınama sonuçları <code><var>dosya</var></code> dosyasında saklanır.
        Bu seçenek açıkça belirtilmedikçe işlevsizdir.</dd>

      <dt><code>-h</code></dt>
      <dt><code>--help [short|recursive]</code></dt>
      <dd>Yardım metnini basar ve çıkar. <code>short</code> değeriyle sadece
        bu pakete özgü seçenekler listelenir. <code>recursive</code> değeriyle
        ise paketin içindeki tüm paketler için kısa bir yardım metni
        basılır.</dd>

      <dt><code>-n</code></dt>
      <dt><code>--no-create</code></dt>
      <dd><code>configure</code> betiği normal olarak çalışır fakat herhangi
        bir çıktı dosyası üretmez. Derleme için <code>Makefile</code>
        dosyalarını üretmeksizin sınamaların sonuçlarını görmek için
        yararlıdır.</dd>

      <dt><code>-q</code></dt>
      <dt><code>--quiet</code></dt>
      <dd>Yapılandırma sürecinde <code>checking ...</code> iletilerini basmaz.
      </dd>

      <dt><code>--srcdir=<var>dizin</var></code></dt>
      <dd><code><em>dizin</em></code> dizinini kaynak dosyaları dizini olarak
        tanımlar. <code>configure</code> betiğinin bulunduğu dizin veya bir
        üst dizin öntanımlıdır.</dd>

      <dt><code>--silent</code></dt>
      <dd><code>--quiet</code> ile aynı.</dd>

      <dt>-V</dt>
      <dt>--version</dt>
      <dd>Telif hakkı bilgilerini gösterir ve çıkar.</dd>
    </dl>
  

  <h3><a name="installationdirectories" id="installationdirectories">Kurulum dizinleri</a></h3>

    <p>Bu seçenekler kurulum dizinlerini tanımlar. Kurulum dizinleri seçilmiş
      yerleşime bağımlıdır.</p>

    <dl>
      <dt><code>--prefix=<var>PREFIX</var></code></dt>
      <dd>Mimariden bağımsız dosyalar <code><em>PREFIX</em></code> dizininin
        altına kurulur. <code>/usr/local/apache2</code> öntanımlı kurulum
        dizinidir.</dd>

      <dt><code>--exec-prefix=<var>EPREFIX</var></code></dt>
      <dd>Mimariye bağımlı dosyalar <code><em>EPREFIX</em></code> dizininin
        altına kurulur. Bunun için <code><em>PREFIX</em></code> dizini
        öntanımlı kurulum dizinidir.</dd>
    </dl>

    <p>Öntanımlı olarak, <code>make install</code> tüm dosyaların
      <code>/usr/local/apache2/bin</code>, <code>/usr/local/apache2/lib</code>
      gibi dizinlere kurulmasını sağlar. Kurulum dizini önekini örneğin,
      <code>--prefix=$HOME</code> şeklinde belirterek kurulumun başka bir yere
      yapılmasını sağlayabilirsiniz.</p>

    <h4><a name="layout" id="layout">Bir dizin yerleşimi tanımlamak</a></h4>
      <dl>
        <dt><code>--enable-layout=<var>LAYOUT</var></code></dt>
        <dd>Kaynak kodu ve derleme betikleri kurulum ağacının
          <code><em>LAYOUT</em></code> yerleşimine dayalı olduğu varsayımıyla
          yapılandırılır. Bu seçenek sayesinde Apache HTTP Sunucusu kurulumu
          içinde her dosya türü için farklı bir yer belirleyebilirsiniz.
          <code>config.layout</code> dosyasında böyle yapılandırma örnekleri
          vardır. Örnekleri izleyerek kendi yapılandırmanızı
          oluşturabilirsiniz. Bu dosyada örneğin <code>FOO</code> isimli
          yerleşim <code>&lt;Layout FOO&gt;...&lt;/Layout&gt;</code> bölümü
          içinde düzenlenmiştir ve her yerleşim için böyle ayrı bir bölüm
          vardır. Öntanımlı yerleşim <code>Apache</code>’dir.</dd>
      </dl>
    

    <h4><a name="directoryfinetuning" id="directoryfinetuning">Kurulum dizinlerinde ince ayar</a></h4>
      

      <p>Kurulum dizinlerini daha iyi denetim altında tutmak için aşağıdaki
        seçenekler kullanılır. Lütfen, dizin öntanımlılarının
        <code>autoconf</code> tarafından tanımlandığına ve seçilen yerleşim
        ayarlarının bunları yerini aldığına dikkat ediniz.</p>

      <dl>
        
        <dt><code>--bindir=<var>dizin</var></code></dt>
        <dd>Kullanıcı tarafından çalıştırılabilen dosyalar
          <code><em>dizin</em></code> dizinine kurulur. Bunlar
          <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>, <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> gibi site
          yönetimi için yararlı destek programlarıdır. Öntanımlı olarak bu
          dosyalar <code><var>EPREFIX</var>/bin</code> dizinine kurulur.</dd>

        <dt><code>--datadir=<var>dizin</var></code></dt>
        <dd>Mimariden bağımsız salt okunur veriler <code><em>dizin</em></code>
          dizinine kurulur. Bunların öntanımlı kurulum dizini
          <code><var>PREFIX</var>/share</code> dizinidir. Bu seçenek
          <code>autoconf</code> tarafından atanır ve şimdilik
          kullanılmamıştır.</dd>

        <dt><code>--includedir=<var>dizin</var></code></dt>
        <dd>C başlık dosyaları <code><em>dizin</em></code> dizinine kurulur.
          Bunların öntanımlı kurulum dizini
          <code><var>PREFIX</var>/include</code> dizinidir.</dd>

        <dt><code>--infodir=<var>dizin</var></code></dt>
        <dd>Info belgeleri <code><em>dizin</em></code> dizinine kurulur.
          Bunların öntanımlı kurulum dizini
          <code><var>PREFIX</var>/info</code> dizinidir. Bu seçenek şimdilik
          kullanılmamıştır.</dd>

        <dt><code>--libdir=<var>dizin</var></code></dt>
        <dd>Nesne kod kütüphaneleri <code><em>dizin</em></code> dizinine
          kurulur. Bunların öntanımlı kurulum dizini
          <code><var>PREFIX</var>/lib</code> dizinidir.</dd>

        <dt><code>--libexecdir=<var>dizin</var></code></dt>
        <dd>Paylaşımlı modüller gibi program dosyaları
          <code><em>dizin</em></code> dizinine kurulur. Öntanımlı olarak
          <code>libexecdir</code> bu dizini
          <code><var>EPREFIX</var>/libexec</code> olarak tanımlar.</dd>

        <dt><code>--localstatedir=<var>dizin</var></code></dt>
        <dd>Düzenlenebilir tek makinelik veri <code><em>dizin</em></code>
          dizinine kurulur. Öntanımlı olarak <code>localstatedir</code> bu
          dizini <code><var>PREFIX</var>/var</code> olarak tanımlar. Bu
          seçenek <code>autoconf</code> tarafından atanır ve şimdilik
          kullanılmamıştır.</dd>

        <dt><code>--mandir=<var>dizin</var></code></dt>
        <dd>Kılavuz sayfaları <code><em>dizin</em></code> dizinine kurulur.
          Öntanımlı olarak <code>mandir</code> bu dizini
          <code><var>EPREFIX</var>/man</code> olarak tanımlar.</dd>

        <dt><code>--oldincludedir=<var>dizin</var></code></dt>
        <dd>GCC harici C başlık dosyaları <code><em>dizin</em></code> dizinine
          kurulur. Öntanımlı olarak <code>oldincludedir</code> bu dizini
          <code>/usr/include</code> olarak tanımlar. Bu seçenek
          <code>autoconf</code> tarafından atanır ve şimdilik
          kullanılmamıştır.</dd>

        <dt><code>--sbindir=<var>dizin</var></code></dt>
        <dd>Sistem yöneticisi tarafından kullanılabilen programlar
          <code><em>dizin</em></code> dizinine kurulur. Bunlar
          <code class="program"><a href="../programs/httpd.html">httpd</a></code>, <code class="program"><a href="../programs/apachectl.html">apachectl</a></code>,
          <code class="program"><a href="../programs/suexec.html">suexec</a></code> gibi Apache HTTP Sunucusunu çalıştırmak
          için gereken programlardır. Öntanımlı olarak <code>sbindir</code> bu
          dizini <code><var>EPREFIX</var>/sbin</code> olarak tanımlar.</dd>

        <dt><code>--sharedstatedir=<var>dizin</var></code></dt>
        <dd>Mimariye bağımlı düzenlenebilir veriler
          <code><em>dizin</em></code> dizinine kurulur. Öntanımlı olarak
          <code>sharedstatedir</code> bu dizini
          <code><var>PREFIX</var>/com</code> olarak tanımlar. Bu seçenek
          <code>autoconf</code> tarafından atanır ve şimdilik
          kullanılmamıştır.</dd>

        <dt><code>--sysconfdir=<var>dizin</var></code></dt>
        <dd><code>httpd.conf</code>, <code>mime.types</code> gibi tek
          makinelik salt okunur sunucu yapılandırma dosyaları
          <code><em>dizin</em></code> dizinine kurulur. Öntanımlı olarak
          <code>sysconfdir</code> bu dizini <code><var>PREFIX</var>/etc</code>
          olarak tanımlar.</dd>
      </dl>
    
  

  <h3><a name="systemtypes" id="systemtypes">Sistem türleri</a></h3>

    <p>Bu seçenekleri Apache HTTP Sunucusunu başka bir platformda çalıştırmak
      üzere çapraz derleme yaparken kullanılır. Normal durumlarda sunucu
      derlendiği platformda çalıştırıldığından bu seçenekler kullanılmaz.</p>

    <dl>
      <dt><code>--build=<var>derleme-ortamı</var></code></dt>
      <dd>Derleme araçlarının derleneceği sistemin sistem türünü tanımlar.
        <code>config.guess</code> betiği ile elde edilen sonuç
        öntanımlıdır.</dd>

      <dt><code>--host=<var>çalışma-ortamı</var></code></dt>
      <dd>Sunucunun çalışacağı sistemin sistem türünü tanımlar. Öntanımlı
        sistem türü <code><var>derleme-ortamı</var></code>’dır.</dd>

      <dt><code>--target=<var>hedef-ortam</var></code></dt>
      <dd>Derleyicileri <code><var>hedef-ortam</var></code> sistem türü için
        yapılandırır. Öntanımlı sistem türü
        <code><var>çalışma-ortamı</var></code>’dır. Bu seçenek
        <code>autoconf</code> tarafından atanır ve Apache HTTP Sunucusu için
        gerekli değildir.</dd>
    </dl>
  

  <h3><a name="optionalfeatures" id="optionalfeatures">Seçimlik özellikler</a></h3>

    <p>Bu seçenekler HTTP sunucunuzun sahip olmasını istediğiniz özelliklerin
      hassas olarak ayarlanmasını sağlar.</p>

    <h4><a name="generaloptfeat" id="generaloptfeat">Genel sözdizimi</a></h4>
      <p>Bir özelliği etkin kılmak veya iptal etmek için genellikle şu
        sözdizimi kullanılır:</p>

      <dl>
        <dt><code>--disable-<var>özellik</var></code></dt>
        <dd>Sunucu <code><em>özellik</em></code> özelliğine sahip olmaz. Bu
          seçenek<code>--enable-<var>özellik</var>=no</code> seçeneğine
          eşdeğerdir.</dd>

        <dt><code>--enable-<var>özellik</var>[=<var>değer</var>]</code></dt>
        <dd>Sunucu <code><var>özellik</var></code> özelliğine sahip olur.
          <code><var>değer</var></code> belirtilmediği takdirde
          <code>yes</code> (evet) öntanımlıdır.</dd>

        <dt><code>--enable-<var>modül</var>=shared</code></dt>
        <dd>Belirtilen modül DSO modülü olarak derlenir.</dd>

        <dt><code>--enable-<var>modül</var>=static</code></dt>
        <dd>Öntanımlı olarak etkin olan modüller durağan ilintilenir. Bunu bu
          seçenekle alenen zorlayabilirsiniz.</dd>
      </dl>

      <div class="note"><h3>Bilginize</h3>
      <p><code>--enable-<var>filanca</var></code> seçeneğinin varlığı
        <code>configure</code> betiğinin <code><var>filanca</var></code> diye
        bir modül var olmasa bile bundan şikayetçi olmasına sebep olmaz. Bu
        bakımdan dikkatli olunuz.</p>
      </div>
    

    
    <h4><a name="enabledmodules" id="enabledmodules">Öntanımlı olarak etkin modüller</a></h4>
      <p>Bazı modüller öntanımlı olarak derlendiğinden iptal edilmek istenirse
        bunun açıkça belirtilmesi gerekir. Aşağıdaki seçenekler bu tür
        modüllerin diğerlerinden bağımsız olarak derlenmemesini sağlar.</p>

      <dl>
        <dt><code>--disable-actions</code></dt>
        <dd><code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code> modülü tarafından sağlanan ve
          isteklerle tetiklenen eylemleri iptal eder.</dd>

        <dt><code>--disable-alias</code></dt>
        <dd><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> modülü tarafından sağlanan, isteklerin
          farklı dosya sistemi bölümleriyle eşlenmesi iptal edilir.</dd>

        <dt><code>--disable-asis</code></dt>
        <dd><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code> modülü tarafından sağlanan kendinden
          HTTP başlıklı dosya türü desteğini iptal eder.</dd>

        <dt><code>--disable-auth</code></dt>
        <dd><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> modülü tarafından sağlanan kullanıcıya
          dayalı erişim denetimi iptal edilir. Bu modül, kullanıcı isminin ve
          parolasının salt metin dosyalarda saklandığı Temel HTTP Kimlik
          Doğrulaması için kullanılır.</dd>

        <dt><code>--disable-autoindex</code></dt>
        <dd><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> modülü tarafından sağlanan dizin
          içerik listelemesini iptal eder.</dd>

        <dt><code>--disable-access</code></dt>
        <dd><code class="module"><a href="../mod/mod_access.html">mod_access</a></code> modülü tarafından sağlanan konağa
          dayalı erişim denetimi iptal edilir.</dd>

        <dt><code>--disable-cgi</code></dt>
        <dd>CGI betiklerine destek sağlayan <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, çok
          evreli olmayan MPM kullanıldığında öntanımlı olarak etkin kılınır.
          CGI desteğini iptal etmek için bu seçeneği kullanın.</dd>

        <dt><code>--disable-cgid</code></dt>
        <dd><code class="module"><a href="../mod/worker.html">worker</a></code> çok evreli MPM’i kullanılırken CGI
          betikleri için desteği öntanımlı olarak <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code>
          modülü sağlar. CGI desteğini iptal etmek için bu seçeneği
          kullanın.</dd>

        <dt><code>--disable-charset-lite</code></dt>
        <dd><code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> modülü tarafından sağlanan
          karakter kümesi dönüşümleri iptal edilir. Bu modül sadece EBCDIC
          sistemlerinde öntanımlı olarak kurulur.</dd>

        <dt><code>--disable-dir</code></dt>
        <dd><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> modülü tarafından sağlanan dizin
          isteklerine destek iptal edilir.</dd>

        <dt><code>--disable-env</code></dt>
        <dd><code class="module"><a href="../mod/mod_env.html">mod_env</a></code> modülü tarafından sağlanan ortam
          değişkenlerine destek iptal edilir.</dd>

        
        <dt><code>--disable-http</code></dt>
          <dd>HTTP protokolüne destek iptal edilir. <code>http</code> modülü
          en temel modüldür ve sunucunun bir HTTP sunucusu olarak çalışmasını
          sağlar. Sadece, HTTP protokolü yerine başka bir protokol kullanmak
          isterseniz bu seçeneği kullunın. <strong>Ne yaptığınızdan gerçekten
          emin olamıyorsanız bu desteği asla iptal etmeyin.</strong>
            <br />
          Dikkat: Bu modül ana kodla daima durağan ilintilidir.</dd>

        <dt><code>--disable-imagemap</code></dt>
        <dd><code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code> modülü tarafından sağlanan resim
          eşlemlerine destek iptal edilir.</dd>

        <dt><code>--disable-include</code></dt>
        <dd><code class="module"><a href="../mod/mod_include.html">mod_include</a></code> modülü tarafından sağlanan SSI
          sayfaları desteği iptal edilir.</dd>

        <dt><code>--disable-log-config</code></dt>
        <dd><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> modülü tarafından sağlanan günlük
          kayıtları yapılandırması iptal edilir. Bu modül olmaksızın sunucu
          yapılan isteklerin günlük kayıtlarını tutamaz.</dd>

        <dt><code>--disable-mime</code></dt>
        <dd><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> modülü istenen dosyanın uzantısına
          bakarak dosya içeriğinin (<a class="glossarylink" href="../glossary.html#mime-type" title="sözlüğe bakınız">MIME
          türü</a>, dil, karakter kümesi ve kodlama) nasıl ele
          alınacağını belirler. Bu modülün iptal edilmesi önerilmez.</dd>

        <dt><code>--disable-negotiation</code></dt>
        <dd><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code> modülü tarafından sağlanan içerik
          dili uzlaşımı iptal edilir.</dd>

        <dt><code>--disable-setenvif</code></dt>
        <dd><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> modülü tarafından sağlanan
          başlıklarla ilgili ortam değişkenlerine dayalı destek iptal
          edilir.</dd>

        <dt><code>--disable-status</code></dt>
        <dd><code class="module"><a href="../mod/mod_status.html">mod_status</a></code> modülü tarafından sağlanan süreç/evre
          izleme iptal edilir.</dd>

        <dt><code>--disable-userdir</code></dt>
        <dd><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> modülü tarafından sağlanan,
          isteklerin kullanıcıya özel dizinlere eşlenmesi iptal edilir.</dd>
      </dl>
    

    <h4><a name="disabledmodules" id="disabledmodules">Öntanımlı olarak etkin olmayan modüller</a></h4>
      

      <p>Bazı modüller öntanımlı olarak derlendiği halde açıkça istenmedikçe
        veya <code>most</code> ya da <code>all</code> anahtar sözcükleri
        kullanılmadıkça etkin kılınmazlar (bu konu, <a href="#otheroptfeat">aşağıda</a> <code>--enable-mods-shared</code>
        seçeneğinde daha ayrıntılı ele alınmıştır). Bu modülleri
        etkinleştirmek için aşağıdaki seçenekleri kullanabilirsiniz.</p>

      <dl>
        <dt><code>--enable-auth-anon</code></dt>
        <dd><code class="module"><a href="../mod/mod_auth_anon.html">mod_auth_anon</a></code> modülünün sağladığı anonim
          kullanıcı erişimi etkin kılınır.</dd>

        <dt><code>--enable-auth-dbm</code></dt>
        <dd><code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code> modülü kullanıcı isimlerinin ve
          parolalarının DBM türü veritabanı dosyalarında saklandığı HTTP Temel
          Kimlik Kanıtlaması için destek sağlar. Bu seçeneği bu modülü etkin
          kılmak için kullanabilirsiniz.</dd>

        <dt><code>--enable-auth-digest</code></dt>
        <dd><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> modülü tarafından sağlanan
          RFC2617 Özet Kimlik Kanıtlaması etkin kılınır. Bu modül delilleri
          salt metin dosyalarda saklar.</dd>

        <dt><code>--enable-authnz-ldap</code></dt>
        <dd><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> modülü tarafından sağlanan LDAP’a
          Dayalı Kimlik Kanıtlaması etkin kılınır.</dd>

        <dt><code>--enable-cache</code></dt>
        <dd><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> modülü tarafından sağlanan devingen
          dosya önbelleklemesi etkin kılınır. Bu deneysel modülün kullanımı,
          aşırı yüklü sunucularda ya da önbellekli vekillerde ilginç sonuçlar
          verebilir. Bunun yanında en azından bir saklama alanı yönetim modülü
          (örn, <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> veya
          <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code>) gerekebilir.</dd>

        <dt><code>--enable-cern-meta</code></dt>
        <dd><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code> modülü tarafından sağlanan CERN
          türü temel veri dosyalarına destek etkin kılınır.</dd>

        <dt><code>--enable-charset-lite</code></dt>
        <dd><code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> modülü tarafından sağlanan
          karakter kümesi dönüşümleri etkin kılınır. Bu modül sadece EBCDIC
          sistemlerinde öntanımlı olarak etkindir. Diğer sistemlerde gerekirse
          alenen etkin kılınması gerekir.</dd>

        <dt><code>--enable-dav</code></dt>
        <dd><code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> modülü tarafından sağlanan WebDAV
          protokolü desteği etkin kılınır. Dosya sistemi özkaynaklarına destek
          için <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> modülü de gerekir ve bu seçenekle o
          da etkin kılınır.<br />
          Dikkat: <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> sadece <code>http</code> protokolü
          modülü ile birlikte kullanılabilir.</dd>

        <dt><code>--enable-dav-fs</code></dt>
        <dd><code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> modülü tarafından sağlanan WebDAV
          protokolünün dosya sistemi özkaynaklarına erişim desteği etkin
          kılınır. Bu modül <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> modülü için destek
          sağlar. Bu bakımdan, <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code> modülünü de etkin
          kılmak için <code>--enable-dav</code> seçeneğini de
          kullanmalısınız.</dd>

        <dt><code>--enable-dav-lock</code></dt>
        <dd><code class="module"><a href="../mod/mod_dav_lock.html">mod_dav_lock</a></code> modülü tarafından sağlanan geri
          destek modüllerine temel DAV kilitleme desteği etkin kılınır. Bu
          modülün işlevsel olabilmesi için en azından <code class="module"><a href="../mod/mod_dav.html">mod_dav</a></code>
          modülünün etkin olması gerekir, dolayısıyla bu seçeneği
          <code>--enable-dav</code> ile birlikte kullanmalısınız.</dd>

        <dt><code>--enable-deflate</code></dt>
        <dd><code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> modülü tarafından sağlanan
          sıkıştırılmış aktarım kodlaması etkin kılınır.</dd>

        <dt><code>--enable-disk-cache</code></dt>
        <dd><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> modülü tarafından sağlanan diskte
          önbellekleme etkin kılınır.</dd>

        <dt><code>--enable-expires</code></dt>
        <dd><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> modülü tarafından sağlanan
          <code>Expires</code> başlığıyla denetim etkin kılınır.</dd>

        <dt><code>--enable-ext-filter</code></dt>
        <dd><code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> modülü tarafından sağlanan harici
          süzgeç desteği etkin kılınır.</dd>

        <dt><code>--enable-file-cache</code></dt>
        <dd><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> modülü tarafından sağlanan dosya
          önbelleklemesi etkin kılınır.</dd>

        <dt><code>--enable-headers</code></dt>
        <dd><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> modülü tarafından sağlanan HTTP
          başlıkları denetimi etkin kılınır.</dd>

        <dt><code>--enable-info</code></dt>
        <dd> <code class="module"><a href="../mod/mod_info.html">mod_info</a></code> modülü tarafından sağlanan sunucu
          bilgileri etkin kılınır.</dd>

        <dt><code>--enable-ldap</code></dt>
        <dd><code class="module"><a href="../mod/mod_ldap.html">mod_ldap</a></code> modülü tarafından sağlanan LDAP
          önbelleklemesi ve bağlantı havuzu hizmetleri etkin kılınır.</dd>

        <dt><code>--enable-logio</code></dt>
        <dd><code class="module"><a href="../mod/mod_logio.html">mod_logio</a></code> modülü tarafından sağlanan başlıklarda
          bulunan girdi ve çıktı bayt sayılarının günlüklenmesi etkin
          kılınır.</dd>

        <dt><code>--enable-mem-cache</code></dt>
        <dd><code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> modülü tarafından sağlanan bellekte
          önbellekleme etkin kılınır.</dd>

        <dt><code>--enable-mime-magic</code></dt>
        <dd><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code> modülü tarafından sağlanan
          <a class="glossarylink" href="../glossary.html#mime-type" title="sözlüğe bakınız">MIME türleri</a>nin kendiliğinden
          belirlenmesi desteği etkin kılınır.</dd>

        <dt><code>--enable-isapi</code></dt>
        <dd><code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code> modülü tarafından sağlanan isapi
          eklenti desteği etkin kılınır.</dd>

        <dt><code>--enable-proxy</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülü tarafından sağlanan
          vekil/ağ-geçidi işlevselliği etkin kılınır. <code>AJP13</code>,
          <code>CONNECT</code>, <code>FTP</code>, <code>HTTP</code> ve
          dengeleyici vekil yetenekleri ayrı olarak
          <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code>, <code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code>,
          <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>, <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> ve
          <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> modülleri tarafından sağlanır.
          Bu beş modül bu seçenekle kendiliğinden etkin olur.</dd>

        <dt><code>--enable-proxy-ajp</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code> modülü tarafından sağlanan
          <code>AJP13</code> (Apache JServ Protokolü 1.3) için vekil desteği
          etkin kılınır. Bu modül <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünün bir
          eklentisidir, dolayısıyla bu seçeneği <code>--enable-proxy</code>
          seçeneği ile birlikte kullanmalısınız.</dd>

        <dt><code>--enable-proxy-balancer</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> modülü tarafından sağlanan
          <code>AJP13</code>, <code>FTP</code> ve <code>HTTP</code>
          protokollerine yük dengeleme desteği etkin kılınır. Bu modül
          <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünün bir eklentisidir, dolayısıyla
          bu seçeneği <code>--enable-proxy</code> seçeneği ile birlikte
          kullanmalısınız.</dd>

        <dt><code>--enable-proxy-connect</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code> modülü tarafından sağlanan
          <code>CONNECT</code> isteklerine vekil desteği etkin kılınır. Bu
          modül <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünün bir eklentisidir,
          dolayısıyla bu seçeneği <code>--enable-proxy</code> seçeneği ile
          birlikte kullanmalısınız.</dd>

        <dt><code>--enable-proxy-ftp</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code> modülü tarafından sağlanan
          <code>FTP</code> isteklerine vekil desteği etkin kılınır. Bu modül
          <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünün bir eklentisidir, dolayısıyla
          bu seçeneği <code>--enable-proxy</code> seçeneği ile birlikte
          kullanmalısınız.</dd>

        <dt><code>--enable-proxy-http</code></dt>
        <dd><code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> modülü tarafından sağlanan
          <code>HTTP</code> isteklerine vekil desteği etkin kılınır. Bu modül
          <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> modülünün bir eklentisidir, dolayısıyla
          bu seçeneği <code>--enable-proxy</code> seçeneği ile birlikte
          kullanmalısınız.</dd>

        <dt><code>--enable-rewrite</code></dt>
        <dd><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülü tarafından sağlanan kurallara
          dayalı URL kurgulaması etkin kılınır.</dd>

        <dt><code>--enable-so</code></dt>
        <dd><code class="module"><a href="../mod/mod_so.html">mod_so</a></code> modülü tarafından sağlanan DSO yeteneği
          etkin kılınır. <code>--enable-mods-shared</code> seçeneği bu
          seçeneği de etkin kılar.</dd>

        <dt><code>--enable-speling</code></dt>
        <dd><code class="module"><a href="../mod/mod_speling.html">mod_speling</a></code> modülü tarafından sağlanan URL
          yanlışlarını düzeltme desteği etkin kılınır.</dd>

        <dt><code>--enable-ssl</code></dt>
        <dd><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> modülü tarafından sağlanan SSL/TLS
          şifreleme desteği etkin kılınır.</dd>

        <dt><code>--enable-unique-id</code></dt>
        <dd><code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code> modülü tarafından sağlanan her
          isteğe bir eşsiz kimlik atama desteği etkin kılınır.</dd>

        <dt><code>--enable-usertrack</code></dt>
        <dd><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code> modülü tarafından sağlanan
          kullanıcı oturumunu izleme desteği etkin kılınır.</dd>

        <dt><code>--enable-vhost-alias</code></dt>
        <dd><code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> modülü tarafından sağlanan
          kitlesel sanal barındırma desteği etkin kılınır.</dd>
      </dl>
    

    <h4><a name="developermodules" id="developermodules">Geliştiriciler için modüller</a></h4>
      

      <p>Aşağıdakiler geliştiricilerin yaptıklarını sınamalar için yararlı
        modülleri etkinleştiren seçeneklerdir. Bu seçenekler öntanımlı olarak
        etkin değildir. Bu modüllere ihtiyacınız olup olmadığı konusunda bir
        fikriniz yoksa bu bölümü atlayabilirsiniz.</p>

      <dl>
        
        <dt><code>--enable-bucketeer</code></dt>
        <dd><code>mod_bucketeer</code> modülü tarafından sağlanan veri
          kümelerine müdahale süzgeci etkin kılınır.</dd>

        
        <dt><code>--enable-case-filter</code></dt>
        <dd><code>mod_case_filter</code> modülünün sağladığı çıktıda büyük
          harfe dönüşüm süzgeci örneği etkin kılınır.</dd>

        
        <dt><code>--enable-case-filter-in</code></dt>
        <dd><code>mod_case_filter_in</code> modülünün sağladığı girdide büyük
          harfe dönüşüm süzgeci örneği etkin kılınır.</dd>

        <dt><code>--enable-echo</code></dt>
        <dd><code class="module"><a href="../mod/mod_echo.html">mod_echo</a></code> modülünün sağladığı ECHO sunucusu etkin
          kılınır.</dd>

        <dt><code>--enable-example</code></dt>
        <dd>Örnek ve demo modülü <code class="module"><a href="../mod/mod_example.html">mod_example</a></code> etkin
          kılınır.</dd>

        
        <dt><code>--enable-optional-fn-export</code></dt>
        <dd><code>mod_optional_fn_export</code> modülünün sağladığı seçimlik
          işlev ihraç örneği etkin kılınır.</dd>

        
        <dt><code>--enable-optional-fn-import</code></dt>
        <dd><code>mod_optional_fn_import</code> modülünün sağladığı seçimlik
          işlev ithal örneği etkin kılınır.</dd>

        
        <dt><code>--enable-optional-hook-export</code></dt>
        <dd><code>mod_optional_hook_export</code> modülünün sağladığı seçimlik
          kanca işlev ihraç örneği etkin kılınır.</dd>

        
        <dt><code>--enable-optional-hook-import</code></dt>
        <dd><code>mod_optional_hook_import</code> modülünün sağladığı seçimlik
          kanca işlev ithal örneği etkin kılınır.</dd>
      </dl>
    

    <h4><a name="modules" id="modules">MPM'ler ve üçüncü parti modüller</a></h4>
      <p>Gereken çok süreçlilik modüllerini ve üçüncü parti modülleri etkin
        kılmak için şu seçenekler kullanılır:</p>

      <dl>
        <dt><code>--with-module=<var>modül-türü</var>:<var>modül-dosyası</var>[,<var>modül-türü</var>:<var>modül-dosyası</var>]</code></dt>
        <dd><p>Durağan ilintili modüller listesine belirtilen modülleri ekler.
          Modül kaynak dosyası <code><var>modül-dosyası</var></code>, önce
          Apache HTTP Sunucusu kaynak ağacı altında
          <code>modules/<var>modül-türü</var></code> alt dizininde aranır.
          Modül orada değilse <code>configure</code>  betiği
          <code><var>modül-dosyası</var></code> ile bir mutlak dosya yolu
          belirtildiği varsayımıyla kaynak dosyasını
          <code><var>modül-türü</var></code> alt dizinine kopyalamaya çalışır.
          Alt dizin mevcut değilse oluşturulur ve içine standart bir
          <code>Makefile.in</code> yerleştirilir.</p>

        <p>Bu seçenek tek kaynak dosyasından oluşan küçük harici modülleri
          eklemek için yararlıdır. Daha karmaşık modüller için modül üreticisi
          tarafından sağlanan belgelere bakınız.</p>

        <div class="note"><h3>Bilginize</h3>
          <p>Durağan ilintili modüller yerine bir DSO modülü derlemek
            isterseniz <code class="program"><a href="../programs/apxs.html">apxs</a></code> programını kullanınız.</p>
        </div>
        </dd>

        <dt><code>--with-mpm=<var>MPM</var></code></dt>
        <dd>Sunucu süreç modeli seçilir. Bu seçenekte <a href="../mpm.html">çok süreçlilik modüllerinden sadece biri</a>
          belirtilebilir. Bu seçenek kullanılmadığı takdirde işletim
          sisteminiz için <a href="../mpm.html#defaults">öntanımlı MPM</a>
          etkin olur. Bu seçenekte belirtilebilecek MPM isimleri:
          <code class="module"><a href="../mod/beos.html">beos</a></code>, <code class="module"><a href="../mod/mpmt_os2.html">mpmt_os2</a></code>,
          <code class="module"><a href="../mod/prefork.html">prefork</a></code> ve <code class="module"><a href="../mod/worker.html">worker</a></code>.</dd>
      </dl>
    

    <h4><a name="otheroptfeat" id="otheroptfeat">Kümeleme seçenekleri ve diğerleri</a></h4>
      <dl>
        <dt><code>--enable-maintainer-mode</code></dt>
        <dd>Hata ayıklama iletileri ve derleme sırasındaki uyarıların
          gösterilmesi etkin kılınır.</dd>

        <dt><code>--enable-mods-shared=<var>modül-listesi</var></code></dt>
        <dd>
          <p>Etkinleştirilip devingen paylaşımlı modül olarak derlenecek
            modüllerin listesi belirtilir. Yani, bu modüller <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi kullanılarak
            devingen olarak yüklenir.</p>

          <p><code><var>modül-listesi</var></code> tırnak içine alınmış boşluk
            ayraçlı modül isimleri listesidir. Modül isimleri önlerindeki
            <code>mod_</code> öneki olmaksızın belirtilirler. Örnek:</p>

          <div class="example"><p><code>
            --enable-mods-shared='headers rewrite dav'
          </code></p></div>

          <p><code><var>modül-listesi</var></code> yerine <code>all</code> ve
            <code>most</code> anahtar sözcükleri de belirtilebilir.
            Örneğin,</p>

          <div class="example"><p><code>
            --enable-mods-shared=most
          </code></p></div>

          <p>seçeneği ile çoğu modül DSO modülü olarak derlenecektir.</p>

          <p><strong>Yetersizlikler:</strong>
            <code>--enable-mods-shared=all</code> aslında bütün modüllerin
            derlenmesini sağlamaz. Tüm modülleri derlemek için şunu
            yapabilirsiniz:</p>

          <div class="example"><p><code>
            ./configure \<br />
            <span class="indent">
                --with-ldap \<br />
                --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"
            </span>
          </code></p></div>
        </dd>

        <dt><code>--enable-modules=<var>modül-listesi</var></code></dt>
        <dd>Bu seçenek modülleri devingen değil de durağan ilintilemek dışında
          <code>--enable-mods-shared</code> seçeneğine benzer. Yani bu
          modüller <code class="program"><a href="../programs/httpd.html">httpd</a></code> çalıştırılır çalıştırılmaz etkin
          olurlar. Yüklenmeleri için <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesine ihtiyaçları
          yoktur.</dd>

        <dt><code>--enable-v4-mapped</code></dt>
        <dd>IPv6 soketlierinin IPv4 bağlantılar üzerinde kullanılması mümkün
          olur.</dd>

        <dt><code>--with-port=<var>port</var></code></dt>
        <dd>Bu seçenek <code class="program"><a href="../programs/httpd.html">httpd</a></code>'nin dinleyeceği portu
          belirler. Bu port <code>httpd.conf</code> yapılandırma dosyası
          üretilirken kullanılır. 80. port öntanımlıdır.</dd>

        <dt><code>--with-program-name</code></dt>
        <dd>Öntanımlı olan <code>httpd</code> yerine başka bir çalıştırabilir
          ismi tanımlar.</dd>
      </dl>
    
  

  <h3><a name="packages" id="packages">Seçimlik paketler</a></h3>
    <p>Buradaki seçenekler seçimlik paketleri tanımlamak için kullanılır.</p>

    <h4><a name="generalpackages" id="generalpackages">Genel sözdizimi</a></h4>
      <p>Bir seçimlik paketi tanımlamak için genellikle şöyle bir sözdizimi
        kullanılır:</p>

      <dl>
        <dt><code>--with-<var>paket</var>[=<var>değer</var>]</code></dt>
        <dd><code><var>paket</var></code> paketi kullanılır. Öntanımlı
          <code><var>değer</var></code> <code>yes</code>’tir.</dd>

        <dt><code>--without-<var>paket</var></code></dt>
        <dd><code><var>paket</var></code> paketi kullanılmaz. Öntanımlı
          <code><var>değer</var></code> <code>no</code>’dur. Bu seçenek
          <code>autoconf</code> tarafından sağlanmıştır ve Apache HTTP
          Sunucusu için pek yararlı değildir.</dd>
      </dl>
    

    

    <h4><a name="packageopt" id="packageopt">Özel paketler</a></h4>
      <dl>
        <dt><code>--with-apr=<var>dizin</var>|<var>dosya</var></code></dt>
        <dd><a class="glossarylink" href="../glossary.html#apr" title="sözlüğe bakınız">Apache Taşınabilir Arayüzü</a> (APR)
          httpd kaynak paketinin bir parçası olup HTTP Sunucu ile birlikte
          derlenir. Eğer kendi kurulu APR’nizi kullanmak isterseniz bunu
          <code>configure</code> betiğine <code>apr-config</code> betiğinin
          yolunu belirterek ifade edebilirsiniz. Kurulu APR için bid dizin,
          dosya ismi veya mutlak dosya yolu belirtebilirsiniz.
          <code>apr-config</code> ya belirttiğiniz dizinde ya da
          <code>bin</code> alt dizininde bulunmalıdır.</dd>

        <dt><code>--with-apr-util=<var>dizin</var>|<var>dosya</var></code></dt>
        <dd>Apache Taşınabilir Arayüzü Araçları (APU) httpd kaynak paketinin
          bir parçası olup HTTP Sunucu ile birlikte derlenir. Eğer kendi
          kurulu APU’nuzu kullanmak isterseniz bunu <code>configure</code>
          betiğine <code>apu-config</code> betiğinin yolunu belirterek ifade
          edebilirsiniz. Kurulu APR için bir dizin, dosya ismi veya mutlak
          dosya yolu belirtebilirsiniz. <code>apr-config</code> ya
          belirttiğiniz dizinde ya da <code>bin</code> alt dizininde
          bulunmalıdır.</dd>

        <dt><code>--with-ssl=<var>dizin</var></code></dt>
        <dd><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> modülü etkinse <code>configure</code>
          betiği kurulu bir OpenSSL arayacaktır. Kendi SSL/TLS kurulumunuzun
          yolunu bu seçenekle belirtebilirsiniz.</dd>

        <dt><code>--with-z=<var>dizin</var></code></dt>
        <dd>Yapılandırmanız gerektirdiği takdirde (örneğin,
          <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> etkinse) <code>configure</code> betiği
          kurulu <code>zlib</code> kütüphanesinin yerini tespit etmeye
          çalışacaktır. Kendi sıkıştırma kütüphanenizin yerini bu seçenekle
          belirtebilirsiniz.</dd>
      </dl>

      <p>Apache HTTP Sunucusunun çeşitli bölümleri,
        <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> modülü ve <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
        modülünün <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
        yönergesi bilgilere erişimi hızlandırmak için basit anahtar/değer
        veritabanları kullanırlar. SDBM, APU içinde mevcut olduğundan bu
        veritabanı her zaman kullanılabilir durumdadır. Eğer başka veritabanı
        türleri kullanmak isterseniz aşağıdaki seçeneklerle bunları etkin
        kılabilirsiniz:</p>

      <dl>
        <dt><code>--with-gdbm[=<var>dizin-yolu</var>]</code></dt>
        <dd>Bir <code><var>dizin-yolu</var></code> belirtilmemişse
          <code>configure</code> betiği GNU DBM kurulumunun kütüphanelerini ve
          başlık dosyalarını bulunması olası yerlerde arar.  Bir
          <code><var>dizin-yolu</var></code> belirtilmişse
          <code>configure</code> betiği kurulumun kütüphanelerini
          <code><var>dizin-yolu</var>/lib</code> altında, başlık dosyalarını
          ise <code><var>dizin-yolu</var>/include</code> altında arayacaktır.
          Bundan başka, başlık ve kütüphane dosyalarının bulundukları yerler
          iki nokta imi ile ayrılarak <code><var>dizin-yolu</var></code>
          olarak belirtilebilir.</dd>

        <dt><code>--with-ndbm[=<var>dizin-yolu</var>]</code></dt>
        <dd>New DBM kurulumunu araştırması dışında <code>--with-gdbm</code>
          seçeneği gibidir.</dd>

        <dt><code>--with-berkeley-db[=<var>dizin-yolu</var>]</code></dt>
        <dd>Berkeley DB kurulumunu araştırması dışında
          <code>--with-gdbm</code> seçeneği gibidir.</dd>
      </dl>

      <div class="note"><h3>Bilginize</h3>
        <p>DBM seçenekleri APU tarafından sağlanmış olup onun yapılandırma
          betiğine aktarılır. Bu seçenekler <code>--with-apr-util</code>
          seçeneği ile tanımlanmış bir kurulu APU varsa kullanışlı olur.</p>
        <p>HTTP sunucunuz ile birlikte birden fazla DBM gerçeklenimi
          kullanabilirsiniz. Kullanılacak DBM türünü her zaman çalışma anı
          yapılandırmanızla yapılandırabilirsiniz.</p>
      </div>
    
  

  <h3><a name="supportopt" id="supportopt">Destek programları için seçenekler</a></h3>
    <dl>
      <dt><code>--enable-static-support</code></dt>
      <dd>Destek programlarını durağan ilintili olarak derler. Yani
        çalıştırılabilirin kullandığı bütün kütüphaneler kodla
        bütünleştirilir. Bu seçenek belirtilmedikçe destek programları daima
        devingen ilintili olarak derlenir.</dd>

      <dt><code>--enable-suexec</code></dt>
      <dd>Çatallanan sürecin kullanıcı ve grup kimliklerinin
        değiştirilebilmesini sağlayan <code class="program"><a href="../programs/suexec.html">suexec</a></code> programının
        kullanımını etkinleştirir. <strong>Sunucunuz üzerinde suid biti
        etkinleştirilmiş bir program çalıştırmanın sistem güvenliğinde
        yaratacağı sorunlar hakkında bir fikriniz yoksa bu seçeneği
        etkinleştirmeyin</strong>. <code class="program"><a href="../programs/suexec.html">suexec</a></code> yapılandırma
        seçenekleri <a href="#suexec">aşağıda</a> açıklanmıştır.</dd>
    </dl>

    <p>Tek bir destek programını aşağıdaki seçenekleri kullanarak bir durağan
      ilintili çalıştırılabilir olarak derleyebilirsiniz:</p>

    <dl>
      <dt><code>--enable-static-ab</code></dt>
      <dd><code class="program"><a href="../programs/ab.html">ab</a></code> programının durağan ilintili sürümü
        derlenir.</dd>

      
      <dt><code>--enable-static-checkgid</code></dt>
      <dd><code>checkgid</code> programının durağan ilintili sürümü
        derlenir.</dd>

      <dt><code>--enable-static-htdbm</code></dt>
      <dd><code class="program"><a href="../programs/htdbm.html">htdbm</a></code> programının durağan ilintili sürümü
        derlenir.</dd>

      <dt><code>--enable-static-htdigest</code></dt>
      <dd><code class="program"><a href="../programs/htdigest.html">htdigest</a></code> programının durağan ilintili sürümü
        derlenir.</dd>

      <dt><code>--enable-static-htpasswd</code></dt>
      <dd><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> programının durağan ilintili sürümü
        derlenir.</dd>

      <dt><code>--enable-static-logresolve</code></dt>
      <dd><code class="program"><a href="../programs/logresolve.html">logresolve</a></code> programının durağan ilintili sürümü
        derlenir.</dd>

      <dt><code>--enable-static-rotatelogs</code></dt>
      <dd><code class="program"><a href="../programs/rotatelogs.html">rotatelogs</a></code> programının durağan ilintili sürümü
        derlenir.</dd>
    </dl>

    <h4><a name="suexec" id="suexec"><code>suexec</code> yapılandırma seçenekleri</a></h4>
      

      <p>Aşağıdaki seçeneklerle <code class="program"><a href="../programs/suexec.html">suexec</a></code> programının
        davranışı hassas bir şekilde ayarlanabilir. Daha ayrıntılı bilgi için
        <a href="suexec.html#install">suEXEC yapılandırması ve kurulumu</a>na
        bakınız.</p>

      <dl>
        <dt><code>--with-suexec-bin</code></dt>
        <dd>Bu seçenek ile <code class="program"><a href="../programs/suexec.html">suexec</a></code> çalıştırılabilirinin yeri
          belirtilir. Öntanımlı olarak <code>--sbindir</code> ile belirtilen
          dizine kurulur (<a href="#directoryfinetuning">Kurulum dizinlerinde
          ince ayar</a> konusuna bakınız).</dd>

        <dt><code>--with-suexec-caller</code></dt>
        <dd>Bu seçenek ile <code class="program"><a href="../programs/suexec.html">suexec</a></code>’i çalıştırabilecek
          kullanıcı belirtilir. Normalde <code class="program"><a href="../programs/httpd.html">httpd</a></code> programını
          çalıştıran kullanıcı olmalıdır.</dd>

        <dt><code>--with-suexec-docroot</code></dt>
        <dd>Bu seçenek ile <code class="program"><a href="../programs/suexec.html">suexec</a></code>'e erişebilecek
          çalıştırılabilirlerin altında bulunacağı dizin belirtilir.
          <code>--datadir/htdocs</code> öntanımlıdır.</dd>

        <dt><code>--with-suexec-gidmin</code></dt>
        <dd><code class="program"><a href="../programs/suexec.html">suexec</a></code> için hedef kullanıcı olmasına izin
          verilen en küçük grup kimliğini tanımlamak için kullanılır. 100
          öntanımlıdır.</dd>

        <dt><code>--with-suexec-logfile</code></dt>
        <dd><code class="program"><a href="../programs/suexec.html">suexec</a></code> günlük dosyasının ismi belirtilir.
          Öntanımlı olarak bu dosyanın ismi <code>suexec_log</code> olup
          <code>--logfiledir</code> seçeneği ile belirtilen dizin altında
          bulunur.</dd>

        <dt><code>--with-suexec-safepath</code></dt>
        <dd><code class="program"><a href="../programs/suexec.html">suexec</a></code> tarafından çalıştırılacak süreçlerin
          çalıştırılabilirlerinin bulunabileceği dizinleri <code>PATH</code>
          ortam değişkenine tanımlamak için kullanılır.
          <code>/usr/local/bin:/usr/bin:/bin</code> öntanımlıdır.</dd>

        <dt><code>--with-suexec-userdir</code></dt>
        <dd>Bu seçenek, kullanıcı dizinleri altında <code class="program"><a href="../programs/suexec.html">suexec</a></code>
          tarafından çalıştırılacak süreçlerin çalıştırılabilirlerinin
          bulunabileceği alt dizini tanımlar. <code class="program"><a href="../programs/suexec.html">suexec</a></code>
          programını (<code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> tarafından sağlanan)
          kullanıcıya özel dizinlerde  kullanmak istediğinizde bu gereklidir.
          <code>public_html</code> alt dizini öntanımlıdır.</dd>

        <dt><code>--with-suexec-uidmin</code></dt>
        <dd><code class="program"><a href="../programs/suexec.html">suexec</a></code> için hedef kullanıcı olmasına izin
          verilen en küçük kullanıcı kimliğini tanımlamak için kullanılır.
          100 öntanımlıdır.</dd>

        <dt><code>--with-suexec-umask</code></dt>
        <dd><code class="program"><a href="../programs/suexec.html">suexec</a></code> tarafından çalıştırılacak süreçler için
          <code>umask</code> tanımlar. Sisteminiz için geçerli ayarlar
          öntanımlıdır.</dd>
      </dl>
    
  
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="env" id="env">Ortam Değişkenleri</a></h2>
  <p><code>configure</code> betiğinin yerleri ve isimleri standartlara uygun
    olmayan kütüphaneleri ve programları bulmasını yardımcı olan veya
    <code>configure</code> betiği tarafından yapılan bazı seçimleri
    değiştirmenizi sağlayacak bazı ortam değişkenleri vardır.</p>

  
  <dl>
    <dt><code>CC</code></dt>
    <dd>Bu değişkenle derleme sırasında kullanılacak C derleyici komutu
      tanımlanır.</dd>

    <dt><code>CFLAGS</code></dt>
    <dd>Bu değişkenle derleme sırasında kullanılacak C derleyici seçenekleri
      tanımlanır.</dd>

    <dt><code>CPP</code></dt>
    <dd>Bu değişkenle derleme sırasında kullanılacak C önişlemci komutu
      tanımlanır.</dd>

    <dt><code>CPPFLAGS</code></dt>
    <dd>C/C++ önişlemci seçenekleri tanımlanır. Örneğin, eğer başlık
      dosyaları standart yerlerinde değil de
      <code><var>includedir</var></code> dizinindeyse bunu
      <code>-I<var>includedir</var></code> seçeneği olarak
      belirtebilirsiniz.</dd>

    <dt><code>LDFLAGS</code></dt>
    <dd>İlintileyici seçenekleri tanımlanır. Örneğin, eğer kütüphane
      dosyalarınız standart yerlerinde değil de
      <code><var>libdir</var></code> dizinindeyse bunu
      <code>-L<var>libdir</var></code> seçeneği olarak belirtebilirsiniz.</dd>
  </dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                     programs/dbmmanage.html                                                                             100644       0       0        26331 11256641270  12671  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>dbmmanage - DBM biçemli kullanıcı kimlik doğrulama dosyalarını yönetir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>dbmmanage - DBM biçemli kullanıcı kimlik doğrulama dosyalarını yönetir</h1>


    <p><code><strong>dbmmanage</strong></code>,
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> üzerinden HTTP kullanıcılarının temel
    kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının
    saklanmasında kullanılacak DBM dosyalarını oluşturmak ve güncellemek için
    kullanılır. Apache HTTP sunucusunun mevcut özkaynaklarının kullanımı
    sadece <code><strong>dbmmanage</strong></code> tarafından oluşturulan
    dosyalarda listelenmiş kullanıcılara tahsis edilebilir. Bu program
    sadece, kullanıcı isimleri bir DBM dosyasında saklanmak istenirse işe
    yarar. Düz metin bir veritabanı kullanmak isterseniz
    <strong><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code></strong> sayfasına bakınız.</p>

    <p>Bu kılavuz sayfası sadece komut satırı değiştirgelerini listeler.
    Kullanıcı kimlik doğrulamasını
    <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong>'de yapılandırmak için gerekli
    yönergelerle ilgili ayrıntılar için Apache dağıtımının bir parçası olan
    ve <a href="http://httpd.apache.org/"> http://httpd.apache.org/</a>
    adresinde de bulunan Apache HTTP Sunucusu Belgelerine bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#bugs">Hatalar</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li><li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>dbmmanage</strong> [ <var>kodlama</var> ]
    <var>dosyaismi</var> add|adduser|check|delete|update
    <var>kullanıcı</var>
    [ <var>şifreli_parola</var>
      [ <var>grup</var>[,<var>grup</var>...]
        [ <var>açıklama</var> ] ] ]</code></p>

    <p><code><strong>dbmmanage</strong> <var>dosyaismi</var>
    view [ <var>kullanıcı</var> ]</code></p>

    <p><code><strong>dbmmanage</strong> <var>dosyaismi</var> import</code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><var>dosyaismi</var></code></dt>
    <dd>DBM dosyasının ismi. Genellikle, <code>.db</code>, <code>.pag</code>
    veya <code>.dir</code> eklentisi olmaksızın belirtilir.</dd>

    <dt><code><var>kullanıcı</var></code></dt>
    <dd>İşlemleri gerçekleştirecek kullanıcı ismi.
    <code><var>kullanıcı</var></code> ismi ikinokta imi (<code>:</code>)
    içeremez.</dd>

    <dt><code><var>şifreli_parola</var></code></dt>
    <dd><code><strong>update</strong></code> ve
    <code><strong>add</strong></code> komutları için kullanılacak şifreli
    paroladır. Parolanın istenmesini sağlamak, fakat hemen ardından alanları
    doldurmak için bir tire imi (<code>-</code>) kullanabilirsiniz. Buna ek
    olarak, <code><strong>update</strong></code> komutunu kullanırken özgün
    parolaya dokunulmaması için bir nokta imi (<code>.</code>)
    kullanabilirsiniz.</dd>

    <dt><code><var>grup</var></code></dt>
    <dd>Kullanıcının üyesi olduğu grup. Grup ismi ikinokta imi
    (<code>:</code>) içeremez.Kullanıcıyı bir gruba atamadan açıklama alanını
    doldurmak istiyorsanız bir tire imi (<code>-</code>) kullanabilirsiniz.
    Buna ek olarak, <code><strong>update</strong></code> komutunu kullanırken
    özgün gruba dokunulmaması için bir nokta imi (<code>.</code>)
    kullanabilirsiniz.</dd>

    <dt><code><var>açıklama</var></code></dt>
    <dd>Adı ve soyadı, eposta adresi gibi kullanıcıyla ilgili bir takım
    bilgiler buraya yazılır. Sunucu bu alanı gözardı eder.</dd>
    </dl>

    <h3><a name="options.encodings" id="options.encodings">Kodlamalar</a></h3>
      <dl>
      <dt><code><strong>-d</strong></code></dt>
      <dd>CRYPT şifrelemesi (Win32 ve Netware hariç, öntanımlı)</dd>

      <dt><code><strong>-m</strong></code></dt>
      <dd>MD5 şifrelemesi (Win32 ve Netware için öntanımlı)</dd>

      <dt><code><strong>-s</strong></code></dt>
      <dd>SHA1 şifrelemesi</dd>

      <dt><code><strong>-p</strong></code></dt>
      <dd>düz metin (<em>önerilmez</em>)</dd>
      </dl>
    

    <h3><a name="options.commands" id="options.commands">Komutlar</a></h3>
      <dl>
      <dt><code><strong>add</strong></code></dt>
      <dd><code><var>şifreli_parola</var></code>'yı kullanarak
        <code><var>dosyaismi</var></code> dosyasına
        <code><var>kullanıcı</var></code> için bir girdi ekler.

      <div class="example"><p><code>dbmmanage passwords.dat add rbowen foKntnEF3KSXA</code></p></div>
      </dd>

      <dt><code><strong>adduser</strong></code></dt>
      <dd>Parola sorduktan sonra <code><var>dosyaismi</var></code>
        dosyasına <code><var>kullanıcı</var></code> için bir girdi ekler.

      <div class="example"><p><code>dbmmanage passwords.dat adduser krietz</code></p></div>
      </dd>

      <dt><code><strong>check</strong></code></dt>
      <dd>Parola sorduktan sonra belirtilen <code><var>kullanıcı</var></code>,
        <code><var>dosyaismi</var></code> dosyasında var mı diye bakar; varsa
        belirtilen parolayı kullanıcınınkiyle eşleştirmeye çalışır.

      <div class="example"><p><code>dbmmanage passwords.dat check rbowen</code></p></div>
      </dd>

      <dt><code><strong>delete</strong></code></dt>
      <dd><code><var>dosyaismi</var></code> dosyasından
        <code><var>kullanıcı</var></code> girdisini siler.

      <div class="example"><p><code>dbmmanage passwords.dat delete rbowen</code></p></div>
      </dd>

      <dt><code><strong>import</strong></code></dt>
      <dd>Standart girdiden
        <code><var>kullanıcı</var>:<var>parola</var></code> satırlarını (her
        satırda bir tane) okur ve bunları <code><var>dosyaismi</var></code>
        dosyasına ekler. Parola şifrelenmiş olmalıdır.</dd>

      <dt><code><strong>update</strong></code></dt>
      <dd>Belirtilen <code><var>kullanıcı</var></code>'nın
        <code><var>dosyaismi</var></code> dosyasında mevcut olması dışında
        <code><strong>adduser</strong></code> komutu gibidir.

      <div class="example"><p><code>dbmmanage passwords.dat update rbowen</code></p></div>
      </dd>

      <dt><code><strong>view</strong></code></dt>
      <dd>Sadece, DBM dosyasının içeriğini gösterir. Bir
        <code><var>kullanıcı</var></code> belirtirseniz sadece o kaydı
        gösterir.

      <div class="example"><p><code>dbmmanage passwords.dat view</code></p></div>
      </dd>
      </dl>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="bugs" id="bugs">Hatalar</a></h2>
    <p>Birden fazla DBM dosya biçemi vardır ve büyük bir olasılıkla da
    sisteminizde bu birden fazla biçemle ilgili kütüphaneler vardır. SDBM,
    NDBM, GNU'nun GDBM projesi ve Berkeley DB 2 bunların başlıcalarıdır. Ne
    yazık ki, bu kütüphanelerin her birinin dosya biçimleri farklıdır. Bu
    bakımdan, <code><var>dosyaismi</var></code> dosyasında kullanılan dosya
    biçeminin <code><strong>dbmmanage</strong></code> tarafından kullanılanla
    aynı biçemde olduğundan emin olmalısınız.
    <code><strong>dbmmanage</strong></code> hangi tür DBM dosyasına baktığını
    saptayacak yeterliliğe sahip değildir. Yanlış biçemli bir dosya
    belirtirseniz hiçbir şey dönmeyebileceği gibi, başka isimde bir DBM
    dosyasının oluşturulması veya daha da kötüsü üzerine yazmaya
    çalışıyorsanız DBM dosyasının bozulması bile olasıdır.</p>

    <p><code><strong>dbmmanage</strong></code> programının başlangıcında
    <code>@AnyDBM::ISA</code> dizisi olarak tanımlanmış DBM biçem
    tercihlerinin bir listesi vardır. Berkeley DB 2 biçemini tercih
    ettiğimizden <code><strong>dbmmanage</strong></code> sistem
    kütüphanelerini şu sıraya göre arar: Berkeley DB 2, NDBM, GDBM ve SDBM.
    <code><strong>dbmmanage</strong></code> DBM dosyası hareketleri için  bu
    sıralamaya göre bulduğu ilk kütüphaneyi kullanacaktır. Sıralama Perl'deki
    <code>dbmopen()</code> çağrısının kullandığından faklı olduğu gibi
    Perl'deki standart <code>@AnyDBM::ISA</code> sıralamasından da oldukça
    farklıdır. Bu bakımdan, DBM dosyalarınızı yönetmek için Perl ile yazılmış
    başka araçlar kullanıyorsanız, onların da bu tercih sırasını izlemesini
    sağlamalısınız. Benzer şekilde, bu dosyalara erişmek için diğer dillerde
    (C gibi) yazılmış programlar kullanıyorsanız bunlar için de aynı durum
    geçerlidir.</p>

    <p>Unix sistemlerinde, kullanılan DBM dosyasının biçemini öğrenmek için
    <code><strong>file</strong></code> programı kullanılabilir.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                       programs/htcacheclean.html                                                                          100644       0       0        15561 11256641270  13363  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>htcacheclean - Disk arabelleğini temizler - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>htcacheclean - Disk arabelleğini temizler</h1>


    <p><code><strong>htcacheclean</strong></code>,
    <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> deposunun boyutlarını belli sınırlar
    içinde tutmak için kullanılır. Bu araç ya elle ya da bir artalan süreci
    olarak çalıştırılır. Artalan süreci olarak çalıştırıldığında, silinecek
    arabellek içeriğini tespit etmek için arabellek dizinlerine belli
    aralıklarla bakmak dışında uykuda olur. Artalan sürecini temiz olarak
    durdurmak için TERM veya INT sinyali göndermeniz yeterlidir.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exit">Çıkış Durumu</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>htcacheclean</strong>
    [ -<strong>D</strong> ]
    [ -<strong>v</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>r</strong> ]
    [ -<strong>n</strong> ]
    -<strong>p</strong><var>yol</var>
    -<strong>l</strong><var>sınır</var></code></p>

    <p><code><strong>htcacheclean</strong>
    [ -<strong>n</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>i</strong> ]
    -<strong>d</strong><var>süre</var>
    -<strong>p</strong><var>yol</var>
    -<strong>l</strong><var>sınır</var></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Options</a></h2>
    <dl>
    <dt><code><strong>-d</strong><var> süre</var></code></dt>
    <dd>Artalanda çalışarak <code><var>süre</var></code> dakikada bir
    arabelleği temizler. Bu seçenek <code><strong>-D</strong></code>,
    <code><strong>-v</strong></code> ve <code><strong>-r</strong></code>
    seçenekleri ile birlikte kullanılamaz. Artalan sürecini temiz olarak
    sonlandırmak için <code>SIGTERM</code> veya <code>SIGINT</code> göndermek
    yeterlidir.</dd>

    <dt><code><strong>-D</strong></code></dt>
    <dd>Kuru kuruya çalışıp, hiçbir şeyi silmez.
    <code><strong>-d</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-v</strong></code></dt>
    <dd>Çıktı daha ayrıntılı olur. <code><strong>-d</strong></code> seçeneği
    ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-r</strong></code></dt>
    <dd>İyice temizlik yapılır. Bunun için Apache HTTP sunucusunun
    çalışmadığı varsayılır (aksi takdirde arabellek içeriği bozulabilir).
    <code><strong>-t</strong></code> seçeneğinin de uygulanmasını sağlar.
    <code><strong>-d</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-n</strong></code></dt>
    <dd>Nazik olur. Diğer süreçlerin yararına daha yavaş çalışır. (a) disk
    G/Ç işlemlerinde gecikmeler olursa ve (b) çekirdek bu arada başka bir
    süreci öne çekmişse <code><strong>htcacheclean</strong></code> uyumayı
    tercih edecektir.</dd>

    <dt><code><strong>-t</strong></code></dt>
    <dd>Tüm boş dizinleri siler. Öntanımlı olarak, sadece arabellek dosyaları
    silinirse de bazı yapılandırmalarda büyük miktarda dizin oluşturulması bu
    seçeneğin kullanılmasını gerektirebilir. Yapılandırmanız çok sayıda dizin
    gerektiriyorsa ve dosya düğümlerinin veya dosya ayırma tablolarının
    tükenmesi sözkonusu ise bu seçeneğin kullanılması önerilir.</dd>

    <dt><code><strong>-p</strong><var> yol</var></code></dt>
    <dd><code><var>yol</var></code>, disk arabelleğinin kök dizini olarak
    belirtilir. <code class="directive"><a href="../mod/mod_disk_cache.html#cacheroot">CacheRoot</a></code>
    yönergesinde belirtilen dizin olmalıdır.</dd>

    <dt><code><strong>-l</strong><var> sınır</var></code></dt>
    <dd><code><var>sınır</var></code>, disk arabelleğinin toplam boyutu
    olarak belirtilir. Değerin öntanımlı olarak bayt cinsinden belirtileceği
    varsayılır. Değerin sonuna kilobayt için <code>K</code>, megabayt
    <code>M</code>, bayt için <code>B</code>  harfi konulabilir.</dd>

    <dt><code><strong>-i</strong></code></dt>
    <dd>Akıllı olup sadece disk arabelleği değiştiği zaman çalışır. Bu
    seçenek <code><strong>-d</strong></code> seçeneği ile birlikte
    belirtilmek zorundadır.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exit" id="exit">Çıkış Durumu</a></h2>
    <p><code><strong>htcacheclean</strong></code>, tüm işlemler başarıyla
    yerine getirildiğinde <code>0</code>, aksi takdirde <code>1</code>
    döndürür.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                               programs/htdbm.html                                                                                 100644       0       0        35324 11256641270  12056  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>htdbm - DBM parola veritabanlarını yönetir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>htdbm - DBM parola veritabanlarını yönetir</h1>


    <p><code><strong>htdbm</strong></code>,
    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> üzerinden HTTP kullanıcılarının temel
    kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının
    saklanmasında kullanılacak DBM dosyalarını yönetmek için kullanılır. DBM
    dosyaları hakkında daha ayrıntılı bilgi edinmek için
    <strong><code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code></strong> sayfasına bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#bugs">Hatalar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exit">Çıkış Durumu</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Güvenlik Değerlendirmeleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#restrictions">Kısıtlamalar</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code></li><li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>htdbm</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    [ -<strong>x</strong> ]
    <var>parola-dosyası</var> <var>kullanıcı</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>b</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    <var>parola-dosyası</var> <var>kullanıcı</var> <var>parola</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>n</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    <var>kullanıcı</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>nb</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    <var>kullanıcı</var> <var>parola</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>v</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    <var>parola-dosyası</var> <var>kullanıcı</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>vb</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>t</strong> ]
    [ -<strong>v</strong> ]
    <var>parola-dosyası</var> <var>kullanıcı</var> <var>parola</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>x</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    <var>parola-dosyası</var> <var>kullanıcı</var></code></p>

    <p><code><strong>htdbm</strong> -<strong>l</strong>
    [ -<strong>T</strong><var>VTtürü</var> ]
    </code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><strong>-b</strong></code></dt>
    <dd>Betik kipi; parola için istek yapmak yerine parola komut satırından
    verilir. <strong>Parola komut satırında görünür</strong> olacağından çok
    dikkatli kullanmak gerekir.</dd>

    <dt><code><strong>-c</strong></code></dt>
    <dd><code><var>parola-dosyası</var></code> oluşturur. Dosya mevcutsa,
    dosya silinip yeniden yazılır. Bu seçenek
    <code><strong>-n</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-n</strong></code></dt>
    <dd>Sonuçları veritabanında güncellemek yerine standart çıktıya gönderir.
    <code><var>parola-dosyası</var></code> belirtilmediğinden, bu seçenek
    komut satırı sözdizimini değiştirir. Bu seçenek
    <code><strong>-c</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-m</strong></code></dt>
    <dd>Parolalar için MD5 şifrelemesi kullanılır. Windows, Netware ve TPF
    için öntanımlıdır.</dd>

    <dt><code><strong>-d</strong></code></dt>
    <dd>Parolaları şifrelemek için <code>crypt()</code> kullanılır. Windows,
    Netware ve TPF dışında öntanımlıdır.
    <code><strong>htdbm</strong></code> tarafından tüm platformlarda
    destekleniyor olsa da Windows, Netware ve TPF üzerinde
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> sunucusu tarafından desteklenmez.</dd>

    <dt><code><strong>-s</strong></code></dt>
    <dd>Parolalar için SHA şifrelemesi kullanılır. LDAP Dizin değişim
    biçemini (ldif) kullanarak Netscape sunucularına/sunucularından göçü
    kolaylaştırır.</dd>

    <dt><code><strong>-p</strong></code></dt>
    <dd>Düz metin parolalar kullanılır. <code><strong>htdbm</strong></code>
    tarafından tüm platformlarda destekleniyor olsa da Windows, Netware ve
    TPF üzerinde <code class="program"><a href="../programs/httpd.html">httpd</a></code> sunucusu tarafından sadece düz
    metin parolalar kabul edilir.</dd>

    <dt><code><strong>-l</strong></code></dt>
    <dd>Veritabanındaki kullanıcıları açıklamalarıyla birlikte standart
    çıktıya gönderir.</dd>

    <dt><code><strong>-t</strong></code></dt>
    <dd>Son değiştirgenin bir açıklama olarak yorumlanmasını sağlar. Bu
    seçenek kullanıldığında komut satırının sonuna fazladan bir dizge
    eklenebilir. Bu dizge, veritabanında belirtilen kullanıcının "Comment"
    alanında saklanır.</dd>

    <dt><code><strong>-v</strong></code></dt>
    <dd>Kullanıcı adını ve parolasını doğrular. Program belirtilen parolanın
    geçerli olup olmadığını belirten bir ileti basar. Eğer parola geçersizse
    program hata kodu 3 ile çıkar.</dd>

    <dt><code><strong>-x</strong></code></dt>
    <dd>Kullanıcıyı siler. Kullanıcı belirtilen DBM dosyasında mevcutsa
    silinir.</dd>

    <dt><code><var>parola-dosyası</var></code></dt>
    <dd>DBM dosyasının ismi. Genellikle, <code>.db</code>, <code>.pag</code>
    veya <code>.dir</code> eklentisi olmaksızın belirtilir.
    <code><strong>-c</strong></code> seçeneği ile birlikte verilmişse ve DBM
    dosyası mevcut değilse dosya oluşturulur, mevcutsa dosya güncellenir.</dd>

    <dt><code><var>kullanıcı</var></code></dt>
    <dd><code><var>parola-dosyası</var></code>'nda oluşturulacak veya
    güncellenecek kullanıcı ismi. <code><var>kullanıcı</var></code> bu
    dosyada mevcut değilse yeni bir girdi eklenir. Girdi mevcutsa parolası
    değiştirilir.</dd>

    <dt><code><var>parola</var></code></dt>
    <dd>Şifrelenip DBM dosyasında saklanacak düz metin parola. Sadece
    <code><strong>-b</strong></code> seçeneği ile kullanılır.</dd>

    <dt><code><strong>-T</strong> <var>VTtürü</var></code></dt>
    <dd>DBM dosyasının türü; SDBM, GDBM, DB, veya "default" olabilir.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="bugs" id="bugs">Hatalar</a></h2>
    <p>Birden fazla DBM dosya biçemi vardır ve büyük bir olasılıkla da
    sisteminizde bu birden fazla biçemle ilgili kütüphaneler vardır. SDBM,
    NDBM, GNU'nun GDBM projesi ve Berkeley/Sleepycat DB 2/3/4 bunların
    başlıcalarıdır. Ne yazık ki, bu kütüphanelerin her birinin dosya
    biçimleri farklıdır. Bu bakımdan, <code><var>dosyaismi</var></code>
    dosyasında kullanılan dosya biçeminin <code><strong>htdbm</strong></code>
    tarafından kullanılanla aynı biçemde olduğundan emin olmalısınız.
    <code><strong>htdbm</strong></code> hangi tür DBM dosyasına baktığını
    saptayacak yeterliliğe sahip değildir. Yanlış biçemli bir dosya
    belirtirseniz hiçbir şey dönmeyebileceği gibi, başka isimde bir DBM
    dosyasının oluşturulması veya daha da kötüsü üzerine yazmaya
    çalışıyorsanız DBM dosyasının bozulması bile olasıdır.</p>

    <p>Unix sistemlerinde, kullanılan DBM dosyasının biçemini öğrenmek için
    <code><strong>file</strong></code> programı kullanılabilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exit" id="exit">Çıkış Durumu</a></h2>
    <p><code><strong>htdbm</strong></code>, kullanıcı ismi ve parolasını DBM
    dosyasına başarıyla eklemiş veya güncellemişse <code>0</code>, dosyalara
    erişirken bir sorun çıkmışsa <code>1</code>, komut satırında bir
    sözdizimi hatası varsa <code>2</code>, parola etkileşimli alınmış fakat
    girdi ile eşleşme sağlanamamışsa <code>3</code>, işlem kesintiye
    uğramışsa <code>4</code>, bir değer çok uzunsa <code>5</code> (kullanıcı,
    parola, dosya ismi veya açıklama), kullanıcı ismi kuraldışı karakter
    içeriyorsa (<a href="#restrictions">Kısıtlamalar</a> bölümüne bakınız)
    <code>6</code> ve dosya geçerli bir DBM parola dosyası değilse
    <code>7</code> değeriyle döner.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    <div class="example"><p><code>
      htdbm /usr/local/etc/apache/.htdbm-users jsmith
    </code></p></div>

    <p><code>jsmith</code> kullanıcısı için parolayı ekler veya değiştirir.
    Parolayı vermesi için kullanıcıya parola isteği yapılır. Windows üzerinde
    çalıştırılırsa parola Apache MD5 algoritması ile şifrelenir, aksi
    takdirde sistemin <code>crypt()</code> yordamı kullanılır. Dosya mevcut
    değilse <code><strong>htdbm</strong></code> beklenen hiçbir işlemi
    yapmadan bir hata vererek çıkar.</p>

    <div class="example"><p><code>
      htdbm -c /home/doe/public_html/.htdbm jane
    </code></p></div>

    <p>Yeni bir dosya oluşturur ve kullanıcı <code>jane</code> için kaydı bir
    girdi olarak bu dosyaya yazar. Dosya mevcutsa fakat okunamıyor veya
    yazılamıyorsa dosyada bir değişiklik yapılmaz ve
    <code><strong>htdbm</strong></code> bir ileti gösterip bir hata durumu
    ile çıkar.</p>

    <div class="example"><p><code>
      htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve
    </code></p></div>

    <p>Komut satırından verilen parolayı (<code>Pwd4Steve</code>) MD5
    algoritmasıyla şifreler ve bunu belirtilen dosyada saklar.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Değerlendirmeleri</a></h2>
    <p><code><strong>htdbm</strong></code> tarafından yönetilen parola
    dosyalarına sunucunun URI uzayından erişilememelidir; yani dosya bir
    tarayıcı ile okunabilecek bir yerde bulunmamalıdır.</p>

    <p>Komut satırında parolanın şifrelenmemiş olarak görünmesi sebebiyle
    <code><strong>-b</strong></code> seçeneğinin kullanımından kaçınılmasını
    öneriyoruz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="restrictions" id="restrictions">Kısıtlamalar</a></h2>
    <p>Windows ve MPE platformlarında, <code><strong>htdbm</strong></code>
    ile şifrelenen parolalar <code>255</code> karakterden daha uzun olamaz.
    255 karakterden sonrası kırpılır.</p>

    <p><code><strong>htdbm</strong></code> tarafından kullanılan MD5
    algoritması Apache yazılımına özeldir; bu algoritma ile şifrelenen
    parolalar başka HTTP sunucularında kullanılamayabilir.</p>

    <p>Kullanıcı isimleri <code>255</code> bayttan uzun olamaz ve iki nokta
    imi (<code>:</code>) içeremez.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                            programs/htdigest.html                                                                              100644       0       0        12016 11256641270  12564  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>htdigest - Özet kimlik doğrulama dosyalarını yönetir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>htdigest - Özet kimlik doğrulama dosyalarını yönetir</h1>


    <p><code><strong>htdigest</strong></code>, HTTP kullanıcılarının digest
    türü kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının
    saklanmasında kullanılacak düz metin dosyalarını oluşturmak ve güncellemek
    için kullanılır. Apache HTTP sunucusunun mevcut özkaynaklarının kullanımı
    sadece <code><strong>htdigest</strong></code> tarafından oluşturulan
    dosyalarda listelenmiş kullanıcılara tahsis edilebilir.</p>

    <p>Bu kılavuz sayfası sadece komut satırı değiştirgelerini listeler.
    Kullanıcı kimlik doğrulamasını
    <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong>'de yapılandırmak için gerekli
    yönergelerle ilgili ayrıntılar için Apache dağıtımının bir parçası olan
    ve <a href="http://httpd.apache.org/"> http://httpd.apache.org/</a>
    adresinde de bulunan Apache HTTP Sunucusu Belgelerine bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Güvenlik Değerlendirmeleri</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>htdigest</strong> [ -<strong>c</strong> ]
    <var>parola-dosyası</var> <var>bölge</var> <var>kullanıcı</var></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><strong>-c</strong></code></dt>
    <dd><code><var>parola-dosyası</var></code> oluşturur. Dosya mevcutsa,
    dosya silinip yeniden yazılır.</dd>

    <dt><code><var>parola-dosyası</var></code></dt>
    <dd>Kullanıcı ismi, parola ve bölge bilgilerini içeren dosyanın ismi.
    <code><strong>-c</strong></code> seçeneği verilmişse ve dosya mevcut
    değilse oluşturulur, dosya mevcutsa silinip yeniden oluşturulur.</dd>

    <dt><code><var>bölge</var></code></dt>
    <dd>Kullanıcının mensup olduğu bölge ismi.</dd>

    <dt><code><var>kullanıcı</var></code></dt>
    <dd><code><var>parola-dosyası</var></code>'nda oluşturulacak veya
    güncellenecek kullanıcı ismi. <code><var>kullanıcı</var></code> bu
    dosyada mevcut değilse yeni bir girdi eklenir. Girdi mevcutsa parolası
    değiştirilir.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Değerlendirmeleri</a></h2>
    <p>Bu program bir setuid çalıştırılabiliri olarak güvenilir olmadığından
    <em>setuid yapılmamalıdır</em>.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  programs/htpasswd.html                                                                              100644       0       0        32134 11256641270  12611  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>htpasswd - Temel kimlik doğrulama dosyalarını yönetir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>htpasswd - Temel kimlik doğrulama dosyalarını yönetir</h1>


    <p><code><strong>htpasswd</strong></code>, HTTP kullanıcılarının temel
    kimlik doğrulaması için kullanıcı isimlerinin ve parolalarının
    saklanmasında kullanılacak düz metin dosyalarını oluşturmak ve güncellemek
    için kullanılır. <code><strong>htpasswd</strong></code>, güncelleme
    sırasında yazmak veya okumak için bir dosyaya erişemezse beklenen hiçbir
    işlemi yapmaz ve hata vererek çıkar.</p>

    <p>Apache HTTP sunucusunun mevcut özkaynaklarının kullanımı
    sadece <code><strong>htpasswd</strong></code> tarafından oluşturulan
    dosyalarda listelenmiş kullanıcılara tahsis edilebilir.
    <code><strong>htpasswd</strong></code> sadece düz metin dosyalarda
    saklanmış kullanıcı isimlerini ve parolalarını yönetirse de, diğer veri
    saklama türleri için parolayı şifreleyip gösterebilir. Bir DBM veritabanı
    kullanmak isterseniz <strong><code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code></strong>
    sayfasına bakınız.</p>

    <p><code><strong>htpasswd</strong></code>, parolaları şifrelemek için ya
    Apache'nin kendine özgü MD5 algoritmasını ya da sistemin
    <code>crypt()</code> yordamını kullanır. Bazı kullanıcılar MD5 şifreli
    parolalara, bazıları da <code>crypt()</code> ile şifrelenmiş parolalara
    sahip olabileceğinden <code><strong>htpasswd</strong></code> tarafından
    yönetilen dosyalar her iki tür parolayı da içerebilir.</p>

    <p>Bu kılavuz sayfası sadece komut satırı değiştirgelerini listeler.
    Kullanıcı kimlik doğrulamasını
    <strong><code class="program"><a href="../programs/httpd.html">httpd</a></code></strong>'de yapılandırmak için gerekli
    yönergelerle ilgili ayrıntılar için Apache dağıtımının bir parçası olan
    ve <a href="http://httpd.apache.org/"> http://httpd.apache.org/</a>
    adresinde de bulunan Apache HTTP Sunucusu Belgelerine bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#exit">Çıkış Durumu</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#security">Güvenlik Değerlendirmeleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#restrictions">Kısıtlamalar</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li>Kaynak paketinin support/SHA1 dizinindeki betikler.</li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>htpasswd</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> ]
    [ -<strong>D</strong> ] <var>parola-dosyası</var> <var>kullanıcı</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>b</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>D</strong> ]  <var>parola-dosyası</var> <var>kullanıcı</var>
    <var>parola</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>n</strong>
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>s</strong> |
      -<strong>p</strong> ] <var>kullanıcı</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>nb</strong>
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>s</strong> |
      -<strong>p</strong> ] <var>kullanıcı</var> <var>parola</var></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><strong>-b</strong></code></dt>
    <dd>Betik kipi; parola için istek yapmak yerine parola komut satırından
    verilir. <strong>Parola komut satırında görünür</strong> olacağından çok
    dikkatli kullanmak gerekir.</dd>

    <dt><code><strong>-c</strong></code></dt>
    <dd><code><var>parola-dosyası</var></code> oluşturur. Dosya mevcutsa,
    dosya silinip yeniden yazılır. Bu seçenek
    <code><strong>-n</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-n</strong></code></dt>
    <dd>Sonuçları veritabanında güncellemek yerine standart çıktıya gönderir.
    Bu seçenek, Apache'nin metin veriler içermeyen veri depolarına dahil
    edilebilecek parolaları üretmekte yararlıdır.
    <code><var>parola-dosyası</var></code> belirtilmediğinden, bu seçenek
    komut satırı sözdizimini değiştirir. Bu seçenek
    <code><strong>-c</strong></code> seçeneği ile birlikte kullanılamaz.</dd>

    <dt><code><strong>-m</strong></code></dt>
    <dd>Parolalar için MD5 şifrelemesi kullanılır. Windows, Netware ve TPF
    için öntanımlıdır.</dd>

    <dt><code><strong>-d</strong></code></dt>
    <dd>Parolaları şifrelemek için <code>crypt()</code> kullanılır. Windows,
    Netware ve TPF dışında öntanımlıdır.
    <code><strong>htpasswd</strong></code> tarafından tüm platformlarda
    destekleniyor olsa da Windows, Netware ve TPF üzerinde
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> sunucusu tarafından desteklenmez.</dd>

    <dt><code><strong>-s</strong></code></dt>
    <dd>Parolalar için SHA şifrelemesi kullanılır. LDAP Dizin değişim
    biçemini (ldif) kullanarak Netscape sunucularına/sunucularından göçü
    kolaylaştırır.</dd>

    <dt><code><strong>-p</strong></code></dt>
    <dd>Düz metin parolalar kullanılır. <code><strong>htpasswd</strong></code>
    tarafından tüm platformlarda destekleniyor olsa da Windows, Netware ve
    TPF üzerinde <code class="program"><a href="../programs/httpd.html">httpd</a></code> sunucusu tarafından sadece düz
    metin parolalar kabul edilir.</dd>

    <dt><code><strong>-D</strong></code></dt>
    <dd>Kullanıcıyı siler. Kullanıcı belirtilen dosyada mevcutsa
    silinir.</dd>

    <dt><code><var>parola-dosyası</var></code></dt>
    <dd>Kullanıcı ismini ve parolasını içeren dosyanın ismi.
    <code><strong>-c</strong></code> seçeneği verilmişse ve dosya mevcut
    değilse oluşturulur, dosya mevcutsa silinip yeniden oluşturulur.</dd>

    <dt><code><var>kullanıcı</var></code></dt>
    <dd><code><var>parola-dosyası</var></code>'nda oluşturulacak veya
    güncellenecek kullanıcı ismi. <code><var>kullanıcı</var></code> bu
    dosyada mevcut değilse yeni bir girdi eklenir. Girdi mevcutsa parolası
    değiştirilir.</dd>

    <dt><code><var>parola</var></code></dt>
    <dd>Şifrelenip dosyada saklanacak düz metin parola. Sadece
    <code><strong>-b</strong></code> seçeneği ile kullanılır.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exit" id="exit">Çıkış Durumu</a></h2>
    <p><code><strong>htpasswd</strong></code>, kullanıcı ismi ve parolasını DBM
    dosyasına başarıyla eklemiş veya güncellemişse <code>0</code>, dosyalara
    erişirken bir sorun çıkmışsa <code>1</code>, komut satırında bir
    sözdizimi hatası varsa <code>2</code>, parola etkileşimli alınmış fakat
    girdi ile eşleşme sağlanamamışsa <code>3</code>, işlem kesintiye
    uğramışsa <code>4</code>, bir değer çok uzunsa <code>5</code> (kullanıcı,
    parola, dosya ismi veya açıklama), kullanıcı ismi kuraldışı karakter
    içeriyorsa (<a href="#restrictions">Kısıtlamalar</a> bölümüne bakınız)
    <code>6</code> ve dosya geçerli bir DBM parola dosyası değilse
    <code>7</code> değeriyle döner.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    <div class="example"><p><code>
      htpasswd /usr/local/etc/apache/.htpasswd-users jsmith
    </code></p></div>

    <p><code>jsmith</code> kullanıcısı için parolayı ekler veya değiştirir.
    Parolayı vermesi için kullanıcıya parola isteği yapılır. Windows üzerinde
    çalıştırılırsa parola Apache MD5 algoritması ile şifrelenir, aksi
    takdirde sistemin <code>crypt()</code> yordamı kullanılır. Dosya mevcut
    değilse <code><strong>htpasswd</strong></code> beklenen hiçbir işlemi
    yapmadan bir hata vererek çıkar.</p>

    <div class="example"><p><code>
      htpasswd -c /home/doe/public_html/.htpasswd jane
    </code></p></div>

    <p>Yeni bir dosya oluşturur ve kullanıcı <code>jane</code> için kaydı bir
    girdi olarak bu dosyaya yazar. Dosya mevcutsa fakat okunamıyor veya
    yazılamıyorsa dosyada bir değişiklik yapılmaz ve
    <code><strong>htpasswd</strong></code> bir ileti gösterip bir hata durumu
    ile çıkar.</p>

    <div class="example"><p><code>
      htpasswd -mb /usr/web/.htpasswd-all jones Pwd4Steve
    </code></p></div>

    <p>Komut satırından verilen parolayı (<code>Pwd4Steve</code>) MD5
    algoritmasıyla şifreler ve bunu belirtilen dosyada saklar.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">Güvenlik Değerlendirmeleri</a></h2>
    <p><code><strong>htpasswd</strong></code> tarafından yönetilen parola
    dosyalarına sunucunun URI uzayından erişilememelidir; yani dosya bir
    tarayıcı ile okunabilecek bir yerde bulunmamalıdır.</p>

    <p>Bu program bir setuid çalıştırılabiliri olarak güvenilir olmadığından
    <em>setuid yapılmamalıdır</em>.</p>

    <p>Komut satırında parolanın şifrelenmemiş olarak görünmesi sebebiyle
    <code><strong>-b</strong></code> seçeneğinin kullanımından kaçınılmasını
    öneriyoruz.</p>

    <p><code>crypt()</code> algoritması kullanılırken, parolayı
    şekillendirmek için parolanın ilk 8 baytının kullanılacağına dikkat
    ediniz. Eğer parola 8 bayttan uzunsa kalanlar bir uyarı verilmeksizin
    iptal edilir.</p>

    <p>SHA şifreleme biçeminde tuz kullanılmaz; yani, bir parolanın
    sadece bir şifreli gösterimi olabilir. <code>crypt()</code> ve
    MD5 biçemleri parolanın önüne rasgele üretilmiş bir tuz dizgesi
    eklediklerinden sözlük saldırılarına karşı daha dayanıklıdırlar.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="restrictions" id="restrictions">Kısıtlamalar</a></h2>
    <p>Windows ve MPE platformlarında, <code><strong>htpasswd</strong></code>
    ile şifrelenen parolalar <code>255</code> karakterden daha uzun olamaz.
    255 karakterden sonrası kırpılır.</p>

    <p><code><strong>htpasswd</strong></code> tarafından kullanılan MD5
    algoritması Apache yazılımına özeldir; bu algoritma ile şifrelenen
    parolalar başka HTTP sunucularında kullanılamayabilir.</p>

    <p>Kullanıcı isimleri <code>255</code> bayttan uzun olamaz ve iki nokta
    imi (<code>:</code>) içeremez.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                    programs/httpd.html                                                                                 100644       0       0        25044 11256641270  12101  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>httpd - Apache Hiper Metin Aktarım Protokolü Sunucusu - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>httpd - Apache Hiper Metin Aktarım Protokolü Sunucusu</h1>


     <p><strong><code>httpd</code></strong>, Apache Hiper Metin Aktarım
      Protokolü (HTTP) sunucusu programıdır. Tek başına çalışan bir artalan
      süreci olarak tasarlanmıştır. Bu tarz kullanıldığında istekleri işleme
      sokmak için çocuk süreçlerden ve evrelerden oluşan bir havuz
      oluşturur.</p>

     <p>Genelde, <strong><code>httpd</code></strong>'nin doğrudan çağrılmaması
      gerekir. Unix ve benzerlerinde <code class="program"><a href="../programs/apachectl.html">apachectl</a></code>
      aracılığıyla, <a href="../platform/windows.html#winsvc">Windows NT, 2000
      ve XP</a>'de bir hizmet olarak,  <a href="../platform/windows.html#wincons">Windows 9x ve ME</a>'de ise bir
      konsol uygulaması olarak çalıştırılır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../invoking.html">Apache'nin Başlatılması</a></li><li><a href="../stopping.html">Apache'nin Durdurulması</a></li><li><a href="../configuring.html">Yapılandırma Dosyaları</a></li><li><a href="../platform/index.html">Platforma Özgü Belgeler</a></li><li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
     <p><code><strong>httpd</strong> [ -<strong>d</strong>
     <var>sunucu-kök-dizini</var> ] [ -<strong>f</strong>
     <var>yapılandırma-dosyası</var> ]
     [ -<strong>C</strong> <var>yönerge</var> ] [ -<strong>c</strong>
     <var>yönerge</var> ] [ -<strong>D</strong> <var>parametre</var> ]
     [ -<strong>e</strong> <var>seviye</var> ] [ -<strong>E</strong>
     <var>dosya</var> ]
     [ <strong>-k</strong> start | restart | graceful | stop | graceful-stop ]
     [ -<strong>R</strong> <var>dizin</var> ] [ -<strong>h</strong> ]
     [ -<strong>l</strong> ] [ -<strong>L</strong> ] [ -<strong>S</strong> ]
     [ -<strong>t</strong> ] [ -<strong>v</strong> ] [ -<strong>V</strong> ]
     [ -<strong>X</strong> ] [ -<strong>M</strong> ]</code></p>

     <p><a href="../platform/windows.html">Windows sistemlerinde</a>, ek
      olarak şunlar vardır:</p>

     <p><code><strong>httpd</strong> [ -<strong>k</strong> install | config |
      uninstall ] [ -<strong>n</strong> <var>isim</var> ]
     [ -<strong>w</strong> ]</code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>

  <dl>
    <dt><code><strong>-d</strong> <var>sunucu-kök-dizini</var></code></dt>
      <dd><var>sunucu-kök-dizini</var>'ni <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergesine ilk değer olarak atar. Yapılandırma
      dosyasındaki bir <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
      yönergesiyle bu atama geçersiz kılınabilir. Bu seçenek belirtilmediği
      takdirde <code>/usr/local/apache2</code> dizini öntanımlıdır.</dd>

    <dt><code><strong>-f</strong> <var>yapılandırma-dosyası</var></code></dt>
      <dd>Başlatma sırasında <var>yapılandırma-dosyası</var>'ndaki yönergeler
      kullanılır. Eğer <var>yapılandırma-dosyası</var> bir / ile başlamıyorsa
      dosyanın <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergesinin
      değerine göreli olduğu varsayılır. Seçenek belirtilmediği takdirde
      <code>conf/httpd.conf</code> öntanımlı değerdir.</dd>

    <dt><code><strong>-k</strong> <code>start | restart | graceful | stop |
      graceful-stop</code></code></dt>
    <dd><strong><code>httpd</code></strong>'yi başlatmak, durdurmak ve yeniden
      başlatmak için sinyal gönderir. Daha ayrıntılı bilgi edinmek için <a href="../stopping.html">Apache'nin Durdurulması</a> belgesine
      bakınız.</dd>

    <dt><code><strong>-C</strong> <var>yönerge</var></code></dt>
    <dd>Yapılandırma <var>yönerge</var>'sini yapılandırma dosyalarını okumadan
      önce işleme sokar.</dd>

    <dt><code><strong>-c</strong> <var>yönerge</var></code></dt>
    <dd>Yapılandırma <var>yönerge</var>'sini yapılandırma dosyalarını
      okuduktan sonra işleme sokar.</dd>

    <dt><code><strong>-D</strong> <var>parametre</var></code></dt>
    <dd>Sunucu başlatılırken veya yeniden başlatılırken komutları şarta bağlı
      olarak işleme sokmak veya atlamak için yapılandırma dosyalarında
      kullanılan <code class="directive"><a href="../mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code>
      bölümlerinde kullanılmak üzere bir yapılandırma <var>parametre</var>'si
      tanımlar. Ayrıca, <code>-DNO_DETACH</code> (ana sürecin çatallanmasını
      engellemek için), <code>-DFOREGROUND</code> (ana sürecin
      <code>setsid()</code> ve benzerlerinden çağrılmasını engellemek için)
      gibi daha az bilinen bazı başlatma parametrelerini atamakta da
      kullanılabilir.</dd>

    <dt><code><strong>-e</strong> <var>seviye</var></code></dt>
    <dd>Hata günlüğü seviyesi olarak <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> yönergesine sunucu başlatılırken <var>seviye</var>
      değerini atar. Bu seçenek, başlatma sırasındaki sorunları saptamak
      amacıyla hata iletilerinin ayrıntı seviyesini geçici olarak arttırmak
      için kullanılır.</dd>

    <dt><code><strong>-E</strong> <var>dosya</var></code></dt>
    <dd>Sunucunun başlatılması sırasında hata iletilerinin belirtilen
      <var>dosya</var>'ya gönderilmesini sağlar.</dd>

    <dt><code><strong>-h</strong></code></dt>
    <dd>Mevcut komut satırı seçeneklerinin kısa bir özetini çıktılar.</dd>

    <dt><code><strong>-l</strong></code></dt>
    <dd>Sunucunun içinde derlenmiş modüllerin listesini çıktılar. Bu liste
      <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi kullanılarak
      devingen olarak yüklenen modülleri içermez.</dd>

    <dt><code><strong>-L</strong></code></dt>
    <dd>Durağan modüllerce sağlanmış yönergeleri olası değerleriyle geçerli
      konumlarına yerleştirerek listeler.</dd>

    <dt><code><strong>-M</strong></code></dt>
    <dd>Yüklü durağan ve paylaşımlı modülleri listeler.</dd>

    <dt><code><strong>-R</strong> <var>dizin</var></code></dt>
    <dd>Sunucu <code>SHARED_CORE</code> kullanılarak derlendiği takdirde bu
      seçenek paylaşımlı nesne dosyaları için <var>dizin</var> belirtir.</dd>

    <dt><code><strong>-S</strong></code></dt>
    <dd>Yapılandırma dosyasından çözümlenmiş haliyle ayarları gösterir (şu an
      sadece sanal konak ayarları gösterilmektedir).</dd>

    <dt><code><strong>-t</strong></code></dt>
    <dd>Yapılandırma dosyasını sözdizimi hatalarına karşı denetler. Program
      sözdizimini denetledikten sonra sözdizimi geçerliyse 0 ile, değilse
      sıfırdan farklı bir değerle çıkar.
      <code><strong>-D</strong>DUMP_VHOSTS</code> seçeneği ile birlikte
      kullanılmışsa ek olarak sanal konak ayrıntıları da basılır.
      <code><strong>-D</strong>DUMP_MODULES</code> seçeneği ile ise ek olarak
      tüm modüller listelenir.</dd>

    <dt><code><strong>-v</strong></code></dt>
    <dd><strong><code>httpd</code></strong> sürümünü basar ve çıkar.</dd>

    <dt><code><strong>-V</strong></code></dt>
    <dd>Sürümü ve <strong><code>httpd</code></strong> kurulum parametrelerini
      basar ve çıkar.</dd>

    <dt><code><strong>-X</strong></code></dt>
    <dd><strong><code>httpd</code></strong> hata ayıklama kipinde çalışır. Tek
      çocuk süreç başlatılır ve sunucu konsolu terketmez.</dd>
  </dl>

  <p>Aşağıdaki seçenekler sadece <a href="../platform/windows.html">Windows
    platformunda geçerlidir</a>:</p>

  <dl>
    <dt><code><strong>-k</strong> install | config | uninstall</code></dt>
    <dd>Parametreler bakımından sırasıyla: Apache bir Windows NT hizmeti
      haline getirilir; başlatma seçenekleri Apache hizmeti için değiştirilir;
      ve Apache hizmeti sistemden kaldırılır.</dd>

    <dt><code><strong>-n</strong> <var>isim</var></code></dt>
    <dd>Sinyal gönderilecek Apache hizmetinin <var>ismi</var>.</dd>

    <dt><code><strong>-w</strong></code></dt>
    <dd>Hata durumunda konsol penceresi açık tutularak hata iletilerinin
      okunması sağlanır.</dd>
  </dl>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            programs/httxt2dbm.html                                                                             100644       0       0        11547 11256641270  12701  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>httxt2dbm - RewriteMap ile kullanmak için DBM dosyaları üretir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>httxt2dbm - RewriteMap ile kullanmak için DBM dosyaları üretir</h1>


    <p><code><strong>httxt2dbm</strong></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> ile kullanmak için düz metin
    dosyalardan DBM dosyaları üretir.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>httxt2dbm</strong>
    [ -<strong>v</strong> ]
    [ -<strong>f</strong> <var>DBM_türü</var> ]
    -<strong>i</strong> <var>kaynak_metin</var>
    -<strong>o</strong> <var>çıktı_DBM</var>
    </code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
    <dl>
    <dt><code><strong>-v</strong></code></dt>
    <dd>Çıktı daha ayrıntılı olur.</dd>

    <dt><code><strong>-f</strong> <var>DBM_türü</var></code></dt>
    <dd>Çıktı için kullanılacak DBM türü belirtilir. Belirtilmediği takdirde
    <a class="glossarylink" href="../glossary.html#apr" title="sözlüğe bakınız">APR</a> öntanımlısı kullanılır. Belirtilebilecek DBM
    türleri:<br />
    GDBM dosyalar için <code>GDBM</code><br />
    SDBM dosyalar için <code>SDBM</code><br />
    Berkeley DB dosyalar için <code>DB</code><br />
    NDBM dosyalar için <code>NDBM</code><br />
    öntanımlı DBM türü için <code>default</code>
    </dd>

    <dt><code><strong>-i</strong> <var>kaynak_metin</var></code></dt>
    <dd>DBM dosyasının üretiminde kullanılacak girdi dosyası belirtilir. Bu
    dosya, her satırda bir kayıt bulunmak üzere her satırı şöyle biçemlenmiş
    olmalıdır:<br />
    <code>anahtar değer</code><br />
    Bu dosyanın biçemi ve manası ile ilgili ayrıntılar için <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> yönergesinin açıklamasına
    bakınız.
    </dd>

    <dt><code><strong>-o</strong>  <var>çıktı_DBM</var></code></dt>
    <dd>Çıktılanacak DBM dosyasının ismi belirtilir.</dd>
    </dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>
    <div class="example"><p><code>
      httxt2dbm -i rewritemap.txt -o rewritemap.dbm<br />
      httxt2dbm -f SDBM -i rewritemap.txt -o rewritemap.dbm<br />
    </code></p></div>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                         programs/index.html                                                                                 100644       0       0        11313 11256641270  12057  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Sunucu ve Destek Programları - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Sunucu ve Destek Programları</h1>


    <p>Bu sayfada Apache HTTP Sunucusuna dahil tüm çalıştırılabilir programlar tanıtılmıştır.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="index" id="index">Dizin</a></h2>

    <dl>
      <dt><code class="program"><a href="../programs/httpd.html">httpd</a></code></dt>

      <dd>Apache hiper metin aktarım protokolü sunucusu.</dd>

      <dt><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></dt>

      <dd>Apache HTTP Sunucusu denetim arayüzü.</dd>

      <dt><code class="program"><a href="../programs/ab.html">ab</a></code></dt>

      <dd>Apache HTTP Sunucusu  başarım ölçme aracı.</dd>

      <dt><code class="program"><a href="../programs/apxs.html">apxs</a></code></dt>

      <dd>Apache HTTP Sunucusu eklenti aracı (APache eXtenSion tool).</dd>

      <dt><code class="program"><a href="../programs/configure.html">configure</a></code></dt>

      <dd>Kaynak ağacını yapılandırır.</dd>

      <dt><code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code></dt>

      <dd>Kullanıcı kimlik doğrulama dosyalarını temel kimlik doğrulaması için DBM biçeminde oluşturur ve günceller.</dd>

      <dt><code class="program"><a href="../programs/htcacheclean.html">htcacheclean</a></code></dt>
      <dd>Disk arabelleğini temizler.</dd>

      <dt><code class="program"><a href="../programs/htdigest.html">htdigest</a></code></dt>

      <dd>Kullanıcı kimlik doğrulama dosyalarını özet kimlik doğrulaması için oluşturur ve günceller.</dd>

      <dt><code class="program"><a href="../programs/htdbm.html">htdbm</a></code></dt>

      <dd>DBM parola veritabanlarını idare eder.</dd>

      <dt><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code></dt>

      <dd>Kullanıcı kimlik doğrulama dosyalarını temel kimlik doğrulaması için oluşturur ve günceller.</dd>

      <dt><code class="program"><a href="../programs/httxt2dbm.html">httxt2dbm</a></code></dt>

      <dd><code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> ile kullanmak üzere DBM dosyaları oluşturur.</dd>

      <dt><code class="program"><a href="../programs/logresolve.html">logresolve</a></code></dt>

      <dd>Apache günlük dosyalarındaki IP adreslerini konak isimlerine dönüştürür.</dd>

      <dt><code class="program"><a href="../programs/rotatelogs.html">rotatelogs</a></code></dt>

      <dd>Sunucuyu öldürmek gerekmeksizin günlük dosyalarının döndürülmesini sağlar.</dd>

      <dt><code class="program"><a href="../programs/suexec.html">suexec</a></code></dt>

      <dd>Bir dosyayı belli bir kullanıcı adına çalıştırır.</dd>

      <dt><a href="other.html">Diğer Programlar</a></dt>
      <dd>Kendi kılavuz sayfası bulunmayan destek araçları.</dd>
    </dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                     programs/logresolve.html                                                                            100644       0       0         7313 11256641270  13116  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>logresolve - Apache günlük dosyalarındaki IP adreslerini konak
  isimlerine dönüştürür - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>logresolve - Apache günlük dosyalarındaki IP adreslerini konak
  isimlerine dönüştürür</h1>


     <p><code><strong>logresolve</strong></code>, Apache'nin erişim
     günlüklerindeki IP adreslerini çözümlemek için bir ardıl işlem
     uygulamasıdır. İsim sunucunuza bindirdiği yükü en aza indirmek için
     <code><strong>logresolve</strong></code> kendi arabelleğinde oluşturduğu
     eşleme tablosunu kullanır.</p>

     <p>Apache günlük dosyasını standart girdisinden okur. IP adresleri günlük
     dosyası satırlarında ilk bileşen olmalı ve sonraki bileşenlerden bir
     boşluk ile ayrılmalıdır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>

     <p><code><strong>logresolve</strong> [ -<strong>s</strong>
     <var>dosyaismi</var> ] [ -<strong>c</strong> ] &lt;
     <var>günlük_dosyası</var> &gt; <var>yeni_günlük_dosyası</var></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>

<dl>
    <dt><code>-s <var>dosyaismi</var></code></dt>
    <dd>İstatistiklerin kaydedileceği dosyanın ismi belirtilir.</dd>

    <dt><code>-c</code></dt>
    <dd><code><strong>logresolve</strong></code> uygulamasının bazı DNS
    sorguları yapmasına sebep olur: IP adresine karşılık olan konak ismini
    bulduktan sonra özgün adresle karşılaştırmak için bu konak ismine karşılık
    gelen IP adresini sorgular.</dd>

</dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                     programs/other.html                                                                                 100644       0       0         7463 11256641270  12064  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Diğer Programlar - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>Diğer Programlar</h1>


    <p>Aşağıdaki programlar Apache HTTP Sunucusu ile gelen basit destek
    programları olup kendilerine ait kılavuz sayfaları yoktur. Bunlar
    özdevinimli olarak kurulmazlar. Derleme işleminden sonra bunları
    <code>support/</code> dizininde bulabilirsiniz.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#log_server_status">log_server_status</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#split-logfile">split-logfile</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="log_server_status" id="log_server_status">log_server_status</a></h2>
    <p>Bu perl betiği cron gibi bir şeyleri belli aralıklarla çalıştırmak için
    tasarlanmıştır. Sunucuya bağlanıp durum bilgisini indirdikten sonra bunları
    tek bir satır haline getirip bir günlük dosyasına kaydeder. Sonuçların
    kaydedileceği günlük dosyasını betiğin başlangıcındaki değişkenlerde
    değişiklik yaparak belirtebilirsiniz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="split-logfile" id="split-logfile">split-logfile</a></h2>
    <p>Bu perl betiği sanal konaklı bir birleşik günlük dosyasını girdi olarak
    alır ve içeriğini ayrı dosyalara böler. Günlük dosyaları isimlendirilirken
    sanal konak isimlerinin sonlarına <code>.log</code> uzantısı getirilir.
    Günlük dosyasındaki her kaydın ilk bileşeninin, <code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesinde
    "<code>%v</code>" belirteci ile ifade edilen sanal konak adı olduğu
    varsayılır.</p>

    <p>Birleşik günlük dosyası standart girdiden okunur. Kayıtlar okundukça
    her biri kendi günlük dosyasına kaydedilir.</p>

    <div class="example"><p><code>split-logfile &lt; access_log</code></p></div>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                             programs/rotatelogs.html                                                                            100644       0       0        23004 11256641270  13133  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>rotatelogs - Apache günlüklerini döndürmek için borulu günlük kayıt
  programı - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>rotatelogs - Apache günlüklerini döndürmek için borulu günlük kayıt
  programı</h1>


     <p><code><strong>rotatelogs</strong></code>, Apache'nin borulu günlük
     dosyaları özelliği ile birlikte kullanmak için tasarlanmış basit bir
     programdır. Günlük dosyasının azami boyutuna göre veya belli aralıklarla
     günlük dosyalarını döndürür.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Örnekler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#portability">Taşınabilirlik</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>

     <p><code><strong>rotatelogs</strong>
     [ -<strong>l</strong> ]
     [ -<strong>f</strong> ]
     <var>dosyaismi</var>
     <var>süre</var>|<var>boyut</var>M
     [ <var>saat_farkı</var> ]</code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>

<dl>
    <dt><code><strong>-l</strong></code></dt>
    <dd>GMT yerine yerel zamanın kullanılmasını sağlar. Zaman dilimi değişik
    olan ortamlarda (BST, DST gibi) bu seçeneğin kullanımı beklenmedik
    sonuçlar verebilir!</dd>

    <dt><code><strong>-f</strong></code></dt>
    <dd>İlk günlük giridisinin okunmasını beklemeden
    <code><strong>rotatelogs</strong></code> başlar başlamaz günlük
    dosyasının açılmasını sağlar. Çok meşgul sitelerde, sunucu başlatılıp ilk
    istek sunuluncaya kadar geçen zamanda günlük dosyasının yokluğu
    özdevinimli işlemler yapan bazı günlükleme araçlarında sorunlara yol
    açabilir. Bu seçenek bu gibi durumlarda yararlıdır. <em>2.2.9 ve sonrası
    için geçerlidir.</em></dd>

    <dt><code><var>dosyaismi</var></code></dt>
    <dd>Günlük dosyasının ismi yoluyla birlikte belirtilir.
    <var>dosyaismi</var> '%' karakterleri içeriyorsa bunlar
    <code>strftime(3)</code> biçem belirteçleri olarak ele alınır. Aksi
    takdirde, özdevinimli olarak <var>.nnnnnnnnnn</var> uzantısı üretilir.
    Uzantı saniye cinsindendir ve her iki durumda da bu değer, mevcut döngü
    diliminin başlangıcına göre hesaplanır. Örneğin, döndürmenin 86400
    saniyede bir yapılacağı belirtilmişse, <code>strftime(3)</code> biçeminde
    oluşturulan saat, dakika ve saniye alanları, 24 saatlik sürenin
    başlangıcını (geceyarısı) göstermek üzere sıfırlarla doldurulur.</dd>

    <dt><code><var>süre</var></code></dt>
    <dd>Günlük dosyasının yenisinin kaç saniyede bir açılacağı belirtilir.
    Örneğin, bu süre 3600 saniye ise günlük dosyası her saat başında
    yenilenir; 86400 saniye ise her geceyarısı yenilenir. (Bu süre zarfında
    günlüğe kaydedilecek bir olay gerçekleşmemişse dosya oluşturulmaz.)</dd>

    <dt><code><var>boyut</var>M</code></dt>
    <dd>Boyuta göre döndürme için azami dosya boyutu. Belirtilenin bir süre
    değil de bir boyut değeri olarak ele alınması için değerin sonuna
    <code>M</code> (megabayt) harfi konmalıdır.

    <p>Süre ve boyut birlikte belirtilmişse boyut süreden sonra
    belirtilmelidir. Dosya yenilemesi, bunlardan hangisi daha önce aşılırsa o
    zaman gerçekleşir.</p></dd>

    <dt><code><var>saat_farkı</var></code></dt>
    <dd>Koordinatlı evrensel zamana göre "dakika" farkı. Belirtilmezse, sıfır
    öntanımlıdır. Örneğin, -5 saatlik bir zaman diliminde bulunuyorsanız bu
    değer <code>-300</code> olmalıdır. Çoğu durumda, bunun yerine
    <code><strong>-l</strong></code> seçeneğini kullanmak gerekir.</dd>

</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Örnekler</a></h2>

<div class="example"><p><code>
     CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common
</code></p></div>

     <p>nnnn, günlük kaydının başladığı sistem zamanı olmak üzere
     /var/logs/logfile.nnnn dosyası oluşturulur. Bu zaman, daima döngü
     süresinin katları olacağından bunu cron betiklerinizi eşzamanlamakta
     kullanabilirsiniz. Her döngü süresinin sonunda (burada 24 saat sonra)
     yeni bir günlük dosyası açılır.</p>

<div class="example"><p><code>
     CustomLog "|bin/rotatelogs -l /var/logs/logfile.%Y.%m.%d 86400" common
</code></p></div>

     <p>yyyy, yıl; mm, ay; dd, ayın gününü belirtmek üzere
     /var/logs/logfile.yyyy.mm.dd dosyası oluşturulur. Her gün yerel zamanla
     geceyarısı yeni bir günlük dosyasına geçilecektir.</p>

<div class="example"><p><code>
     CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common
</code></p></div>

     <p>Günlük dosyası 5 megabaytlık olunca yenisinin oluşturulmasını sağlar.
     </p>

<div class="example"><p><code>
     ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
</code></p></div>
     <p>Hata günlüğünün 5 megabaytta bir
     <code>errorlog.YYYY-mm-dd-HH_MM_SS</code> biçemli bir isimle
     oluşturulmasını sağlar.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="portability" id="portability">Taşınabilirlik</a></h2>

    <p>Aşağıdaki günlük dosyası biçem belirteçlerinin tüm
    <code>strftime(3)</code> gerçeklenimlerince desteklenmesi gerekir.
    Kullandığınız kütüphaneye özgü belirteçler için sisteminizdeki
    <code>strftime(3)</code> kılavuz sayfasına bakınız.</p>

<table class="bordered"><tr><td><code>%A</code></td><td>tam gün ismi (yerelleştirilmiş)</td></tr>
<tr class="odd"><td><code>%a</code></td><td>3 harflik gün ismi
(yerelleştirilmiş)</td></tr>
<tr><td><code>%B</code></td><td>tam ay ismi (yerelleştirilmiş)</td></tr>
<tr class="odd"><td><code>%b</code></td><td>3 harflik ay ismi (yerelleştirilmiş)</td></tr>
<tr><td><code>%c</code></td><td>tarih ve saat (yerelleştirilmiş)</td></tr>
<tr class="odd"><td><code>%d</code></td><td>2 haneli ay günü numarası</td></tr>
<tr><td><code>%H</code></td><td>2 haneli saat (24 saatlik)</td></tr>
<tr class="odd"><td><code>%I</code></td><td>2 haneli saat (12 saatlik)</td></tr>
<tr><td><code>%j</code></td><td>3 hanelik yıl günü numarası</td></tr>
<tr class="odd"><td><code>%M</code></td><td>2 haneli dakika</td></tr>
<tr><td><code>%m</code></td><td>2 haneli ay</td></tr>
<tr class="odd"><td><code>%p</code></td><td>12 saatlik kip için öö/ös
(yerelleştirilmiş)</td></tr>
<tr><td><code>%S</code></td><td>2 haneli saniye</td></tr>
<tr class="odd"><td><code>%U</code></td><td>2 haneli yılın hafta numarası
(Haftanın ilk gününün Pazar olduğu varsayımıyla)</td></tr>
<tr><td><code>%W</code></td><td>2 haneli yılın hafta numarası
(Haftanın ilk gününün Pazartesi olduğu varsayımıyla)</td></tr>
<tr class="odd"><td><code>%w</code></td><td>1 hanelik haftanın gün numarası
(Haftanın ilk gününün Pazar olduğu varsayımıyla)</td></tr>
<tr><td><code>%X</code></td><td>saat (yerelleştirilmiş)</td></tr>
<tr class="odd"><td><code>%x</code></td><td>tarih (yerelleştirilmiş)</td></tr>
<tr><td><code>%Y</code></td><td>4 hanelik yıl</td></tr>
<tr class="odd"><td><code>%y</code></td><td>2 hanelik yıl</td></tr>
<tr><td><code>%Z</code></td><td>zaman dilimi ismi</td></tr>
<tr class="odd"><td><code>%%</code></td><td>`%' iminin kendisi</td></tr>
</table>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            programs/suexec.html                                                                                100644       0       0         7241 11256641270  12231  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>suexec - harici programları çalıştırmadan önce kullanıcıyı değiştirir - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Programlar</a></div><div id="page-content"><div id="preamble"><h1>suexec - harici programları çalıştırmadan önce kullanıcıyı değiştirir</h1>


    <p><code><strong>suexec</strong></code>, CGI programlarını çalıştırmadan
    önce Apache HTTP Sunucusu tarafından kullanıcı değiştirmek için kullanılır.
    Bunu yapabilmek için sunucunun <code>root</code> tarafından çalıştırılmış
    olması gerekir. HTTP artalan süreci normalde <code>root</code> aidiyetinde
    çalışmadığından <code><strong>suexec</strong></code>'in çalıştırılabilir
    dosyasının sahibi <code>root</code> olmalı, setuid biti etkin
    (<code>u+s</code>) olmalı ve dosyaya <code>root</code> dışında hiç kimse
    yazamamalıdır.</p>

    <p><code><strong>suexec</strong></code> güvenlik modeli ve kavramlar
    hakkında bilgi edinmek için suexec belgesine (<a href="../suexec.html">http://httpd.apache.org/docs/2.2/suexec.html</a>) bakınız.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#synopsis">Kullanım</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Seçenekler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">Kullanım</a></h2>
    <p><code><strong>suexec</strong> -<strong>V</strong></code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">Seçenekler</a></h2>
  <dl>
    <dt><code><strong>-V</strong></code></dt>
    <dd><code>root</code> iseniz, bu seçenek
      <code><strong>suexec</strong></code>
    derleme seçeneklerini gösterir. Güvenlik sebebiyle tüm yapılandırma
    seçenekleri sadece derleme sırasında değiştirilebilir.</dd>
  </dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                               rewrite/index.html                                                                                  100644       0       0        11421 11256641270  11706  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache mod_rewrite - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache mod_rewrite</h1>


    <blockquote>
        <p>``mod_rewrite’ı harika yapan şey, Sendmail’ın tüm yapılandırma
          kolaylığı ve esnekliğine sahip olmasıdır. mod_rewrite’ı kötü yapan
          şey ise Sendmail’ın tüm yapılandırma kolaylığı ve esnekliğine sahip
          olmasıdır.''</p>

        <p class="cite">-- <cite>Brian Behlendorf</cite><br />
        Apache Group</p>
    </blockquote>

    <blockquote>
        <p>``Hakkında tonlarca örnek ve belge olmasına rağmen mod_rewrite kara
          büyüdür. Müthiş güzel bir kara büyü ama yine de kara büyü.''</p>

        <p class="cite">-- <cite>Brian Moore</cite><br />
        bem@news.cmc.net</p>
    </blockquote>

    <p>URL kurgulamasının İsviçre Çakısı olan <code>mod_rewrite</code>
      modülünün belgelerine hoşgeldiniz!</p>

    <p>Bu modül istenen URL’leri çalışma anında yeniden yazmak için (düzenli
      ifade çözümleyiciden yararlanan) kurallara dayalı bir yeniden yazma
      motoru kullanır. Gerçekten esnek ve güçlü bir URL kurgulama
      mekanizması oluşturmak için sınısız sayıda kural ve her kural için de
      sınırsız sayıda koşul destekler. URL değişiklikleri çeşitli sınamalara
      dayanır; sunucu değişkenleri, HTTP başlıkları, ortam değişkenleri,
      zaman damgaları hatta çeşitli biçimlerde harici veritabanı sorguları
      bile bu amaçla kullanılabilir.</p>

    <p>Bu modül URL’lerin tamamında (path-info kısmı dahil) hem sunucu
      bağlamında (<code>httpd.conf</code>) hem de dizin bağlamında
      (<code>.htaccess</code> dosyaları ve <code>&lt;Directory&gt;</code>
      bölümleri) çalışır ve URL üzerinde sorgu dizgesi bölümleri bile
      oluşturabilir. Yeniden yazılan URL sonuçta dahili işlemlerde, harici
      yönlendirmelerde ve hatta dahili vekalet işlemlerinde
      kullanılabilir.</p>

    <p>Fakat tüm bu işlevsellik ve esnekliğin bir bedeli vardır: karmaşıklık.
      Bu yüzden bu modülün yapabildiklerini bir günde anlayabilmeyi
      beklemeyin.</p>

</div>
<div id="quickview"><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../urlmapping.html">URL’lerin Dosya Sistemine Eşlenmesi</a>
</li><li><a href="http://wiki.apache.org/httpd/Rewrite">mod_rewrite wiki</a>
</li><li><a href="../glossary.html">Terimler</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="documentation" id="documentation">Belgeler</a></h2>
  <ul>
    <li><a href="../mod/mod_rewrite.html">mod_rewrite Başvuru Kılavuzu</a></li>
    <li><a href="rewrite_intro.html">Giriş</a></li>
    <li><a href="rewrite_flags.html">Seçenekler</a></li>
    <li><a href="rewrite_tech.html">Teknik Ayrıntılar</a></li>
    <li><a href="rewrite_guide.html">Yeniden Yazma Rehberi -
    yararlı örnekler</a></li>
    <li><a href="rewrite_guide_advanced.html">Gelişkin Yeniden Yazma Rehberi -
    daha yararlı örnekler</a></li>
  </ul>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                               rewrite/rewrite_flags.html                                                                          100644       0       0        43742 11256641270  13447  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache mod_rewrite Flags - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Apache mod_rewrite Flags</h1>


<p>This document discusses the flags which are available to the
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directive,
providing detailed explanations and examples. This is not necessarily
a comprehensive list of all flags available, so be sure to also
consult the reference documentation.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flags">The flags</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Module documentation</a></li><li><a href="rewrite_tech.html">Technical details</a></li><li><a href="rewrite_guide.html">Rewrite Guide - useful examples</a></li><li><a href="rewrite_guide_advanced.html">Advanced Rewrite Guide -
advanced useful examples</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Introduction</a></h2>
<p><code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s can have
their behavior modified by one or more flags. Flags are included in
square brackets at the end of the rule, and multiple flags are separated
by commas.</p>
<div class="example"><p><code>
RewriteRule pattern target [Flag1,Flag2,Flag3]
</code></p></div>

<p>The flags all have a short form, such as <code>CO</code>, as well as
a longer form, such as <code>cookie</code>. Some flags take one or more
arguments. Flags are not case sensitive.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flags" id="flags">The flags</a></h2>

<p>Each flag has a long and short form. While it is most common to use
the short form, it is recommended that you familiarize yourself with the
long form, so that you remember what each flag is supposed to do.</p>

<p>Presented here are each of the available flags, along with an example
of how you might use them.</p>

<h3><a name="flag_c" id="flag_c">C|chain</a></h3>
<p>The [C] or [chain] flag indicates that the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> is chained to the next
rule. That is, if the rule matches, then it is processed as usual and
control moves on to the next rule. However, if it does not match, then
the next rule, and any other rules that are chained together, will be
skipped.</p>



<h3><a name="flag_co" id="flag_co">CO|cookie</a></h3>
<p>The [CO], or [cookie] flag, allows you to set a cookie when a
particular <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
matches. The argument consists of three required fields and two optional
fields.</p>
<p>You must declare a name and value for the cookie to be set, and the
domain for which you wish the cookie to be valid. You may optionally set
the lifetime of the cookie, and the path for which it should be
returned.</p>
<p>By default, the lifetime of the cookie is the current browser
session.</p>
<p>By default, the path for which the cookie will be valid is "/" - that
is, the entire website.</p>
<p>Several examples are offered here:</p>

<div class="example"><p><code>
RewriteEngine On<br />
RewriteRule ^/index.html - [CO=frontdoor:yes:.apache.org:1440:/]
</code></p></div>

<p>This rule doesn't rewrite the request (the "-" rewrite target tells
mod_rewrite to pass the request through unchanged) but sets a cookie
called 'frontdoor' to a value of 'yes'. The cookie is valid for any host
in the <code>.apache.org</code> domain. It will be set to expire in 1440
minutes (24 hours) and will be returned for all URIs.</p>



<h3><a name="flag_e" id="flag_e">E|env</a></h3>
<p>With the [E], or [env] flag, you can set the value of an environment
variable. Note that some environment variables may be set after the rule
is run, thus unsetting what you have set. See <a href="../env.html">the
Environment Variables document</a> for more details on how Environment
variables work.</p>

<p>The following example sets an evironment variable called 'image' to a
value of '1' if the requested URI is an image file. Then, that
environment variable is used to exclude those requests from the access
log.</p>

<div class="example"><p><code>
RewriteRule \.(png|gif|jpg) - [E=image:1]<br />
CustomLog logs/access_log combined env=!image
</code></p></div>

<p>Note that this same effect can be obtained using <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>. This technique is offered as
an example, not as a recommendation.</p>


<h3><a name="flag_f" id="flag_f">F|forbidden</a></h3>
<p>Using the [F] flag causes Apache to return a 403 Forbidden status
code to the client. While the same behavior can be accomplished using
the <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> directive, this 
allows more flexibility in assigning a Forbidden status.</p>

<p>The following rule will forbid <code>.exe</code> files from being
downloaded from your server.</p>

<div class="example"><p><code>
RewriteRule \.exe - [F]
</code></p></div>

<p>This example uses the "-" syntax for the rewrite target, which means
that the requested URI is not modified. There's no reason to rewrite to
another URI, if you're going to forbid the request.</p>



<h3><a name="flag_g" id="flag_g">G|gone</a></h3>
<p>The [G] flag forces Apache to return a 410 Gone status with the
response. This indicates that a resource used to be available, but is no
longer available.</p>

<p>As with the [F] flag, you will typically use the "-" syntax for the
rewrite target when using the [G] flag:</p>

<div class="example"><p><code>
RewriteRule oldproduct - [G,NC]
</code></p></div>


<h3><a name="flag_h" id="flag_h">H|handler</a></h3>
<p>Forces the resulting request to be handled with the specified
handler. For example, one might use this to force all files without a
file extension to be parsed by the php handler:</p>

<div class="example"><p><code>
RewriteRule !\. - [H=application/x-httpd-php]
</code></p></div>

<p>
The regular expression above - <code>!\.</code> - will match any request
that does not contain the literal <code>.</code> character.
</p>


<h3><a name="flag_l" id="flag_l">L|last</a></h3>
<p>The [L] flag causes <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> to stop processing
the rule set. In most contexts, this means that if the rule matches, no
further rules will be processed.</p>

<p>If you are using <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> in either
<code>.htaccess</code> files or in 
<code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> sections,
it is important to have some understanding of how the rules are
processed.  The simplified form of this is that once the rules have been
processed, the rewritten request is handed back to the URL parsing
engine to do what it may with it. It is possible that as the rewritten
request is handled, the <code>.htaccess</code> file or 
<code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section
may be encountered again, and thus the ruleset may be run again from the
start. Most commonly this will happen if one of the rules causes a
redirect - either internal or external - causing the request process to
start over.</p>

<p>It is therefore important, if you are using <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directives in one of these
context that you take explicit steps to avoid rules looping, and not
count solely on the [L] flag to terminate execution of a series of
rules, as shown below.</p>

<p>The example given here will rewrite any request to
<code>index.php</code>, giving the original request as a query string
argument to <code>index.php</code>, however, if the request is already
for <code>index.php</code>, this rule will be skipped.</p>

<div class="example"><p><code>
RewriteCond %{REQUEST_URI} !index\.php<br />
RewriteRule ^(.*) index.php?req=$1 [L]
</code></p></div>


<h3><a name="flag_n" id="flag_n">N|next</a></h3>
<p>
The [N] flag causes the ruleset to start over again from the top. Use
with extreme caution, as it may result in loop.
</p>
<p>
The [Next] flag could be used, for example, if you wished to replace a
certain string or letter repeatedly in a request. The example shown here
will replace A with B everywhere in a request, and will continue doing
so until there are no more As to be replaced.
</p>

<div class="example"><p><code>
RewriteRule (.*)A(.*) $1B$2 [N]
</code></p></div>

<p>You can think of this as a <code>while</code> loop: While this
pattern still matches, perform this substitution.</p>



<h3><a name="flag_nc" id="flag_nc">NC|nocase</a></h3>
<p>Use of the [NC] flag causes the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to be matched in a
case-insensitive manner. That is, it doesn't care whether letters appear
as upper-case or lower-case in the matched URI.</p>

<p>In the example below, any request for an image file will be proxied
to your dedicated image server. The match is case-insensitive, so that
<code>.jpg</code> and <code>.JPG</code> files are both acceptable, for
example.</p>

<div class="example"><p><code>
RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC]
</code></p></div>


<h3><a name="flag_ne" id="flag_ne">NE|noescape</a></h3>
<p>By default, special characters, such as <code>&amp;</code> and
<code>?</code>, for example, will be converted to their hexcode
equivalent. Using the [NE] flag prevents that from happening.
</p>

<div class="example"><p><code>
RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]
</code></p></div>

<p>
The above example will redirect <code>/anchor/xyz</code> to
<code>/bigpage.html#xyz</code>. Omitting the [NE] will result in the #
being converted to its hexcode equivalent, <code>%23</code>, which will
then result in a 404 Not Found error condition.
</p>



<h3><a name="flag_ns" id="flag_ns">NS|nosubreq</a></h3>
<p>Use of the [NS] flag prevents the rule from being used on
subrequests. For example, a page which is included using an SSI (Server
Side Include) is a subrequest, and you may want to avoid rewrites
happening on those subrequests.</p>

<p>
Images, javascript files, or css files, loaded as part of an HTML page,
are not subrequests - the browser requests them as separate HTTP
requests.
</p>


<h3><a name="flag_p" id="flag_p">P|proxy</a></h3>
<p>Use of the [P] flag causes the request to be handled by
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, and handled via a proxy request. For
example, if you wanted all image requests to be handled by a back-end
image server, you might do something like the following:</p>

<div class="example"><p><code>
RewriteRule (.*)\.(jpg|gif|png) http://images.example.com$1.$2 [P]
</code></p></div>

<p>Use of the [P] flag implies [L] - that is, the request is immediatly
pushed through the proxy, and any following rules will not be
considered.</p>



<h3><a name="flag_pt" id="flag_pt">PT|passthrough</a></h3>

<p>
The target (or substitution string) in a RewriteRule is assumed to be a
file path, by default. The use of the [PT] flag causes it to be treated
as a URI instead. That is to say, the
use of the [PT] flag causes the result of the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to be passed back through
URL mapping, so that location-based mappings, such as <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, for example, might have a chance to take
effect.
</p>

<p>
If, for example, you have an 
<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>
for /icons, and have a <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> pointing there, you should
use the [PT] flag to ensure that the 
<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> is evaluated.
</p>

<div class="example"><p><code>
Alias /icons /usr/local/apache/icons<br />
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
</code></p></div>

<p>
Omission of the [PT] flag in this case will cause the Alias to be
ignored, resulting in a 'File not found' error being returned.
</p>



<h3><a name="flag_qsa" id="flag_qsa">QSA|qsappend</a></h3>
<p>
When the replacement URI contains a query string, the default behavior
of <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> is to discard
the existing query string, and replace it with the newly generated one.
Using the [QSA] flag causes the query strings to be combined.
</p>

<p>Consider the following rule:</p>

<div class="example"><p><code>
RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
</code></p></div>

<p>With the [QSA] flag, a request for <code>/pages/123?one=two</code> will be
mapped to <code>/page.php?page=123&amp;one=two</code>. Without the [QSA]
flag, that same request will be mapped to
<code>/page.php?page=123</code> - that is, the existing query string
will be discarded.
</p>


<h3><a name="flag_r" id="flag_r">R|redirect</a></h3>
<p>
Use of the [R] flag causes a HTTP redirect to be issued to the browser.
If a fully-qualified URL is specified (that is, including
<code>http://servername/</code>) then a redirect will be issued to that
location. Otherwise, the current servername will be used to generate the
URL sent with the redirect.
</p>

<p>
A status code may be specified, in the range 300-399, with a 302 status
code being used by default if none is specified.
</p>

<p>
You will almost always want to use [R] in conjunction with [L] (that is,
use [R,L]) because on its own, the [R] flag prepends
<code>http://thishost[:thisport]</code> to the URI, but then passes this
on to the next rule in the ruleset, which can often result in 'Invalid
URI in request' warnings.
</p>



<h3><a name="flag_s" id="flag_s">S|skip</a></h3>
<p>The [S] flag is used to skip rules that you don't want to run. This
can be thought of as a <code>goto</code> statement in your rewrite
ruleset. In the following example, we only want to run the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> if the requested URI
doesn't correspond with an actual file.</p>

<div class="example"><p><code>
# Is the request for a non-existent file?<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
# If so, skip these two RewriteRules<br />
RewriteRule .? - [S=2]<br />
<br />
RewriteRule (.*\.gif) images.php?$1<br />
RewriteRule (.*\.html) docs.php?$1
</code></p></div>

<p>This technique is useful because a <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> only applies to the
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> immediately
following it. Thus, if you want to make a <code>RewriteCond</code> apply
to several <code>RewriteRule</code>s, one possible technique is to
negate those conditions and use a [Skip] flag.</p>



<h3><a name="flag_t" id="flag_t">T|type</a></h3>
<p>Sets the MIME type with which the resulting response will be
sent. This has the same effect as the <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> directive.</p>

<p>For example, you might use the following technique to serve Perl
source code as plain text, if requested in a particular way:</p>

<div class="example"><p><code>
# Serve .pl files as plain text<br />
RewriteRule \.pl$ - [T=text/plain]
</code></p></div>

<p>Or, perhaps, if you have a camera that produces jpeg images without
file extensions, you could force those images to be served with the
correct MIME type by virtue of their file names:</p>

<div class="example"><p><code>
# Files with 'IMG' in the name are jpg images.<br />
RewriteRule IMG - [T=image/jpg]
</code></p></div>

<p>Please note that this is a trivial example, and could be better done
using <code class="directive"><a href="../mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code>
instead. Always consider the alternate
solutions to a problem before resorting to rewrite, which will
invariably be a less efficient solution than the alternatives.</p>


</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                              rewrite/rewrite_guide.html                                                                          100644       0       0        71270 11256641270  13445  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>URL Rewriting Guide - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>URL Rewriting Guide</h1>



    <p>This document supplements the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    <a href="../mod/mod_rewrite.html">reference documentation</a>.
    It describes how one can use Apache's <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    to solve typical URL-based problems with which webmasters are
    commonly confronted. We give detailed descriptions on how to
    solve each problem by configuring URL rewriting rulesets.</p>

    <div class="warning">ATTENTION: Depending on your server configuration
    it may be necessary to slightly change the examples for your
    situation, e.g. adding the <code>[PT]</code> flag when
    additionally using <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> and
    <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>, etc. Or rewriting a ruleset
    to fit in <code>.htaccess</code> context instead
    of per-server context. Always try to understand what a
    particular ruleset really does before you use it. This
    avoids many problems.</div>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#canonicalurl">Canonical URLs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#canonicalhost">Canonical Hostnames</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#moveddocroot">Moved <code>DocumentRoot</code></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#trailingslash">Trailing Slash Problem</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#movehomedirs">Move Homedirs to Different Webserver</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#multipledirs">Search pages in more than one directory</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#setenvvars">Set Environment Variables According To URL Parts</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#uservhosts">Virtual User Hosts</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirecthome">Redirect Homedirs For Foreigners</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirectanchors">Redirecting Anchors</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#time-dependent">Time-Dependent Rewriting</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#backward-compatibility">Backward Compatibility for YYYY to XXXX migration</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#old-to-new">From Old to New (intern)</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#old-to-new-extern">From Old to New (extern)</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#static-to-dynamic">From Static to Dynamic</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#blocking-of-robots">Blocking of Robots</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#blocked-inline-images">Blocked Inline-Images</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxy-deny">Proxy Deny</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#external-rewriting">External Rewriting Engine</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Module
documentation</a></li><li><a href="rewrite_intro.html">mod_rewrite
introduction</a></li><li><a href="rewrite_guide_advanced.html">Advanced Rewrite Guide - advanced 
useful examples</a></li><li><a href="rewrite_tech.html">Technical details</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="canonicalurl" id="canonicalurl">Canonical URLs</a></h2>



<dl>
 <dt>Description:</dt>

   <dd>
     <p>On some webservers there are more than one URL for a
     resource. Usually there are canonical URLs (which should be
     actually used and distributed) and those which are just
     shortcuts, internal ones, etc. Independent of which URL the
     user supplied with the request he should finally see the
     canonical one only.</p>
   </dd>

   <dt>Solution:</dt>

     <dd>
       <p>We do an external HTTP redirect for all non-canonical
       URLs to fix them in the location view of the Browser and
       for all subsequent requests. In the example ruleset below
       we replace <code>/~user</code> by the canonical
       <code>/u/user</code> and fix a missing trailing slash for
       <code>/u/user</code>.</p>

<div class="example"><pre>
RewriteRule   ^/<strong>~</strong>([^/]+)/?(.*)    /<strong>u</strong>/$1/$2  [<strong>R</strong>]
RewriteRule   ^/u/(<strong>[^/]+</strong>)$  /$1/$2<strong>/</strong>   [<strong>R</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="canonicalhost" id="canonicalhost">Canonical Hostnames</a></h2>

      <dl>
        <dt>Description:</dt>

        <dd>The goal of this rule is to force the use of a particular
        hostname, in preference to other hostnames which may be used to
        reach the same site. For example, if you wish to force the use
        of <strong>www.example.com</strong> instead of
        <strong>example.com</strong>, you might use a variant of the
        following recipe.</dd>

        <dt>Solution:</dt>

        <dd>
<p>For sites running on a port other than 80:</p>
<div class="example"><pre>
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/?(.*)         http://www.example.com:%{SERVER_PORT}/$1 [L,R,NE]
</pre></div>

<p>And for a site running on port 80</p>
<div class="example"><pre>
RewriteCond %{HTTP_HOST}   !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         http://www.example.com/$1 [L,R,NE]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="moveddocroot" id="moveddocroot">Moved <code>DocumentRoot</code></a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
<p>Usually the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
of the webserver directly relates to the URL "<code>/</code>".
But often this data is not really of top-level priority. For example,
you may wish for visitors, on first entering a site, to go to a
particular subdirectory <code>/about/</code>. This may be accomplished
using the following ruleset:</p>
</dd>

        <dt>Solution:</dt>

        <dd>
          <p>We redirect the URL <code>/</code> to
          <code>/about/</code>:
          </p>
         
<div class="example"><pre>
RewriteEngine on
RewriteRule   <strong>^/$</strong>  /about/  [<strong>R</strong>]
</pre></div>

    <p>Note that this can also be handled using the <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> directive:</p>

<div class="example"><p><code>
RedirectMatch ^/$ http://example.com/e/www/
</code></p></div>
</dd>
</dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="trailingslash" id="trailingslash">Trailing Slash Problem</a></h2>

      

      <dl>
        <dt>Description:</dt>

    <dd><p>The vast majority of "trailing slash" problems can be dealt
    with using the techniques discussed in the <a href="http://httpd.apache.org/docs/misc/FAQ-E.html#set-servername">FAQ
    entry</a>. However, occasionally, there is a need to use mod_rewrite
    to handle a case where a missing trailing slash causes a URL to
    fail. This can happen, for example, after a series of complex
    rewrite rules.</p>
    </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution to this subtle problem is to let the server
          add the trailing slash automatically. To do this
          correctly we have to use an external redirect, so the
          browser correctly requests subsequent images etc. If we
          only did a internal rewrite, this would only work for the
          directory page, but would go wrong when any images are
          included into this page with relative URLs, because the
          browser would request an in-lined object. For instance, a
          request for <code>image.gif</code> in
          <code>/~quux/foo/index.html</code> would become
          <code>/~quux/image.gif</code> without the external
          redirect!</p>

          <p>So, to do this trick we write:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo<strong>$</strong>  foo<strong>/</strong>  [<strong>R</strong>]
</pre></div>

   <p>Alternately, you can put the following in a
   top-level <code>.htaccess</code> file in the content directory.
   But note that this creates some processing overhead.</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  <strong>-d</strong>
RewriteRule    ^(.+<strong>[^/]</strong>)$           $1<strong>/</strong>  [R]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="movehomedirs" id="movehomedirs">Move Homedirs to Different Webserver</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Many webmasters have asked for a solution to the
          following situation: They wanted to redirect just all
          homedirs on a webserver to another webserver. They usually
          need such things when establishing a newer webserver which
          will replace the old one over time.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution is trivial with <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
          On the old webserver we just redirect all
          <code>/~user/anypath</code> URLs to
          <code>http://newserver/~user/anypath</code>.</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^/~(.+)  http://<strong>newserver</strong>/~$1  [R,L]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multipledirs" id="multipledirs">Search pages in more than one directory</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Sometimes it is necessary to let the webserver search
          for pages in more than one directory. Here MultiViews or
          other techniques cannot help.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We program a explicit ruleset which searches for the
          files in the directories.</p>

<div class="example"><pre>
RewriteEngine on

#   first try to find it in dir1/...
#   ...and if found stop and be happy:
RewriteCond         /your/docroot/<strong>dir1</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir1</strong>/$1  [L]

#   second try to find it in dir2/...
#   ...and if found stop and be happy:
RewriteCond         /your/docroot/<strong>dir2</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir2</strong>/$1  [L]

#   else go on for other Alias or ScriptAlias directives,
#   etc.
RewriteRule   ^(.+)  -  [PT]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="setenvvars" id="setenvvars">Set Environment Variables According To URL Parts</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Perhaps you want to keep status information between
          requests and use the URL to encode it. But you don't want
          to use a CGI wrapper for all pages just to strip out this
          information.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a rewrite rule to strip out the status information
          and remember it via an environment variable which can be
          later dereferenced from within XSSI or CGI. This way a
          URL <code>/foo/S=java/bar/</code> gets translated to
          <code>/foo/bar/</code> and the environment variable named
          <code>STATUS</code> is set to the value "java".</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^(.*)/<strong>S=([^/]+)</strong>/(.*)    $1/$3 [E=<strong>STATUS:$2</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="uservhosts" id="uservhosts">Virtual User Hosts</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume that you want to provide
          <code>www.<strong>username</strong>.host.domain.com</code>
          for the homepage of username via just DNS A records to the
          same machine and without any virtualhosts on this
          machine.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>For HTTP/1.0 requests there is no solution, but for
          HTTP/1.1 requests which contain a Host: HTTP header we
          can use the following ruleset to rewrite
          <code>http://www.username.host.com/anypath</code>
          internally to <code>/home/username/anypath</code>:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{<strong>HTTP_HOST</strong>}                 ^www\.<strong>[^.]+</strong>\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.<strong>([^.]+)</strong>\.host\.com(.*) /home/<strong>$1</strong>$2
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="redirecthome" id="redirecthome">Redirect Homedirs For Foreigners</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>We want to redirect homedir URLs to another webserver
          <code>www.somewhere.com</code> when the requesting user
          does not stay in the local domain
          <code>ourdomain.com</code>. This is sometimes used in
          virtual host contexts.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Just a rewrite condition:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{REMOTE_HOST}  <strong>!^.+\.ourdomain\.com$</strong>
RewriteRule   ^(/~.+)         http://www.somewhere.com/$1 [R,L]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="redirectanchors" id="redirectanchors">Redirecting Anchors</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
        <p>By default, redirecting to an HTML anchor doesn't work,
        because mod_rewrite escapes the <code>#</code> character,
        turning it into <code>%23</code>. This, in turn, breaks the
        redirection.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Use the <code>[NE]</code> flag on the
          <code>RewriteRule</code>. NE stands for No Escape.
          </p>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="time-dependent" id="time-dependent">Time-Dependent Rewriting</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>When tricks like time-dependent content should happen a
          lot of webmasters still use CGI scripts which do for
          instance redirects to specialized pages. How can it be done
          via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>There are a lot of variables named <code>TIME_xxx</code>
          for rewrite conditions. In conjunction with the special
          lexicographic comparison patterns <code>&lt;STRING</code>,
          <code>&gt;STRING</code> and <code>=STRING</code> we can
          do time-dependent redirects:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &gt;0700
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &lt;1900
RewriteRule   ^foo\.html$             foo.day.html
RewriteRule   ^foo\.html$             foo.night.html
</pre></div>

          <p>This provides the content of <code>foo.day.html</code>
          under the URL <code>foo.html</code> from
          <code>07:00-19:00</code> and at the remaining time the
          contents of <code>foo.night.html</code>. Just a nice
          feature for a homepage...</p>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="backward-compatibility" id="backward-compatibility">Backward Compatibility for YYYY to XXXX migration</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we make URLs backward compatible (still
          existing virtually) after migrating <code>document.YYYY</code>
          to <code>document.XXXX</code>, e.g. after translating a
          bunch of <code>.html</code> files to <code>.phtml</code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We just rewrite the name to its basename and test for
          existence of the new extension. If it exists, we take
          that name, else we rewrite the URL to its original state.</p>


<div class="example"><pre>
#   backward compatibility ruleset for
#   rewriting document.html to document.phtml
#   when and only when document.phtml exists
#   but no longer document.html
RewriteEngine on
RewriteBase   /~quux/
#   parse out basename, but remember the fact
RewriteRule   ^(.*)\.html$              $1      [C,E=WasHTML:yes]
#   rewrite to document.phtml if exists
RewriteCond   %{REQUEST_FILENAME}.phtml -f
RewriteRule   ^(.*)$ $1.phtml                   [S=1]
#   else reverse the previous basename cutout
RewriteCond   %{ENV:WasHTML}            ^yes$
RewriteRule   ^(.*)$ $1.html
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="old-to-new" id="old-to-new">From Old to New (intern)</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume we have recently renamed the page
          <code>foo.html</code> to <code>bar.html</code> and now want
          to provide the old URL for backward compatibility. Actually
          we want that users of the old URL even not recognize that
          the pages was renamed.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We rewrite the old URL to the new one internally via the
          following rule:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="old-to-new-extern" id="old-to-new-extern">From Old to New (extern)</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume again that we have recently renamed the page
          <code>foo.html</code> to <code>bar.html</code> and now want
          to provide the old URL for backward compatibility. But this
          time we want that the users of the old URL get hinted to
          the new one, i.e. their browsers Location field should
          change, too.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We force a HTTP redirect to the new URL which leads to a
          change of the browsers and thus the users view:</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html  [<strong>R</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="static-to-dynamic" id="static-to-dynamic">From Static to Dynamic</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we transform a static page
          <code>foo.html</code> into a dynamic variant
          <code>foo.cgi</code> in a seamless way, i.e. without notice
          by the browser/user.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We just rewrite the URL to the CGI-script and force the
          handler to be <strong>cgi-script</strong> so that it is
          executed as a CGI program.
          This way a request to <code>/~quux/foo.html</code>
          internally leads to the invocation of
          <code>/~quux/foo.cgi</code>.</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo\.<strong>html</strong>$  foo.<strong>cgi</strong>  [H=<strong>cgi-script</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="blocking-of-robots" id="blocking-of-robots">Blocking of Robots</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we block a really annoying robot from
          retrieving pages of a specific webarea? A
          <code>/robots.txt</code> file containing entries of the
          "Robot Exclusion Protocol" is typically not enough to get
          rid of such a robot.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a ruleset which forbids the URLs of the webarea
          <code>/~quux/foo/arc/</code> (perhaps a very deep
          directory indexed area where the robot traversal would
          create big server load). We have to make sure that we
          forbid access only to the particular robot, i.e. just
          forbidding the host where the robot runs is not enough.
          This would block users from this host, too. We accomplish
          this by also matching the User-Agent HTTP header
          information.</p>

<div class="example"><pre>
RewriteCond %{HTTP_USER_AGENT}   ^<strong>NameOfBadRobot</strong>.*
RewriteCond %{REMOTE_ADDR}       ^<strong>123\.45\.67\.[8-9]</strong>$
RewriteRule ^<strong>/~quux/foo/arc/</strong>.+   -   [<strong>F</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="blocked-inline-images" id="blocked-inline-images">Blocked Inline-Images</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume we have under <code>http://www.quux-corp.de/~quux/</code>
          some pages with inlined GIF graphics. These graphics are
          nice, so others directly incorporate them via hyperlinks to
          their pages. We don't like this practice because it adds
          useless traffic to our server.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>While we cannot 100% protect the images from inclusion,
          we can at least restrict the cases where the browser
          sends a HTTP Referer header.</p>

<div class="example"><pre>
RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule <strong>.*\.gif$</strong>        -                                    [F]
</pre></div>

<div class="example"><pre>
RewriteCond %{HTTP_REFERER}         !^$
RewriteCond %{HTTP_REFERER}         !.*/foo-with-gif\.html$
RewriteRule <strong>^inlined-in-foo\.gif$</strong>   -                        [F]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxy-deny" id="proxy-deny">Proxy Deny</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we forbid a certain host or even a user of a
          special host from using the Apache proxy?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We first have to make sure <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          is below(!) <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> in the Configuration
          file when compiling the Apache webserver. This way it gets
          called <em>before</em> <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Then we
          configure the following for a host-dependent deny...</p>

<div class="example"><pre>
RewriteCond %{REMOTE_HOST} <strong>^badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>

          <p>...and this one for a user@host-dependent deny:</p>

<div class="example"><pre>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^badguy@badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="external-rewriting" id="external-rewriting">External Rewriting Engine</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>A FAQ: How can we solve the FOO/BAR/QUUX/etc.
          problem? There seems no solution by the use of
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>...</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Use an external <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>, i.e. a program which acts
          like a <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>. It is run once on startup of Apache
          receives the requested URLs on <code>STDIN</code> and has
          to put the resulting (usually rewritten) URL on
          <code>STDOUT</code> (same order!).</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    quux-map       <strong>prg:</strong>/path/to/map.quux.pl
RewriteRule   ^/~quux/(.*)$  /~quux/<strong>${quux-map:$1}</strong>
</pre></div>

<div class="example"><pre>
#!/path/to/perl

#   disable buffered I/O which would lead
#   to deadloops for the Apache server
$| = 1;

#   read URLs one per line from stdin and
#   generate substitution URL on stdout
while (&lt;&gt;) {
    s|^foo/|bar/|;
    print $_;
}
</pre></div>

          <p>This is a demonstration-only example and just rewrites
          all URLs <code>/~quux/foo/...</code> to
          <code>/~quux/bar/...</code>. Actually you can program
          whatever you like. But notice that while such maps can be
          <strong>used</strong> also by an average user, only the
          system administrator can <strong>define</strong> it.</p>
        </dd>
      </dl>

    </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                        rewrite/rewrite_guide_advanced.html                                                                 100644       0       0       140351 11256641270  15307  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>URL Rewriting Guide - Advanced topics - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>URL Rewriting Guide - Advanced topics</h1>



    <p>This document supplements the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    <a href="../mod/mod_rewrite.html">reference documentation</a>.
    It describes how one can use Apache's <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
    to solve typical URL-based problems with which webmasters are
    commonly confronted. We give detailed descriptions on how to
    solve each problem by configuring URL rewriting rulesets.</p>

    <div class="warning">ATTENTION: Depending on your server configuration
    it may be necessary to adjust the examples for your
    situation, e.g., adding the <code>[PT]</code> flag if
    using <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> and
    <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>, etc. Or rewriting a ruleset
    to work in <code>.htaccess</code> context instead
    of per-server context. Always try to understand what a
    particular ruleset really does before you use it; this
    avoids many problems.</div>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#cluster">Web Cluster with Consistent URL Space</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#structuredhomedirs">Structured Homedirs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filereorg">Filesystem Reorganization</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#redirect404">Redirect Failing URLs to Another Web Server</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#archive-access-multiplexer">Archive Access Multiplexer</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#browser-dependent-content">Browser Dependent Content</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#dynamic-mirror">Dynamic Mirror</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#reverse-dynamic-mirror">Reverse Dynamic Mirror</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#retrieve-missing-data">Retrieve Missing Data from Intranet</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#load-balancing">Load Balancing</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#new-mime-type">New MIME-type, New Service</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#on-the-fly-content">On-the-fly Content-Regeneration</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#autorefresh">Document With Autorefresh</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mass-virtual-hosting">Mass Virtual Hosting</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#host-deny">Host Deny</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxy-deny">Proxy Deny</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#special-authentication">Special Authentication Variant</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#referer-deflector">Referer-based Deflector</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Module
documentation</a></li><li><a href="rewrite_intro.html">mod_rewrite
introduction</a></li><li><a href="rewrite_guide.html">Rewrite Guide - useful
examples</a></li><li><a href="rewrite_tech.html">Technical details</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cluster" id="cluster">Web Cluster with Consistent URL Space</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>We want to create a homogeneous and consistent URL
          layout across all WWW servers on an Intranet web cluster, i.e.,
          all URLs (by definition server-local and thus
          server-dependent!) become server <em>independent</em>!
          What we want is to give the WWW namespace a single consistent
          layout: no URL should refer to
          any particular target server. The cluster itself
          should connect users automatically to a physical target
          host as needed, invisibly.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First, the knowledge of the target servers comes from
          (distributed) external maps which contain information on
          where our users, groups, and entities reside. They have the
          form:</p>

<div class="example"><pre>
user1  server_of_user1
user2  server_of_user2
:      :
</pre></div>

          <p>We put them into files <code>map.xxx-to-host</code>.
          Second we need to instruct all servers to redirect URLs
          of the forms:</p>

<div class="example"><pre>
/u/user/anypath
/g/group/anypath
/e/entity/anypath
</pre></div>

          <p>to</p>

<div class="example"><pre>
http://physical-host/u/user/anypath
http://physical-host/g/group/anypath
http://physical-host/e/entity/anypath
</pre></div>

          <p>when any URL path need not be valid on every server. The
          following ruleset does this for us with the help of the map
          files (assuming that server0 is a default server which
          will be used if a user has no entry in the map):</p>

<div class="example"><pre>
RewriteEngine on

RewriteMap      user-to-host   txt:/path/to/map.user-to-host
RewriteMap     group-to-host   txt:/path/to/map.group-to-host
RewriteMap    entity-to-host   txt:/path/to/map.entity-to-host

RewriteRule   ^/u/<strong>([^/]+)</strong>/?(.*)   http://<strong>${user-to-host:$1|server0}</strong>/u/$1/$2
RewriteRule   ^/g/<strong>([^/]+)</strong>/?(.*)  http://<strong>${group-to-host:$1|server0}</strong>/g/$1/$2
RewriteRule   ^/e/<strong>([^/]+)</strong>/?(.*) http://<strong>${entity-to-host:$1|server0}</strong>/e/$1/$2

RewriteRule   ^/([uge])/([^/]+)/?$          /$1/$2/.www/
RewriteRule   ^/([uge])/([^/]+)/([^.]+.+)   /$1/$2/.www/$3\
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="structuredhomedirs" id="structuredhomedirs">Structured Homedirs</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Some sites with thousands of users use a
          structured homedir layout, <em>i.e.</em> each homedir is in a
          subdirectory which begins (for instance) with the first
          character of the username. So, <code>/~foo/anypath</code>
          is <code>/home/<strong>f</strong>/foo/.www/anypath</code>
          while <code>/~bar/anypath</code> is
          <code>/home/<strong>b</strong>/bar/.www/anypath</code>.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use the following ruleset to expand the tilde URLs
          into the above layout.</p>

<div class="example"><pre>
RewriteEngine on
RewriteRule   ^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*)  /home/<strong>$2</strong>/$1/.www$3
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="filereorg" id="filereorg">Filesystem Reorganization</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>This really is a hardcore example: a killer application
          which heavily uses per-directory
          <code>RewriteRules</code> to get a smooth look and feel
          on the Web while its data structure is never touched or
          adjusted. Background: <strong><em>net.sw</em></strong> is
          my archive of freely available Unix software packages,
          which I started to collect in 1992. It is both my hobby
          and job to do this, because while I'm studying computer
          science I have also worked for many years as a system and
          network administrator in my spare time. Every week I need
          some sort of software so I created a deep hierarchy of
          directories where I stored the packages:</p>

<div class="example"><pre>
drwxrwxr-x   2 netsw  users    512 Aug  3 18:39 Audio/
drwxrwxr-x   2 netsw  users    512 Jul  9 14:37 Benchmark/
drwxrwxr-x  12 netsw  users    512 Jul  9 00:34 Crypto/
drwxrwxr-x   5 netsw  users    512 Jul  9 00:41 Database/
drwxrwxr-x   4 netsw  users    512 Jul 30 19:25 Dicts/
drwxrwxr-x  10 netsw  users    512 Jul  9 01:54 Graphic/
drwxrwxr-x   5 netsw  users    512 Jul  9 01:58 Hackers/
drwxrwxr-x   8 netsw  users    512 Jul  9 03:19 InfoSys/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:21 Math/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:24 Misc/
drwxrwxr-x   9 netsw  users    512 Aug  1 16:33 Network/
drwxrwxr-x   2 netsw  users    512 Jul  9 05:53 Office/
drwxrwxr-x   7 netsw  users    512 Jul  9 09:24 SoftEng/
drwxrwxr-x   7 netsw  users    512 Jul  9 12:17 System/
drwxrwxr-x  12 netsw  users    512 Aug  3 20:15 Typesetting/
drwxrwxr-x  10 netsw  users    512 Jul  9 14:08 X11/
</pre></div>

          <p>In July 1996 I decided to make this archive public to
          the world via a nice Web interface. "Nice" means that I
          wanted to offer an interface where you can browse
          directly through the archive hierarchy. And "nice" means
          that I didn't want to change anything inside this
          hierarchy - not even by putting some CGI scripts at the
          top of it. Why? Because the above structure should later be
          accessible via FTP as well, and I didn't want any
          Web or CGI stuff mixed in there.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution has two parts: The first is a set of CGI
          scripts which create all the pages at all directory
          levels on-the-fly. I put them under
          <code>/e/netsw/.www/</code> as follows:</p>

<div class="example"><pre>
-rw-r--r--   1 netsw  users    1318 Aug  1 18:10 .wwwacl
drwxr-xr-x  18 netsw  users     512 Aug  5 15:51 DATA/
-rw-rw-rw-   1 netsw  users  372982 Aug  5 16:35 LOGFILE
-rw-r--r--   1 netsw  users     659 Aug  4 09:27 TODO
-rw-r--r--   1 netsw  users    5697 Aug  1 18:01 netsw-about.html
-rwxr-xr-x   1 netsw  users     579 Aug  2 10:33 netsw-access.pl
-rwxr-xr-x   1 netsw  users    1532 Aug  1 17:35 netsw-changes.cgi
-rwxr-xr-x   1 netsw  users    2866 Aug  5 14:49 netsw-home.cgi
drwxr-xr-x   2 netsw  users     512 Jul  8 23:47 netsw-img/
-rwxr-xr-x   1 netsw  users   24050 Aug  5 15:49 netsw-lsdir.cgi
-rwxr-xr-x   1 netsw  users    1589 Aug  3 18:43 netsw-search.cgi
-rwxr-xr-x   1 netsw  users    1885 Aug  1 17:41 netsw-tree.cgi
-rw-r--r--   1 netsw  users     234 Jul 30 16:35 netsw-unlimit.lst
</pre></div>

          <p>The <code>DATA/</code> subdirectory holds the above
          directory structure, <em>i.e.</em> the real
          <strong><em>net.sw</em></strong> stuff, and gets
          automatically updated via <code>rdist</code> from time to
          time. The second part of the problem remains: how to link
          these two structures together into one smooth-looking URL
          tree? We want to hide the <code>DATA/</code> directory
          from the user while running the appropriate CGI scripts
          for the various URLs. Here is the solution: first I put
          the following into the per-directory configuration file
          in the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
          of the server to rewrite the public URL path
          <code>/net.sw/</code> to the internal path
          <code>/e/netsw</code>:</p>

<div class="example"><pre>
RewriteRule  ^net.sw$       net.sw/        [R]
RewriteRule  ^net.sw/(.*)$  e/netsw/$1
</pre></div>

          <p>The first rule is for requests which miss the trailing
          slash! The second rule does the real thing. And then
          comes the killer configuration which stays in the
          per-directory config file
          <code>/e/netsw/.www/.wwwacl</code>:</p>

<div class="example"><pre>
Options       ExecCGI FollowSymLinks Includes MultiViews

RewriteEngine on

#  we are reached via /net.sw/ prefix
RewriteBase   /net.sw/

#  first we rewrite the root dir to
#  the handling cgi script
RewriteRule   ^$                       netsw-home.cgi     [L]
RewriteRule   ^index\.html$            netsw-home.cgi     [L]

#  strip out the subdirs when
#  the browser requests us from perdir pages
RewriteRule   ^.+/(netsw-[^/]+/.+)$    $1                 [L]

#  and now break the rewriting for local files
RewriteRule   ^netsw-home\.cgi.*       -                  [L]
RewriteRule   ^netsw-changes\.cgi.*    -                  [L]
RewriteRule   ^netsw-search\.cgi.*     -                  [L]
RewriteRule   ^netsw-tree\.cgi$        -                  [L]
RewriteRule   ^netsw-about\.html$      -                  [L]
RewriteRule   ^netsw-img/.*$           -                  [L]

#  anything else is a subdir which gets handled
#  by another cgi script
RewriteRule   !^netsw-lsdir\.cgi.*     -                  [C]
RewriteRule   (.*)                     netsw-lsdir.cgi/$1
</pre></div>

          <p>Some hints for interpretation:</p>

          <ol>
            <li>Notice the <code>L</code> (last) flag and no
            substitution field ('<code>-</code>') in the fourth part</li>

            <li>Notice the <code>!</code> (not) character and
            the <code>C</code> (chain) flag at the first rule
            in the last part</li>

            <li>Notice the catch-all pattern in the last rule</li>
          </ol>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="redirect404" id="redirect404">Redirect Failing URLs to Another Web Server</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>A typical FAQ about URL rewriting is how to redirect
          failing requests on webserver A to webserver B. Usually
          this is done via <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> CGI scripts in Perl, but
          there is also a <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> solution.
          But note that this performs more poorly than using an
          <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code>
          CGI script!</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The first solution has the best performance but less
          flexibility, and is less safe:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   /your/docroot/%{REQUEST_FILENAME} <strong>!-f</strong>
RewriteRule   ^(.+)                             http://<strong>webserverB</strong>.dom/$1
</pre></div>

          <p>The problem here is that this will only work for pages
          inside the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. While you can add more
          Conditions (for instance to also handle homedirs, etc.)
          there is a better variant:</p>

<div class="example"><pre>
RewriteEngine on
RewriteCond   %{REQUEST_URI} <strong>!-U</strong>
RewriteRule   ^(.+)          http://<strong>webserverB</strong>.dom/$1
</pre></div>

          <p>This uses the URL look-ahead feature of <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
          The result is that this will work for all types of URLs
          and is safe. But it does have a performance impact on
          the web server, because for every request there is one
          more internal subrequest. So, if your web server runs on a
          powerful CPU, use this one. If it is a slow machine, use
          the first approach or better an <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> CGI script.</p>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="archive-access-multiplexer" id="archive-access-multiplexer">Archive Access Multiplexer</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Do you know the great CPAN (Comprehensive Perl Archive
          Network) under <a href="http://www.perl.com/CPAN">http://www.perl.com/CPAN</a>?
          CPAN automatically redirects browsers to one of many FTP
          servers around the world (generally one near the requesting
          client); each server carries a full CPAN mirror. This is
          effectively an FTP access multiplexing service.
          CPAN runs via CGI scripts, but how could a similar approach
          be implemented via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First we notice that as of version 3.0.0,
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> can
          also use the "<code>ftp:</code>" scheme on redirects.
          And second, the location approximation can be done by a
          <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
          over the top-level domain of the client.
          With a tricky chained ruleset we can use this top-level
          domain as a key to our multiplexing map.</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    multiplex                txt:/path/to/map.cxan
RewriteRule   ^/CxAN/(.*)              %{REMOTE_HOST}::$1                 [C]
RewriteRule   ^.+\.<strong>([a-zA-Z]+)</strong>::(.*)$  ${multiplex:<strong>$1</strong>|ftp.default.dom}$2  [R,L]
</pre></div>

<div class="example"><pre>
##
##  map.cxan -- Multiplexing Map for CxAN
##

de        ftp://ftp.cxan.de/CxAN/
uk        ftp://ftp.cxan.uk/CxAN/
com       ftp://ftp.cxan.com/CxAN/
 :
##EOF##
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="browser-dependent-content" id="browser-dependent-content">Browser Dependent Content</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>At least for important top-level pages it is sometimes
          necessary to provide the optimum of browser dependent
          content, i.e., one has to provide one version for
          current browsers, a different version for the Lynx and text-mode
          browsers, and another for other browsers.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We cannot use content negotiation because the browsers do
          not provide their type in that form. Instead we have to
          act on the HTTP header "User-Agent". The following config
          does the following: If the HTTP header "User-Agent"
          begins with "Mozilla/3", the page <code>foo.html</code>
          is rewritten to <code>foo.NS.html</code> and the
          rewriting stops. If the browser is "Lynx" or "Mozilla" of
          version 1 or 2, the URL becomes <code>foo.20.html</code>.
          All other browsers receive page <code>foo.32.html</code>.
          This is done with the following ruleset:</p>

<div class="example"><pre>
RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/3</strong>.*
RewriteRule ^foo\.html$         foo.<strong>NS</strong>.html          [<strong>L</strong>]

RewriteCond %{HTTP_USER_AGENT}  ^<strong>Lynx/</strong>.*         [OR]
RewriteCond %{HTTP_USER_AGENT}  ^<strong>Mozilla/[12]</strong>.*
RewriteRule ^foo\.html$         foo.<strong>20</strong>.html          [<strong>L</strong>]

RewriteRule ^foo\.html$         foo.<strong>32</strong>.html          [<strong>L</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="dynamic-mirror" id="dynamic-mirror">Dynamic Mirror</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Assume there are nice web pages on remote hosts we want
          to bring into our namespace. For FTP servers we would use
          the <code>mirror</code> program which actually maintains an
          explicit up-to-date copy of the remote data on the local
          machine. For a web server we could use the program
          <code>webcopy</code> which runs via HTTP. But both
          techniques have a major drawback: The local copy is
          always only as up-to-date as the last time we ran the program. It
          would be much better if the mirror was not a static one we
          have to establish explicitly. Instead we want a dynamic
          mirror with data which gets updated automatically
          as needed on the remote host(s).</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>To provide this feature we map the remote web page or even
          the complete remote web area to our namespace by the use
          of the <dfn>Proxy Throughput</dfn> feature
          (flag <code>[P]</code>):</p>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>hotsheet/</strong>(.*)$  <strong>http://www.tstimpreso.com/hotsheet/</strong>$1  [<strong>P</strong>]
</pre></div>

<div class="example"><pre>
RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>usa-news\.html</strong>$   <strong>http://www.quux-corp.com/news/index.html</strong>  [<strong>P</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="reverse-dynamic-mirror" id="reverse-dynamic-mirror">Reverse Dynamic Mirror</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>...</dd>

        <dt>Solution:</dt>

        <dd>
<div class="example"><pre>
RewriteEngine on
RewriteCond   /mirror/of/remotesite/$1           -U
RewriteRule   ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="retrieve-missing-data" id="retrieve-missing-data">Retrieve Missing Data from Intranet</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>This is a tricky way of virtually running a corporate
          (external) Internet web server
          (<code>www.quux-corp.dom</code>), while actually keeping
          and maintaining its data on an (internal) Intranet web server
          (<code>www2.quux-corp.dom</code>) which is protected by a
          firewall. The trick is that the external web server retrieves
          the requested data on-the-fly from the internal
          one.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>First, we must make sure that our firewall still
          protects the internal web server and only the
          external web server is allowed to retrieve data from it.
          On a packet-filtering firewall, for instance, we could
          configure a firewall ruleset like the following:</p>

<div class="example"><pre>
<strong>ALLOW</strong> Host www.quux-corp.dom Port &gt;1024 --&gt; Host www2.quux-corp.dom Port <strong>80</strong>
<strong>DENY</strong>  Host *                 Port *     --&gt; Host www2.quux-corp.dom Port <strong>80</strong>
</pre></div>

          <p>Just adjust it to your actual configuration syntax.
          Now we can establish the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          rules which request the missing data in the background
          through the proxy throughput feature:</p>

<div class="example"><pre>
RewriteRule ^/~([^/]+)/?(.*)          /home/$1/.www/$2
RewriteCond %{REQUEST_FILENAME}       <strong>!-f</strong>
RewriteCond %{REQUEST_FILENAME}       <strong>!-d</strong>
RewriteRule ^/home/([^/]+)/.www/?(.*) http://<strong>www2</strong>.quux-corp.dom/~$1/pub/$2 [<strong>P</strong>]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="load-balancing" id="load-balancing">Load Balancing</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Suppose we want to load balance the traffic to
          <code>www.example.com</code> over <code>www[0-5].example.com</code>
          (a total of 6 servers). How can this be done?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>There are many possible solutions for this problem.
          We will first discuss a common DNS-based method,
          and then one based on <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>:</p>

          <ol>
            <li>
              <strong>DNS Round-Robin</strong>

              <p>The simplest method for load-balancing is to use
              DNS round-robin.
              Here you just configure <code>www[0-9].example.com</code>
              as usual in your DNS with A (address) records, e.g.,</p>

<div class="example"><pre>
www0   IN  A       1.2.3.1
www1   IN  A       1.2.3.2
www2   IN  A       1.2.3.3
www3   IN  A       1.2.3.4
www4   IN  A       1.2.3.5
www5   IN  A       1.2.3.6
</pre></div>

              <p>Then you additionally add the following entries:</p>

<div class="example"><pre>
www   IN  A       1.2.3.1
www   IN  A       1.2.3.2
www   IN  A       1.2.3.3
www   IN  A       1.2.3.4
www   IN  A       1.2.3.5
</pre></div>

              <p>Now when <code>www.example.com</code> gets
              resolved, <code>BIND</code> gives out <code>www0-www5</code>
              - but in a permutated (rotated) order every time.
              This way the clients are spread over the various
              servers. But notice that this is not a perfect load
              balancing scheme, because DNS resolutions are
              cached by clients and other nameservers, so
              once a client has resolved <code>www.example.com</code>
              to a particular <code>wwwN.example.com</code>, all its
              subsequent requests will continue to go to the same
              IP (and thus a single server), rather than being
              distributed across the other available servers. But the
              overall result is
              okay because the requests are collectively
              spread over the various web servers.</p>
            </li>

            <li>
              <strong>DNS Load-Balancing</strong>

              <p>A sophisticated DNS-based method for
              load-balancing is to use the program
              <code>lbnamed</code> which can be found at <a href="http://www.stanford.edu/~riepel/lbnamed/">
              http://www.stanford.edu/~riepel/lbnamed/</a>.
              It is a Perl 5 program which, in conjunction with auxilliary
              tools, provides real load-balancing via
              DNS.</p>
            </li>

            <li>
              <strong>Proxy Throughput Round-Robin</strong>

              <p>In this variant we use <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
              and its proxy throughput feature. First we dedicate
              <code>www0.example.com</code> to be actually
              <code>www.example.com</code> by using a single</p>

<div class="example"><pre>
www    IN  CNAME   www0.example.com.
</pre></div>

              <p>entry in the DNS. Then we convert
              <code>www0.example.com</code> to a proxy-only server,
              i.e., we configure this machine so all arriving URLs
              are simply passed through its internal proxy to one of
              the 5 other servers (<code>www1-www5</code>). To
              accomplish this we first establish a ruleset which
              contacts a load balancing script <code>lb.pl</code>
              for all URLs.</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    lb      prg:/path/to/lb.pl
RewriteRule   ^/(.+)$ ${lb:$1}           [P,L]
</pre></div>

              <p>Then we write <code>lb.pl</code>:</p>

<div class="example"><pre>
#!/path/to/perl
##
##  lb.pl -- load balancing script
##

$| = 1;

$name   = "www";     # the hostname base
$first  = 1;         # the first server (not 0 here, because 0 is myself)
$last   = 5;         # the last server in the round-robin
$domain = "foo.dom"; # the domainname

$cnt = 0;
while (&lt;STDIN&gt;) {
    $cnt = (($cnt+1) % ($last+1-$first));
    $server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
    print "http://$server/$_";
}

##EOF##
</pre></div>

              <div class="note">A last notice: Why is this useful? Seems like
              <code>www0.example.com</code> still is overloaded? The
              answer is yes, it is overloaded, but with plain proxy
              throughput requests, only! All SSI, CGI, ePerl, etc.
              processing is handled done on the other machines.
              For a complicated site, this may work well. The biggest
              risk here is that www0 is now a single point of failure --
              if it crashes, the other servers are inaccessible.</div>
            </li>

            <li>
              <strong>Dedicated Load Balancers</strong>

              <p>There are more sophisticated solutions, as well. Cisco,
              F5, and several other companies sell hardware load
              balancers (typically used in pairs for redundancy), which
              offer sophisticated load balancing and auto-failover
              features. There are software packages which offer similar
              features on commodity hardware, as well. If you have
              enough money or need, check these out. The <a href="http://vegan.net/lb/">lb-l mailing list</a> is a
              good place to research.</p>
            </li>
          </ol>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="new-mime-type" id="new-mime-type">New MIME-type, New Service</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>On the net there are many nifty CGI programs. But
          their usage is usually boring, so a lot of webmasters
          don't use them. Even Apache's Action handler feature for
          MIME-types is only appropriate when the CGI programs
          don't need special URLs (actually <code>PATH_INFO</code>
          and <code>QUERY_STRINGS</code>) as their input. First,
          let us configure a new file type with extension
          <code>.scgi</code> (for secure CGI) which will be processed
          by the popular <code>cgiwrap</code> program. The problem
          here is that for instance if we use a Homogeneous URL Layout
          (see above) a file inside the user homedirs might have a URL
          like <code>/u/user/foo/bar.scgi</code>, but
          <code>cgiwrap</code> needs URLs in the form
          <code>/~user/foo/bar.scgi/</code>. The following rule
          solves the problem:</p>

<div class="example"><pre>
RewriteRule ^/[uge]/<strong>([^/]+)</strong>/\.www/(.+)\.scgi(.*) ...
... /internal/cgi/user/cgiwrap/~<strong>$1</strong>/$2.scgi$3  [NS,<strong>T=application/x-http-cgi</strong>]
</pre></div>

          <p>Or assume we have some more nifty programs:
          <code>wwwlog</code> (which displays the
          <code>access.log</code> for a URL subtree) and
          <code>wwwidx</code> (which runs Glimpse on a URL
          subtree). We have to provide the URL area to these
          programs so they know which area they are really working with.
          But usually this is complicated, because they may still be
          requested by the alternate URL form, i.e., typically we would
          run the <code>swwidx</code> program from within
          <code>/u/user/foo/</code> via hyperlink to</p>

<div class="example"><pre>
/internal/cgi/user/swwidx?i=/u/user/foo/
</pre></div>

          <p>which is ugly, because we have to hard-code
          <strong>both</strong> the location of the area
          <strong>and</strong> the location of the CGI inside the
          hyperlink. When we have to reorganize, we spend a
          lot of time changing the various hyperlinks.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>The solution here is to provide a special new URL format
          which automatically leads to the proper CGI invocation.
          We configure the following:</p>

<div class="example"><pre>
RewriteRule   ^/([uge])/([^/]+)(/?.*)/\*  /internal/cgi/user/wwwidx?i=/$1/$2$3/
RewriteRule   ^/([uge])/([^/]+)(/?.*):log /internal/cgi/user/wwwlog?f=/$1/$2$3
</pre></div>

          <p>Now the hyperlink to search at
          <code>/u/user/foo/</code> reads only</p>

<div class="example"><pre>
HREF="*"
</pre></div>

          <p>which internally gets automatically transformed to</p>

<div class="example"><pre>
/internal/cgi/user/wwwidx?i=/u/user/foo/
</pre></div>

          <p>The same approach leads to an invocation for the
          access log CGI program when the hyperlink
          <code>:log</code> gets used.</p>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="on-the-fly-content" id="on-the-fly-content">On-the-fly Content-Regeneration</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Here comes a really esoteric feature: Dynamically
          generated but statically served pages, i.e., pages should be
          delivered as pure static pages (read from the filesystem
          and just passed through), but they have to be generated
          dynamically by the web server if missing. This way you can
          have CGI-generated pages which are statically served unless an
          admin (or a <code>cron</code> job) removes the static contents. Then the
          contents gets refreshed.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          This is done via the following ruleset:

<div class="example"><pre>
RewriteCond %{REQUEST_FILENAME}   <strong>!-s</strong>
RewriteRule ^page\.<strong>html</strong>$          page.<strong>cgi</strong>   [T=application/x-httpd-cgi,L]
</pre></div>

          <p>Here a request for <code>page.html</code> leads to an
          internal run of a corresponding <code>page.cgi</code> if
          <code>page.html</code> is missing or has filesize
          null. The trick here is that <code>page.cgi</code> is a
          CGI script which (additionally to its <code>STDOUT</code>)
          writes its output to the file <code>page.html</code>.
          Once it has completed, the server sends out
          <code>page.html</code>. When the webmaster wants to force
          a refresh of the contents, he just removes
          <code>page.html</code> (typically from <code>cron</code>).</p>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="autorefresh" id="autorefresh">Document With Autorefresh</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Wouldn't it be nice, while creating a complex web page, if
          the web browser would automatically refresh the page every
          time we save a new version from within our editor?
          Impossible?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>No! We just combine the MIME multipart feature, the
          web server NPH feature, and the URL manipulation power of
          <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. First, we establish a new
          URL feature: Adding just <code>:refresh</code> to any
          URL causes the 'page' to be refreshed every time it is
          updated on the filesystem.</p>

<div class="example"><pre>
RewriteRule   ^(/[uge]/[^/]+/?.*):refresh  /internal/cgi/apache/nph-refresh?f=$1
</pre></div>

          <p>Now when we reference the URL</p>

<div class="example"><pre>
/u/foo/bar/page.html:refresh
</pre></div>

          <p>this leads to the internal invocation of the URL</p>

<div class="example"><pre>
/internal/cgi/apache/nph-refresh?f=/u/foo/bar/page.html
</pre></div>

          <p>The only missing part is the NPH-CGI script. Although
          one would usually say "left as an exercise to the reader"
          ;-) I will provide this, too.</p>

<div class="example"><pre>
#!/sw/bin/perl
##
##  nph-refresh -- NPH/CGI script for auto refreshing pages
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##
$| = 1;

#   split the QUERY_STRING variable
@pairs = split(/&amp;/, $ENV{'QUERY_STRING'});
foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $name =~ tr/A-Z/a-z/;
    $name = 'QS_' . $name;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    eval "\$$name = \"$value\"";
}
$QS_s = 1 if ($QS_s eq '');
$QS_n = 3600 if ($QS_n eq '');
if ($QS_f eq '') {
    print "HTTP/1.0 200 OK\n";
    print "Content-type: text/html\n\n";
    print "&amp;lt;b&amp;gt;ERROR&amp;lt;/b&amp;gt;: No file given\n";
    exit(0);
}
if (! -f $QS_f) {
    print "HTTP/1.0 200 OK\n";
    print "Content-type: text/html\n\n";
    print "&amp;lt;b&amp;gt;ERROR&amp;lt;/b&amp;gt;: File $QS_f not found\n";
    exit(0);
}

sub print_http_headers_multipart_begin {
    print "HTTP/1.0 200 OK\n";
    $bound = "ThisRandomString12345";
    print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
    &amp;print_http_headers_multipart_next;
}

sub print_http_headers_multipart_next {
    print "\n--$bound\n";
}

sub print_http_headers_multipart_end {
    print "\n--$bound--\n";
}

sub displayhtml {
    local($buffer) = @_;
    $len = length($buffer);
    print "Content-type: text/html\n";
    print "Content-length: $len\n\n";
    print $buffer;
}

sub readfile {
    local($file) = @_;
    local(*FP, $size, $buffer, $bytes);
    ($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
    $size = sprintf("%d", $size);
    open(FP, "&amp;lt;$file");
    $bytes = sysread(FP, $buffer, $size);
    close(FP);
    return $buffer;
}

$buffer = &amp;readfile($QS_f);
&amp;print_http_headers_multipart_begin;
&amp;displayhtml($buffer);

sub mystat {
    local($file) = $_[0];
    local($time);

    ($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
    return $mtime;
}

$mtimeL = &amp;mystat($QS_f);
$mtime = $mtime;
for ($n = 0; $n &amp;lt; $QS_n; $n++) {
    while (1) {
        $mtime = &amp;mystat($QS_f);
        if ($mtime ne $mtimeL) {
            $mtimeL = $mtime;
            sleep(2);
            $buffer = &amp;readfile($QS_f);
            &amp;print_http_headers_multipart_next;
            &amp;displayhtml($buffer);
            sleep(5);
            $mtimeL = &amp;mystat($QS_f);
            last;
        }
        sleep($QS_s);
    }
}

&amp;print_http_headers_multipart_end;

exit(0);

##EOF##
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mass-virtual-hosting" id="mass-virtual-hosting">Mass Virtual Hosting</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>The <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> feature of Apache is nice
          and works great when you just have a few dozen
          virtual hosts. But when you are an ISP and have hundreds of
          virtual hosts, this feature is suboptimal.</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>To provide this feature we map the remote web page or even
          the complete remote web area to our namespace using the
          <dfn>Proxy Throughput</dfn> feature (flag <code>[P]</code>):</p>

<div class="example"><pre>
##
##  vhost.map
##
www.vhost1.dom:80  /path/to/docroot/vhost1
www.vhost2.dom:80  /path/to/docroot/vhost2
     :
www.vhostN.dom:80  /path/to/docroot/vhostN
</pre></div>

<div class="example"><pre>
##
##  httpd.conf
##
    :
#   use the canonical hostname on redirects, etc.
UseCanonicalName on

    :
#   add the virtual host in front of the CLF-format
CustomLog  /path/to/access_log  "%{VHOST}e %h %l %u %t \"%r\" %&gt;s %b"
    :

#   enable the rewriting engine in the main server
RewriteEngine on

#   define two maps: one for fixing the URL and one which defines
#   the available virtual hosts with their corresponding
#   DocumentRoot.
RewriteMap    lowercase    int:tolower
RewriteMap    vhost        txt:/path/to/vhost.map

#   Now do the actual virtual host mapping
#   via a huge and complicated single rule:
#
#   1. make sure we don't map for common locations
RewriteCond   %{REQUEST_URI}  !^/commonurl1/.*
RewriteCond   %{REQUEST_URI}  !^/commonurl2/.*
    :
RewriteCond   %{REQUEST_URI}  !^/commonurlN/.*
#
#   2. make sure we have a Host header, because
#      currently our approach only supports
#      virtual hosting through this header
RewriteCond   %{HTTP_HOST}  !^$
#
#   3. lowercase the hostname
RewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$
#
#   4. lookup this hostname in vhost.map and
#      remember it only when it is a path
#      (and not "NONE" from above)
RewriteCond   ${vhost:%1}  ^(/.*)$
#
#   5. finally we can map the URL to its docroot location
#      and remember the virtual host for logging purposes
RewriteRule   ^/(.*)$   %1/$1  [E=VHOST:${lowercase:%{HTTP_HOST}}]
    :
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="host-deny" id="host-deny">Host Deny</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we forbid a list of externally configured hosts
          from using our server?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>For Apache &gt;= 1.3b6:</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    hosts-deny  txt:/path/to/hosts.deny
RewriteCond   ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond   ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule   ^/.*  -  [F]
</pre></div>

          <p>For Apache &lt;= 1.3b6:</p>

<div class="example"><pre>
RewriteEngine on
RewriteMap    hosts-deny  txt:/path/to/hosts.deny
RewriteRule   ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1
RewriteRule   !^NOT-FOUND/.* - [F]
RewriteRule   ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1
RewriteRule   !^NOT-FOUND/.* - [F]
RewriteRule   ^NOT-FOUND/(.*)$ /$1
</pre></div>

<div class="example"><pre>
##
##  hosts.deny
##
##  ATTENTION! This is a map, not a list, even when we treat it as such.
##             mod_rewrite parses it for key/value pairs, so at least a
##             dummy value "-" must be present for each entry.
##

193.102.180.41 -
bsdti1.sdm.de  -
192.76.162.40  -
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxy-deny" id="proxy-deny">Proxy Deny</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we forbid a certain host or even a user of a
          special host from using the Apache proxy?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We first have to make sure <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
          is below(!) <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> in the Configuration
          file when compiling the Apache web server. This way it gets
          called <em>before</em> <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Then we
          configure the following for a host-dependent deny...</p>

<div class="example"><pre>
RewriteCond %{REMOTE_HOST} <strong>^badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>

          <p>...and this one for a user@host-dependent deny:</p>

<div class="example"><pre>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^badguy@badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="special-authentication" id="special-authentication">Special Authentication Variant</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>Sometimes very special authentication is needed, for
          instance authentication which checks for a set of
          explicitly configured users. Only these should receive
          access and without explicit prompting (which would occur
          when using Basic Auth via <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>).</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>We use a list of rewrite conditions to exclude all except
          our friends:</p>

<div class="example"><pre>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend1@client1.quux-corp\.com$</strong>
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend2</strong>@client2.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend3</strong>@client3.quux-corp\.com$
RewriteRule ^/~quux/only-for-friends/      -                                 [F]
</pre></div>
        </dd>
      </dl>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="referer-deflector" id="referer-deflector">Referer-based Deflector</a></h2>

      

      <dl>
        <dt>Description:</dt>

        <dd>
          <p>How can we program a flexible URL Deflector which acts
          on the "Referer" HTTP header and can be configured with as
          many referring pages as we like?</p>
        </dd>

        <dt>Solution:</dt>

        <dd>
          <p>Use the following really tricky ruleset...</p>

<div class="example"><pre>
RewriteMap  deflector txt:/path/to/deflector.map

RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}} ^-$
RewriteRule ^.* %{HTTP_REFERER} [R,L]

RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^.* ${deflector:%{HTTP_REFERER}} [R,L]
</pre></div>

          <p>... in conjunction with a corresponding rewrite
          map:</p>

<div class="example"><pre>
##
##  deflector.map
##

http://www.badguys.com/bad/index.html    -
http://www.badguys.com/bad/index2.html   -
http://www.badguys.com/bad/index3.html   http://somewhere.com/
</pre></div>

          <p>This automatically redirects the request back to the
          referring page (when "<code>-</code>" is used as the value
          in the map) or to a specific URL (when an URL is specified
          in the map as the second argument).</p>
        </dd>
      </dl>

    </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                       rewrite/rewrite_intro.html                                                                          100644       0       0        40402 11256641270  13474  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache mod_rewrite Introduction - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Apache mod_rewrite Introduction</h1>


<p>This document supplements the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
<a href="../mod/mod_rewrite.html">reference documentation</a>. It
describes the basic concepts necessary for use of
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Other documents go into greater detail,
but this doc should help the beginner get their feet wet.
</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#regex">Regular Expressions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule basics</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#flags">Rewrite Flags</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">Rewrite conditions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rewritemap">Rewrite maps</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#htaccess">.htaccess files</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Module
documentation</a></li><li><a href="rewrite_tech.html">Technical details</a></li><li><a href="rewrite_guide.html">Practical solutions to common
problems</a></li><li><a href="rewrite_guide_advanced.html">Practical solutions to
advanced problems</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Introduction</a></h2>
<p>The Apache module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> is a very powerful and
sophisticated module which provides a way to do URL manipulations. With
it, you can do nearly all types of URL rewriting that you may need. It
is, however, somewhat complex, and may be intimidating to the beginner.
There is also a tendency to treat rewrite rules as magic incantation,
using them without actually understanding what they do.</p>

<p>This document attempts to give sufficient background so that what
follows is understood, rather than just copied blindly.
</p>

<p>Remember that many common URL-manipulation tasks don't require the
full power and complexity of <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. For simple
tasks, see <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> and the documentation
on <a href="../urlmapping.html">mapping URLs to the
filesystem</a>.</p>

<p>Finally, before proceeding, be sure to configure
the <code class="directive"><a href="../mod/mod_rewrite.html#rewritelog">RewriteLog</a></code>. Although
this log file can give an overwhelming amount of information, it is
indispensable in debugging problems with <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
configuration, since it will tell you exactly how each rule is
processed.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="regex" id="regex">Regular Expressions</a></h2>

<p>mod_rewrite uses the <a href="http://pcre.org/">Perl Compatible
Regular Expression</a> vocabulary. In this document, we do not attempt
to provide a detailed reference to regular expressions. For that, we
recommend the <a href="http://pcre.org/pcre.txt">PCRE man pages</a>, the
<a href="http://perldoc.perl.org/perlre.html">Perl regular
expression man page</a>, and <a href="http://www.oreilly.com/catalog/regex2/index.html">Mastering
Regular Expressions, by Jeffrey Friedl</a>.</p>

<p>In this document, we attempt to provide enough of a regex vocabulary
to get you started, without being overwhelming, in the hope that
<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s will be scientific
formulae, rather than magical incantations.</p>

<h3><a name="regexvocab" id="regexvocab">Regex vocabulary</a></h3>

<p>The following are the minimal building blocks you will need, in order
to write regular expressions and <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>s. They certainly do not
represent a complete regular expression vocabulary, but they are a good
place to start, and should help you read basic regular expressions, as
well as write your own.</p>

<table>
<tr>
<th>Character</th>
<th>Meaning</th>
<th>Example</th>
</tr>

<tr><td><code>.</code></td><td>Matches any single
character</td><td><code>c.t</code> will match <code>cat</code>,
<code>cot</code>, <code>cut</code>, etc.</td></tr>
<tr><td><code>+</code></td><td>Repeats the previous match one or more
times</td><td><code>a+</code> matches <code>a</code>, <code>aa</code>, 
<code>aaa</code>, etc</td></tr>
<tr><td><code>*</code></td><td>Repeats the previous match zero or more
times.</td><td><code>a*</code> matches all the same things
<code>a+</code> matches, but will also match an empty string.</td></tr>
<tr><td><code>?</code></td><td>Makes the match optional.</td><td>
<code>colou?r</code> will match <code>color</code> and <code>colour</code>.</td>
</tr>
<tr><td><code>^</code></td><td>Called an anchor, matches the beginning
of the string</td><td><code>^a</code> matches a string that begins with
<code>a</code></td></tr>
<tr><td><code>$</code></td><td>The other anchor, this matches the end of
the string.</td><td><code>a$</code> matches a string that ends with
<code>a</code>.</td></tr>
<tr><td><code>( )</code></td><td>Groups several characters into a single
unit, and captures a match for use in a backreference.</td><td><code>(ab)+</code> 
matches <code>ababab</code> - that is, the <code>+</code> applies to the group.
For more on backreferences see <a href="#InternalBackRefs">below</a>.</td></tr>
<tr><td><code>[ ]</code></td><td>A character class - matches one of the
characters</td><td><code>c[uoa]t</code> matches <code>cut</code>,
<code>cot</code> or <code>cat</code>.</td></tr>
<tr><td><code>[^ ]</code></td><td>Negative character class - matches any character not specified</td><td><code>c[^/]t</code> matches <code>cat</code> or <code>c=t</code> but not <code>c/t</code></td></tr>
</table>

<p>In <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> the <code>!</code> character can be
used before a regular expression to negate it. This is, a string will
be considered to have matched only if it does not match the rest of
the expression.</p>



<h3><a name="InternalBackRefs" id="InternalBackRefs">Regex Back-Reference Availability</a></h3>

      <p>One important thing here has to be remembered: Whenever you
      use parentheses in <em>Pattern</em> or in one of the
      <em>CondPattern</em>, back-references are internally created
      which can be used with the strings <code>$N</code> and
      <code>%N</code> (see below). These are available for creating
      the strings <em>Substitution</em> and <em>TestString</em>.
      Figure 2 shows to which locations the back-references are
      transferred for expansion.</p>

<p class="figure">
      <img src="../images/mod_rewrite_fig2.gif" width="381" height="179" alt="[Needs graphics capability to display]" /><br />
      <dfn>Figure 2:</dfn> The back-reference flow through a rule.
</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewriterule" id="rewriterule">RewriteRule basics</a></h2>
<p>A <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> consists
of three arguments separated by spaces. The arguments are</p>
<ol>
<li><var>Pattern</var>: which incoming URLs should be affected by the rule;</li>
<li><var>Substitution</var>: where should the matching requests be sent;</li>
<li><var>[flags]</var>: options affecting the rewritten request.</li>
</ol>

<p>The <var>Pattern</var> is always a <a href="#regex">regular
expression</a> matched against the URL-Path of the incoming request
(the part after the hostname but before any question mark indicating
the beginning of a query string).</p>

<p>The <var>Substitution</var> can itself be one of three things:</p>

<dl>
<dt>A full filesystem path to a resource</dt>
<dd>
<div class="example"><p><code>
RewriteRule ^/games.* /usr/local/games/web
</code></p></div>
<p>This maps a request to an arbitrary location on your filesystem, much
like the <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> directive.</p>
</dd>

<dt>A web-path to a resource</dt>
<dd>
<div class="example"><p><code>
RewriteRule ^/foo$ /bar
</code></p></div>
<p>If <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> is set
to <code>/usr/local/apache2/htdocs</code>, then this directive would
map requests for <code>http://example.com/foo</code> to the
path <code>/usr/local/apache2/htdocs/bar</code>.</p>
</dd>

<dt>An absolute URL</dt>
<dd>
<div class="example"><p><code>
RewriteRule ^/product/view$ http://site2.example.com/seeproduct.html [R]
</code></p></div>
<p>This tells the client to make a new request for the specified URL.</p>
</dd>
</dl>

<p>The <var>Substitution</var> can also
contain <em>back-references</em> to parts of the incoming URL-path
matched by the <var>Pattern</var>. Consider the following:</p>
<div class="example"><p><code>
RewriteRule ^/product/(.*)/view$ /var/web/productdb/$1
</code></p></div>
<p>The variable <code>$1</code> will be replaced with whatever text
was matched by the expression inside the parenthesis in
the <var>Pattern</var>. For example, a request
for <code>http://example.com/product/r14df/view</code> will be mapped
to the path <code>/var/web/productdb/r14df</code>.</p>

<p>If there is more than one expression in parenthesis, they are
available in order in the
variables <code>$1</code>, <code>$2</code>, <code>$3</code>, and so
on.</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="flags" id="flags">Rewrite Flags</a></h2>
<p>The behavior of a <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> can be modified by the
application of one or more flags to the end of the rule. For example, the
matching behavior of a rule can be made case-insensitive by the
application of the <code>[NC]</code> flag:
</p>
<div class="example"><p><code>
RewriteRule ^puppy.html smalldog.html [NC]
</code></p></div>

<p>For more details on the available flags, their meanings, and
examples, see the <a href="rewrite_flags.html">Rewrite Flags</a> document.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewritecond" id="rewritecond">Rewrite conditions</a></h2>
<p>One or more <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
directives can be used to restrict the types of requests that will be
subject to the
following <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>. The
first argument is a variable describing a characteristic of the
request, the second argument is a <a href="#regex">regular
expression</a> that must match the variable, and a third optional
argument is a list of flags that modify how the match is evaluated.</p>

<p>For example, to send all requests from a particular IP range to a
different server, you could use:</p>
<div class="example"><p><code>
RewriteCond %{REMOTE_ADDR} ^10\.2\.<br />
RewriteRule (.*) http://intranet.example.com$1
</code></p></div>

<p>When more than
one <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> is
specified, they must all match for
the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to be
applied. For example, to deny requests that contain the word "hack" in
their query string, except if they also contain a cookie containing
the word "go", you could use:</p>
<div class="example"><p><code>
RewriteCond %{QUERY_STRING} hack<br />
RewriteCond %{HTTP_COOKIE} !go<br />
RewriteRule .* - [F]
</code></p></div>
<p>Notice that the exclamation mark specifies a negative match, so the rule is only applied if the cookie does not contain "go".</p>

<p>Matches in the regular expressions contained in
the <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>s can be
used as part of the <var>Substitution</var> in
the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> using the
variables <code>%1</code>, <code>%2</code>, etc. For example, this
will direct the request to a different directory depending on the
hostname used to access the site:</p>
<div class="example"><p><code>
RewriteCond %{HTTP_HOST} (.*)<br />
RewriteRule ^/(.*) /sites/%1/$1
</code></p></div>
<p>If the request was for <code>http://example.com/foo/bar</code>,
then <code>%1</code> would contain <code>example.com</code>
and <code>$1</code> would contain <code>foo/bar</code>.</p>



</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewritemap" id="rewritemap">Rewrite maps</a></h2>
<p>See <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="htaccess" id="htaccess">.htaccess files</a></h2>

<p>Rewriting is typically configured in the main server configuration
setting (outside any <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section) or
inside <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
containers. This is the easiest way to do rewriting and is
recommended. It is possible, however, to do rewriting
inside <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>
sections or <a href="../howto/htaccess.html"><code>.htaccess</code>
files</a> at the expense of some additional complexity. This technique
is called per-directory rewrites.</p>

<p>The main difference with per-server rewrites is that the path
prefix of the directory containing the <code>.htaccess</code> file is
stripped before matching in
the <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>. In addition, the <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> should be used to assure the request is properly mapped.</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                              rewrite/rewrite_tech.html                                                                           100644       0       0        22715 11256641270  13273  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Apache mod_rewrite Technical Details - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Apache mod_rewrite Technical Details</h1>


<p>This document discusses some of the technical details of mod_rewrite
and URL matching.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#Internal">Internal Processing</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#InternalAPI">API Phases</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#InternalRuleset">Ruleset Processing</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Module
documentation</a></li><li><a href="rewrite_intro.html">mod_rewrite
introduction</a></li><li><a href="rewrite_guide.html">Rewrite Guide - useful 
examples</a></li><li><a href="rewrite_guide_advanced.html">Advanced Rewrite Guide -
advanced useful examples</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="Internal" id="Internal">Internal Processing</a></h2>

      <p>The internal processing of this module is very complex but
      needs to be explained once even to the average user to avoid
      common mistakes and to let you exploit its full
      functionality.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="InternalAPI" id="InternalAPI">API Phases</a></h2>

      <p>First you have to understand that when Apache processes a
      HTTP request it does this in phases. A hook for each of these
      phases is provided by the Apache API. Mod_rewrite uses two of
      these hooks: the URL-to-filename translation hook which is
      used after the HTTP request has been read but before any
      authorization starts and the Fixup hook which is triggered
      after the authorization phases and after the per-directory
      config files (<code>.htaccess</code>) have been read, but
      before the content handler is activated.</p>

      <p>So, after a request comes in and Apache has determined the
      corresponding server (or virtual server) the rewriting engine
      starts processing of all mod_rewrite directives from the
      per-server configuration in the URL-to-filename phase. A few
      steps later when the final data directories are found, the
      per-directory configuration directives of mod_rewrite are
      triggered in the Fixup phase. In both situations mod_rewrite
      rewrites URLs either to new URLs or to filenames, although
      there is no obvious distinction between them. This is a usage
      of the API which was not intended to be this way when the API
      was designed, but as of Apache 1.x this is the only way
      mod_rewrite can operate. To make this point more clear
      remember the following two points:</p>

      <ol>
        <li>Although mod_rewrite rewrites URLs to URLs, URLs to
        filenames and even filenames to filenames, the API
        currently provides only a URL-to-filename hook. In Apache
        2.0 the two missing hooks will be added to make the
        processing more clear. But this point has no drawbacks for
        the user, it is just a fact which should be remembered:
        Apache does more in the URL-to-filename hook than the API
        intends for it.</li>

        <li>
          Unbelievably mod_rewrite provides URL manipulations in
          per-directory context, <em>i.e.</em>, within
          <code>.htaccess</code> files, although these are reached
          a very long time after the URLs have been translated to
          filenames. It has to be this way because
          <code>.htaccess</code> files live in the filesystem, so
          processing has already reached this stage. In other
          words: According to the API phases at this time it is too
          late for any URL manipulations. To overcome this chicken
          and egg problem mod_rewrite uses a trick: When you
          manipulate a URL/filename in per-directory context
          mod_rewrite first rewrites the filename back to its
          corresponding URL (which is usually impossible, but see
          the <code>RewriteBase</code> directive below for the
          trick to achieve this) and then initiates a new internal
          sub-request with the new URL. This restarts processing of
          the API phases. 

          <p>Again mod_rewrite tries hard to make this complicated
          step totally transparent to the user, but you should
          remember here: While URL manipulations in per-server
          context are really fast and efficient, per-directory
          rewrites are slow and inefficient due to this chicken and
          egg problem. But on the other hand this is the only way
          mod_rewrite can provide (locally restricted) URL
          manipulations to the average user.</p>
        </li>
      </ol>

      <p>Don't forget these two points!</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="InternalRuleset" id="InternalRuleset">Ruleset Processing</a></h2>
 
      <p>Now when mod_rewrite is triggered in these two API phases, it
      reads the configured rulesets from its configuration
      structure (which itself was either created on startup for
      per-server context or during the directory walk of the Apache
      kernel for per-directory context). Then the URL rewriting
      engine is started with the contained ruleset (one or more
      rules together with their conditions). The operation of the
      URL rewriting engine itself is exactly the same for both
      configuration contexts. Only the final result processing is
      different. </p>

      <p>The order of rules in the ruleset is important because the
      rewriting engine processes them in a special (and not very
      obvious) order. The rule is this: The rewriting engine loops
      through the ruleset rule by rule (<code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directives) and
      when a particular rule matches it optionally loops through
      existing corresponding conditions (<code>RewriteCond</code>
      directives). For historical reasons the conditions are given
      first, and so the control flow is a little bit long-winded. See
      Figure 1 for more details.</p>
<p class="figure">
      <img src="../images/mod_rewrite_fig1.gif" width="428" height="385" alt="[Needs graphics capability to display]" /><br />
      <dfn>Figure 1:</dfn>The control flow through the rewriting ruleset
</p>
      <p>As you can see, first the URL is matched against the
      <em>Pattern</em> of each rule. When it fails mod_rewrite
      immediately stops processing this rule and continues with the
      next rule. If the <em>Pattern</em> matches, mod_rewrite looks
      for corresponding rule conditions. If none are present, it
      just substitutes the URL with a new value which is
      constructed from the string <em>Substitution</em> and goes on
      with its rule-looping. But if conditions exist, it starts an
      inner loop for processing them in the order that they are
      listed. For conditions the logic is different: we don't match
      a pattern against the current URL. Instead we first create a
      string <em>TestString</em> by expanding variables,
      back-references, map lookups, <em>etc.</em> and then we try
      to match <em>CondPattern</em> against it. If the pattern
      doesn't match, the complete set of conditions and the
      corresponding rule fails. If the pattern matches, then the
      next condition is processed until no more conditions are
      available. If all conditions match, processing is continued
      with the substitution of the URL with
      <em>Substitution</em>.</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                   sections.html                                                                                       100644       0       0        70120 11256641270  10746  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Yapılandırma Bölümleri - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Yapılandırma Bölümleri</h1>

 <p><a href="configuring.html">Yapılandırma dosyaları</a>ndaki 
yönergeler sunucunun tamamına uygulanacağı gibi sadece belli dizinler, 
dosyalar, konaklar veya URL’lere uygulanmakla sınırlanabilir. Bu belgede, 
yapılandırma bölümü taşıyıcılarınının veya <code>.htaccess</code> 
dosyalarının, yapılandırma dosyalarındaki diğer yönergelerin etki alanlarını 
değiştirtirmek için nasıl kullanılacağı açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#types">Yapılandırma Bölümü Taşıyıcılarının Türleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#file-and-web">Dosya Sistemi ve Site Alanı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Sanal Konaklar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#proxy">Vekil</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#whatwhere">Hangi Yönergelere İzin Veriliyor?</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#mergin">Bölümler Nasıl Katıştırılır?</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="types" id="types">Yapılandırma Bölümü Taşıyıcılarının Türleri</a></h2>

<table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/core.html">core</a></code></li><li><code class="module"><a href="./mod/mod_version.html">mod_version</a></code></li><li><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code></li><li><code class="directive"><a href="./mod/mod_version.html#ifversion">&lt;IfVersion&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxymatch">&lt;ProxyMatch&gt;</a></code></li><li><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li></ul></td></tr></table>

<p>İki temel taşıyıcı türü vardır. Taşıyıcıların çoğu her istek için 
değerlendirmeye alınır. Taşıyıcılardaki yönergeler ise sadece bu taşıyıcılarla 
eşleşen istekler için uygulanır. Diğer yandan, <code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code>, <code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> ve <code class="directive"><a href="./mod/mod_version.html#ifversion">&lt;IfVersion&gt;</a></code> taşıyıcıları sadece sunucu başlatılırken veya yeniden 
başlatılırken değerlendirmeye alınır. Başlatma sırasında gerektirdikleri 
koşullar sağlanıyorsa içerdikleri yönergeler tüm isteklere uygulanır. 
Aksi takdirde, içerdikleri yönergeler yok sayılır.</p>

<p><code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code> yönergesi 
sadece <code class="program"><a href="./programs/httpd.html">httpd</a></code> komut satırında uygun parametreler 
tanımlanmışsa uygulanabilecek yönergeleri içerir. Örneğin, aşağıdaki 
yapılandırma ile tüm isteklerin diğer siteye yönlendirilebilmesi sadece 
sunucu <code>httpd -DClosedForNow</code> komut satırı ile başlatıldığı 
takdirde mümkün olur:</p>

<div class="example"><p><code>
&lt;IfDefine ClosedForNow&gt;<br />
<span class="indent">
  Redirect / http://otherserver.example.com/<br />
</span>
&lt;/IfDefine&gt;
</code></p></div>

<p><code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> yönergesi 
sadece belli bir modülün sunucuda kullanılabilir durumda olması halinde 
uygulanabilecek yönergeleri içerir. Modülün ya sunucuyla birlikte durağan 
olarak derlenmiş olması ya da devingen olarak derlenmiş ve yapılandırma 
dosyasında yönergeden önce o modüle ilişkin bir <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> satırının bulunması gerekir. Bu yönergeyi sadece 
belli bir modülün varlığının veya yokluğunun yapılandırma dosyanızın 
çalışmasını etkilememesini istediğiniz durumlarda kullanmalısınız. Eksik 
modüllerle ilgili hata iletilerini engellediğinden, taşıyıcı içine, her 
zaman çalışması istenen yönergeler konulmamalıdır.</p>

<p>Aşağıdaki örnekte, <code class="directive"><a href="./mod/mod_mime_magic.html#mimemagicfiles">MimeMagicFiles</a></code> yönergesi sadece 
<code class="module"><a href="./mod/mod_mime_magic.html">mod_mime_magic</a></code> modülü mevcutsa uygulanacaktır.</p>

<div class="example"><p><code>
&lt;IfModule mod_mime_magic.c&gt;<br />
<span class="indent">
  MimeMagicFile conf/magic<br />
</span>
&lt;/IfModule&gt;
</code></p></div>

<p><code class="directive"><a href="./mod/mod_version.html#ifversion">&lt;IfVersion&gt;</a></code> 
yönergesi sunucunun belli bir sürümünün çalıştırılması halinde uygulanabilecek 
yönergeleri içerebilmesi dışında <code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code> ve <code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> yönergeleri gibidir. <code class="module"><a href="./mod/mod_version.html">mod_version</a></code> 
modülü farklı httpd sürümleri ve farklı yapılandırmalarla büyük ağlarda 
çalışmayı mümkün kılmak veya sürüm denemeleri yapabilmek amacıyla 
tasarlanmıştır.</p>

<div class="example"><p><code>
&lt;IfVersion &gt;= 2.1&gt;<br />
<span class="indent">
  # burası sadece 2.1.0 veya daha üstü sürümlerde<br />
  # iş görür.<br />
</span>
&lt;/IfVersion&gt;
</code></p></div>

<p><code class="directive"><a href="./mod/core.html#ifdefine">&lt;IfDefine&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#ifmodule">&lt;IfModule&gt;</a></code> ve
<code class="directive"><a href="./mod/mod_version.html#ifversion">&lt;IfVersion&gt;</a></code> 
yönergelerinin önüne "!" konularak olumsuz koşullar için uygulanabilir. 
Ayrıca, bu bölümler daha karmaşık sınırlamalar elde etmek amacıyla bir 
diğerinin içinde kullanılabilirler.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="file-and-web" id="file-and-web">Dosya Sistemi ve Site Alanı</a></h2>

<p>En sık kullanılan yapılandırma bölümü taşıyıcıları dosya sistemindeki 
veya site alanındaki belli yerlerin yapılandırmalarını değiştirmekte 
kullanılanlardır. Öncelikle, bu ikisi arasındaki farkları bilmek önemlidir. 
Dosya sistemi disklerinizin işletim sistemi tarafından size gösterilen halidir. 
Örneğin, öntanımlı kurulumda Apache, Unix sistemlerinde 
<code>/usr/local/apache2</code> altındayken Windows sistemlerinde 
<code>"c:/Program Files/Apache Group/Apache2"</code> altındadır. 
(Bilgi: Windows için bile, Apache’de dosya yolu belirtilirken tersbölü 
değil normal bölü karakterleri kullanılır.) Site alanı ise sunucu tarafından 
istemciye sunulan dizin ağacıdır. Yani, site alanı içindeki <code>/dir/</code> 
dizini, Apache’nin Unix üzerinde dosya sistemine öntanımlı olarak kurulduğu 
yer göz önüne alınarak, dosya sistemindeki  
<code>/usr/local/apache2/htdocs/dir/</code> dizinine karşılıktır. Site 
sayfaları veritabanlarından veya başka yerlerden devingen olarak 
üretilebildiğinden site alanlarının doğrudan dosya sistemine eşlenmesi 
gerekli değildir.</p>

<h3><a name="filesystem" id="filesystem">Dosya Sistemi Taşıyıcıları</a></h3>

<p><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>
ve <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> taşıyıcıları,
<a class="glossarylink" href="./glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> karşılıkları ile beraber, 
yönergeleri dosya sisteminin parçalarına uygularlar. Bir <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümü içindeki yönergeler 
belli bir dosya sistemi dizinine ve onun alt dizinlerine uygulanır. Aynı etki 
<a href="howto/htaccess.html">.htaccess dosyaları</a> kullanılarak da 
sağlanabilir. Örneğin aşağıdaki yapılandırmada, <code>/var/web/dir1</code> 
dizini ve alt dizinlerinde dizin içeriğinin listelenmesi etkin kılınmaktadır.</p>

<div class="example"><p><code>
&lt;Directory /var/web/dir1&gt;<br />
<span class="indent">
  Options +Indexes<br />
</span>
&lt;/Directory&gt;
</code></p></div>

<p>Bir <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> bölümü 
içindeki yönergeler, hangi dizinde bulunduğuna bakılmaksızın ismi 
belirtilen dosyalara uygulanır. Örneğin, aşağıdaki yapılandırma yönergeleri 
yapılandırma dosyasının ana bölümüne yerleştirildiği takdirde 
<code>gizli.html</code> isimli dosyalara nerede bulunursa bulunsun erişime 
izin vermeyecektir.</p>

<div class="example"><p><code>
&lt;Files gizli.html&gt;<br />
<span class="indent">
Order allow,deny<br />
Deny from all<br />
</span>
&lt;/Files&gt;
</code></p></div>

<p>Dosya sisteminin belli bir yerindeki belli dosyalarla ilgili yaptırımlar 
için <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> ve
<code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümleri 
birlikte kullanılabilir. Örneğin, aşağıdaki yapılandırma 
<code>/var/web/dir1/gizli.html</code>,
<code>/var/web/dir1/subdir2/gizli.html</code>,
<code>/var/web/dir1/subdir3/gizli.html</code> ve 
<code>/var/web/dir1/</code> altında bulunabilecek diğer tüm 
<code>gizli.html</code> dosyalarına erişimi yasaklar.</p>

<div class="example"><p><code>
&lt;Directory /var/web/dir1&gt;<br />
<span class="indent">
&lt;Files gizli.html&gt;<br />
<span class="indent">
Order allow,deny<br />
Deny from all<br />
</span>
&lt;/Files&gt;<br />
</span>
&lt;/Directory&gt;
</code></p></div>


<h3><a name="webspace" id="webspace">Site Alanı Taşıyıcıları</a></h3>

<p><code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> yönergesi ve 
yönergenin <a class="glossarylink" href="./glossary.html#regex" title="sözlüğe bakınız">düzenli ifade</a> karşılığı site 
alanındaki içerik için yapılandırmayı değiştirir.  Örneğin aşağıdaki 
yapılandırma, <code>/gizli</code> ile başlayan URL yollarına erişimi engeller. 
Özellikle, <code>http://siteniz.mesela.dom/gizli</code>,
<code>http://siteniz.mesela.dom/gizli123</code> ve
<code>http://siteniz.mesela.dom/gizli/dir/dosya.html</code> 
istekleri yanında <code>/gizli</code> ile başlayan diğer isteklere de 
uygulanır.</p>

<div class="example"><p><code>
&lt;Location /gizli&gt;<br />
<span class="indent">
Order Allow,Deny<br />
Deny from all<br />
</span>
&lt;/Location&gt;
</code></p></div>

<p>Dosya sistemi ile etkileşime girmeyen herşey için 
<code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> yönergesi gerekir. 
Aşağıdaki örnekte, belli bir URL’nin <code class="module"><a href="./mod/mod_status.html">mod_status</a></code> modülü 
tarafından sağlanan bir dahili Apache eylemcisine nasıl eşlenebileceği 
gösterilmiştir. Bu örnek için dosya sisteminde <code>server-status</code> 
adında bir dosya veya dizin bulunması gerekli değildir.</p>

<div class="example"><p><code>
&lt;Location /server-status&gt;<br />
<span class="indent">
SetHandler server-status<br />
</span>
&lt;/Location&gt;
</code></p></div>


<h3><a name="wildcards" id="wildcards">Dosya Adı Şablonları ve Düzenli İfadeler</a></h3>

<p><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> ve
<code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> yönergelerinde, 
Standart C kütüphanesindeki <code>fnmatch</code> işlevindeki gibi kabuk tarzı 
dosya ismi kalıpları kullanılabilir. "*" karakteri herhangi bir karakter 
dizisi ile eşleşirken "?" karakteri tek tek karakterlerle ve "[<em>seq</em>]"
kalıbı ise <em>seq</em> içindeki her karakterle eşleşir. "/" karakteri her 
hangi bir kalıp karakteri ile eşleşmez; açıkça belirtilmesi gerekir.</p>

<p>Daha esnek bir eşleşmenin gerekli olduğu durumlar için her taşıyıcının bir 
düzenli ifade karşılığı vardır. <code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code>, <code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code> ve <code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> yönergelerinde gerekli eşleşmeleri seçmek için 
perl uyumlu <a class="glossarylink" href="./glossary.html#regex" title="sözlüğe bakınız">düzenli ifadelerin</a> kullanımına 
izin verilir. Ayrıca, yönergelerin uygulanışının düzenli ifade bölümleri kullanılarak nasıl değiştirileceğini öğrenmek için, aşağıda, yapılandırmanın katıştırılmasıyla ilgili bölüme de bakınız.</p>

<p>Tüm kullanıcı dizinlerine ilişkin yapılandırmayı değiştirmek için dosya 
ismi kalıpları şöyle kullanılabilirdi:</p>

<div class="example"><p><code>
&lt;Directory /home/*/public_html&gt;<br />
<span class="indent">
Options Indexes<br />
</span>
&lt;/Directory&gt;
</code></p></div>

<p>Düzenli ifade bölümleri kullanarak çeşitli türlerdeki resim dosyalarına 
erişimi bir defada yasaklayabiliriz:</p>
<div class="example"><p><code>
&lt;FilesMatch \.(?i:gif|jpe?g|png)$&gt;<br />
<span class="indent">
Order allow,deny<br />
Deny from all<br />
</span>
&lt;/FilesMatch&gt;
</code></p></div>



<h3><a name="whichwhen" id="whichwhen">Ne, Ne Zaman Kullanılır?</a></h3>

<p>Dosya sistemi taşıyıcıları ile site alanı taşıyıcıları arasında seçim 
yapmak aslında oldukça kolaydır. Dosya sisteminde bulunan nesnelere 
uygulanacak yönergeler için daima <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> veya <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> kullanılır. Dosya sisteminde bulunmayan nesnelere 
(bir sayfanın bir veritabanı tarafından üretilmesi gibi) uygulanacak 
yönergeler için ise <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> kullanılır.</p>

<p>Dosya sistemindeki nesnelere erişimi kısıtlarken asla <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> kullanmamak önemlidir. 
Bunun sebebi farklı site alanı konumlarının (URL’ler) aynı dosya sistemi 
konumuna eşlenebilmesi dolayısıyla kısıtlamalarınızın etrafından 
dolaşılabilmesine izin vermesidir. Örneğin, aşağıdaki yapılandırmayı 
ele alalım:</p>

<div class="example"><p><code>
&lt;Location /dir/&gt;<br />
<span class="indent">
Order allow,deny<br />
Deny from all<br />
</span>
&lt;/Location&gt;
</code></p></div>

<p><code>http://siteniz.mesela.dom/dir/</code> için bir istek yapılmışsa 
bu doğru çalışacaktır. Fakat dosya sistemi harf büyüklüğüne duyarsızsa 
ne olacak? Kısıtlamanız, istek <code>http://siteniz.mesela.dom/DIR/</code> 
şeklinde yapılarak kolayca geçersiz kılınabilir. Halbuki <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> yönergesi isteğin nasıl 
yapıldığına bakılmaksızın bu konumdan sunulan her türlü içeriğe uygulanacaktı. 
(Dosya sistemi bağlarıyla bu da aşılabilir. Sembolik bağlar kullanılarak aynı 
dizin dosya sisteminin bir çok yerine yerleştirilebilir. <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> yönergesi dosya yolunu
sıfırlamaksızın sembolik bağları izleyecektir. Bu bakımdan, en yüksek 
seviyede güvenlik için uygun <code class="directive"><a href="./mod/core.html#options">Options</a></code> 
yönergesi ile sembolik bağların izlenmesi devredışı bırakılabilir.)</p>

<p>Belki de siz sırf harf büyüklüğüne duyarlı bir dosya sistemi 
kullanıyorsunuz diye böyle uygulamalara ihtiyacınız olmadığını 
düşünüyor olabilirsiniz, fakat aynı site alanını çok sayıda dosya 
sistemi konumuna eşleyecek daha bir sürü yol bulunduğunu unutmayınız. 
Bu bakımdan dosya sisteminde yapacağınız kısıtlamalarda daima dosya 
sistemi taşıyıcılarını kullanmalısınız. Bununla birlikte bu kuralın da 
bir istisnası vardır. Yapılandırma kısıtlamalarının bir 
<code>&lt;Location/&gt;</code> bölümü içine koyulması, bu bölüme konan 
yönergelerin etki alanının belli bir URL ile sınırlı olmaması nedeniyle
mükemmelen güvenlidir.</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2>

<p><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> taşıyıcısının 
içinde belli bir konağa uygulanan yönergeler bulunur. Aynı makinede çok sayıda 
konağı farklı yapılandırmalarla  sunuyorsanız bu taşıyıcı çok işinize yarar. 
Daha fazla bilgi için <a href="vhosts/index.html">Sanal Konak Belgeleri</a> bölümüne bakınız.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxy" id="proxy">Vekil</a></h2>

<p><code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code>
ve <code class="directive"><a href="./mod/mod_proxy.html#proxymatch">&lt;ProxyMatch&gt;</a></code>
taşıyıcıları, sadece belli bir URL ile eşleşen <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> 
vekil sunucusu üzerinden erişilen sitelere uygulanan yapılandırma 
yönergelerini bulundururlar. Örneğin aşağıdaki yapılandırma 
<code>cnn.com</code> sitesine erişim için vekil sunucunun kullanılmasını
engelleyecektir.</p>

<div class="example"><p><code>
&lt;Proxy http://cnn.com/*&gt;<br />
<span class="indent">
Order allow,deny<br />
Deny from all<br />
</span>
&lt;/Proxy&gt;
</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="whatwhere" id="whatwhere">Hangi Yönergelere İzin Veriliyor?</a></h2>

<p>Hangi yönergelere hangi yapılandırma bölümlerinde izin verildiğini 
öğrenmek için yönerge <a href="mod/directive-dict.html#Context">bağlamına</a> bakınız.
<code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümlerinde 
izin verilen herşeye sözdizimsel olarak ayrıca
<code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code>,
<code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code>,
<code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code>
ve <code class="directive"><a href="./mod/mod_proxy.html#proxymatch">&lt;ProxyMatch&gt;</a></code>
bölümlerinde de izin verilir. Yine de bazı istisnai durumlar mevcuttur:</p>

<ul>
<li><code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesi sadece
<code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümlerinde çalışır.</li>

<li><code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergesinin 
<code>FollowSymLinks</code> ve <code>SymLinksIfOwnerMatch</code> 
seçenekleri sadece <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümlerinde veya <code>.htaccess</code> 
dosyalarında çalışır.</li>

<li><code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergesi 
<code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> ve 
<code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code> 
bölümlerinde kullanılamaz.</li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="mergin" id="mergin">Bölümler Nasıl Katıştırılır?</a></h2>

<p>Yapılandırma bölümleri belli bir sıra ile uygulanır. Yapılandırma 
yönergelerinin yorumlanışı üzerinde önemli etkilere sahip olabilmesi 
nedeniyle neyin ne zaman çalıştığını anlamak çok önemlidir.</p>

    <p>Yapılandırma bölümlerinin katıştırılma sırası şöyledir:</p>

    <ol>
      <li><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> (düzenli ifadeler hariç)
      ve <code>.htaccess</code> aynı anda işleme sokulur 
      (<code>.htaccess</code> ile eğer izin verilmişse <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> içindeki bazı 
      yönergeler geçersiz kılınabileceği için).</li>

      <li><code class="directive"><a href="./mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a></code>
      (ve <code>&lt;Directory ~&gt;</code>).</li>

      <li><code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> ve <code class="directive"><a href="./mod/core.html#filesmatch">&lt;FilesMatch&gt;</a></code> aynı anda işleme sokulur.</li>

      <li><code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code>
      ve <code class="directive"><a href="./mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> 
      aynı anda işleme sokulur.</li>
    </ol>

    <p><code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>
     bölümündekiler hariç, her grup, yapılandırma dosyasında bulundukları 
     sıraya göre işleme sokulurlar. Yukarıda 1. grup olan <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümü en kısa 
     dizin elemanından en uzun dizin elemanına doğru işleme sokulur. 
     Yani, örneğin, <code>&lt;Directory /var/web/dir&gt;</code> bölümü 
     <code>&lt;Directory /var/web/dir/subdir&gt;</code> bölümünden önce 
     işleme sokulacaktır. Eğer aynı uzunlukta çok sayıda dizin varsa 
     <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümleri 
     yapılandırma dosyasında bulundukları sıraya göre işleme sokulurlar. 
     <code class="directive"><a href="./mod/core.html#include">Include</a></code> yönergeleri ile 
     yapılandırmaya dahil edilen dosyaların içerikleri <code class="directive"><a href="./mod/core.html#include">Include</a></code> yönergesinin bulunduğu yere 
     konulduktan sonra işleme sokulurlar.</p>

    <p><code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> 
    bölümlerinin içindeki bölümler, sanal konak tanımı dışındaki 
    karşılıklarından <em>sonra</em> uygulanırlar.</p>

    <p>İstek <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> tarafından sunulduğu takdirde, 
    <code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> taşıyıcısı 
    işlem sırasında <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> 
    taşıyıcısının yerini alır.</p>

    <p>Sonraki bölümler öncekileri geçersiz kılmak üzere işleme alınırlar.</p>

<div class="note"><h3>Bazı Teknik Bilgiler</h3>
  Aslında, isim dönüşüm aşamasından (<code>Aliases</code> ve 
  <code>DocumentRoots</code>, URL’leri dosya isimlerine eşlemek için 
  kullanılırken) hemen önce uygulanan bir 
  <code>&lt;Location&gt;</code>/<code>&lt;LocationMatch&gt;</code> 
  dizisi vardır. Bu dizinin sonuçları isim dönüşüm aşaması tamamlandıktan 
  sonra tamamen elden çıkarılır.
</div>

<h3><a name="merge-examples" id="merge-examples">Bazı Örnekler</a></h3>

<p>Aşağıdaki yapay örnekte katıştırma sırası gösterilmiştir. Hepsinin 
aynı isteğe uygulandığı varsayımıyla, bu örnekteki yönergeler 
A &gt; B &gt; C &gt; D &gt; E sırasıyla uygulanacaktır.</p>

<div class="example"><p><code>
&lt;Location /&gt;<br />
E<br />
&lt;/Location&gt;<br />
<br />
&lt;Files f.html&gt;<br />
D<br />
&lt;/Files&gt;<br />
<br />
&lt;VirtualHost *&gt;<br />
&lt;Directory /a/b&gt;<br />
B<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
<br />
&lt;DirectoryMatch "^.*b$"&gt;<br />
C<br />
&lt;/DirectoryMatch&gt;<br />
<br />
&lt;Directory /a/b&gt;<br />
A<br />
&lt;/Directory&gt;<br />
<br />
</code></p></div>

<p>Daha somut bir örnek olarak aşağıdakini ele alalım. <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> bölümlerindeki erişim sınırlamaları 
ne olursa olsun <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> 
bölümü son olarak değerlendirmeye alınacak ve sunucuya sınırsız erişim 
verecektir. Başka bir deyişle, katıştırma sırası önemlidir, bu nedenle 
dikkatli olmalısınız!</p>

<div class="example"><p><code>
&lt;Location /&gt;<br />
<span class="indent">
  Order deny,allow<br />
  Allow from all<br />
</span>
&lt;/Location&gt;<br />
<br />
# Alooo!  Bu &lt;Directory&gt; bölümünün hiçbir hükmü yok.<br />
&lt;Directory /&gt;<br />
<span class="indent">
  Order allow,deny<br />
  Allow from all<br />
  Deny from kkadam.mesela.dom<br />
</span>
&lt;/Directory&gt;
</code></p></div>



</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                server-wide.html                                                                                    100644       0       0        20120 11256641270  11346  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Sunucu Genelinde Yapılandırma - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Sunucu Genelinde Yapılandırma</h1>


<p>Bu belgede <code class="module"><a href="./mod/core.html">core</a></code> modülü ile sağlanan ve  sunucunun temel
işlemlerini yapılandırmakta kullanılan yönergelerden bazıları açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#identification">Sunucu Kimliği</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#locations">Dosyaların Yerleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#resource">Özkaynak Kullanımının Sınırlanması</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="identification" id="identification">Sunucu Kimliği</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#servername">ServerName</a></code></li><li><code class="directive"><a href="./mod/core.html#serveradmin">ServerAdmin</a></code></li><li><code class="directive"><a href="./mod/core.html#serversignature">ServerSignature</a></code></li><li><code class="directive"><a href="./mod/core.html#servertokens">ServerTokens</a></code></li><li><code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code></li><li><code class="directive"><a href="./mod/core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code></li></ul></td></tr></table>

    <p><code class="directive"><a href="./mod/core.html#serveradmin">ServerAdmin</a></code> ve <code class="directive"><a href="./mod/core.html#servertokens">ServerTokens</a></code> yönergeleri, hata iletileri gibi
      sunucu tarafından üretilen belgelerde sunucu ile ilgili hangi bilgilerin
      sunulacağını belirlerler. <code class="directive"><a href="./mod/core.html#servertokens">ServerTokens</a></code> yönergesi sunucunun HTTP yanıt başlığı
      alanının değerini belirler.</p>

    <p><code class="directive"><a href="./mod/core.html#servername">ServerName</a></code>,
      <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> ve
      <code class="directive"><a href="./mod/core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code>
      yönergeleri, sunucu tarafından, özüne yönelik URL’leri nasıl
      oluşturacağını saptamak için kullanılır. Örneğin bir istemci bir dizin
      isteğinde bulunurken URL’nin sonuna bölü çizgisi eklemese bile
      Apache’nin istemciyi bölü çizgisi ile bitirilmiş URL yoluna
      yönlendirmesi gerekir; böylece istemci belge içindeki göreli
      bağlantıları doğru şekilde çözümleyebilir.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="locations" id="locations">Dosyaların Yerleri</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></code></li><li><code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#lockfile">LockFile</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code></li><li><code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code></li></ul></td></tr></table>

    <p>Bu yönergeler Apache’nin doğru işlem yapması için gereksinim duyduğu
      çeşitli dosyaların yerlerini belirlerler. Bölü çizgisi (/) ile
      başlamayan dosya yolları kullanıldığında bu dosyaların yerlerinin
      <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> yönergesinde belirtilen
      dizine göre belirtildiği varsayılır; root olmayan kullanıcılar
      tarafından yazılabilen dosya yollarına dosya yerleştirmemeye dikkat
      ediniz. Bu konuda daha ayrıntılı bilgi edinmek için <a href="misc/security_tips.html#serverroot">güvenlik ipuçları</a>
      belgesine bakınız.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="resource" id="resource">Özkaynak Kullanımının Sınırlanması</a></h2>
    

    <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#limitrequestbody">LimitRequestBody</a></code></li><li><code class="directive"><a href="./mod/core.html#limitrequestfields">LimitRequestFields</a></code></li><li><code class="directive"><a href="./mod/core.html#limitrequestfieldsize">LimitRequestFieldsize</a></code></li><li><code class="directive"><a href="./mod/core.html#limitrequestline">LimitRequestLine</a></code></li><li><code class="directive"><a href="./mod/core.html#rlimitcpu">RLimitCPU</a></code></li><li><code class="directive"><a href="./mod/core.html#rlimitmem">RLimitMEM</a></code></li><li><code class="directive"><a href="./mod/core.html#rlimitnproc">RLimitNPROC</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#threadstacksize">ThreadStackSize</a></code></li></ul></td></tr></table>

    <p><code>LimitRequest*</code> yönergeleri, Apache’nin istemcilerden gelen
      istekleri okumak için kullanacağı özkaynakların miktarları ile ilgili
      sınırlamalar koymak için kullanılırlar. Bu değerleri sınırlamak
      suretiyle bazı hizmet reddi saldırılarının etkileri azaltılabilir.</p>

    <p><code>RLimit*</code> yönergeleri ise Apache’nin çocuk süreçleri
      tarafından çatallanabilen özkaynakların miktarlarını sınırlamakta
      kullanılırlar. Özellikle de CGI betikleri ve SSI çalıştırma komutları
      tarafından kullanılan özkaynakları denetlemekte kullanılırlar.</p>

    <p><code class="directive"><a href="./mod/mpm_common.html#threadstacksize">ThreadStackSize</a></code> yönergesi
      bazı platformlarda yığıt boyutunu denetim altında tutmak için
      kullanılır.</p>
  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                sitemap.html                                                                                        100644       0       0        43315 11256641270  10567  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Site Haritası - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page">
<div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div>
<div id="page-content"><div id="preamble"><h1>Site Haritası</h1>


<p>Bu sayfada <a href="./index.html">Apache HTTP Sunucusu Sürüm 2.2
Belgeleri</a>nin tamamı listelenmiştir.</p>
</div>
<div id="quickview"><ul id="toc">
<li><img alt="" src="./images/down.gif" /> <a href="#release">Sürümlerin Dağıtım Bilgileri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#using">Apache HTTP Sunucusunun Kullanımı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#vhosts">Apache Sanal Konak (VirtualHost) Belgeleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#rewrite">URL’lerin Yeniden Yazılması</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#ssl">Apache SSL/TLS Şifrelemesi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#howto">Kılavuzlar, Öğreticiler ve Nasıllar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#platform">Platformlara Özgü Bilgiler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programs">Apache HTTP Sunucusu  ve Desteklenen Programlar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#misc">Çeşitli Belgeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#modules">Apache Modülleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#developer">Geliştirici Belgeleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#index">Terimler ve Dizin</a></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="release" id="release">Sürümlerin Dağıtım Bilgileri</a></h2>
<ul><li><a href="upgrading.html">2.2’ye 2.0’dan yükseltme</a></li>
<li><a href="new_features_2_2.html">Apache 2.1/2.2’deki yeni özellikler</a></li>
<li><a href="new_features_2_0.html">Apache 2.0’daki yeni özellikler</a></li>
<li><a href="license.html">Apache Lisansı</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="using" id="using">Apache HTTP Sunucusunun Kullanımı</a></h2>
<ul><li><a href="install.html">Derleme ve Kurulum</a></li>
<li><a href="invoking.html">Sunucuyu Başlatma</a></li>
<li><a href="stopping.html">Sunucuyu Durdurma ve Yeniden Başlatma</a></li>
<li><a href="configuring.html">Yapılandırma Dosyaları</a></li>
<li><a href="sections.html">Directory, Location ve Files Bölümleri Nasıl Çalışır</a></li>
<li><a href="caching.html">İçerik Bellekleme</a></li>
<li><a href="server-wide.html">Sunucu Genelinde Yapılandırma</a></li>
<li><a href="logs.html">Günlük Dosyaları</a></li>
<li><a href="urlmapping.html">URL’lerin Dosya Sistemi ile Eşlenmesi</a></li>
<li><a href="misc/security_tips.html">Güvenlik İpuçları</a></li>
<li><a href="dso.html">Devingen Paylaşımlı Nesne (DSO) Desteği</a></li>
<li><a href="content-negotiation.html">İçerik Dili Yönetimi</a></li>
<li><a href="custom-error.html">Özel Hata Yanıtları</a></li>
<li><a href="bind.html">Sunucunun Kullandığı Adreslerin ve Portların Ayarlanması</a></li>
<li><a href="mpm.html">Çok Süreçlilik Modülleri (MPM’ler)</a></li>
<li><a href="env.html">Ortam Değişkenleri</a></li>
<li><a href="handler.html">Eylemci Kullanımı</a></li>
<li><a href="filter.html">Süzgeçler</a></li>
<li><a href="suexec.html">CGI için Suexec Desteği</a></li>
<li><a href="misc/perf-tuning.html">Başarım Arttırma İpuçları</a></li>
<li><a href="faq/index.html">Sıkça Sorulan Sorular</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="vhosts" id="vhosts">Apache Sanal Konak (VirtualHost) Belgeleri</a></h2>
<ul><li class="separate"><a href="vhosts/index.html">Genel Bakış</a></li>
<li><a href="vhosts/name-based.html">İsme göre Sanal Konak Desteği</a></li>
<li><a href="vhosts/ip-based.html">IP Adresine göre Sanal Konak Desteği</a></li>
<li><a href="vhosts/mass.html">Sanal Konakların Devingen olarak Yapılandırılması</a></li>
<li><a href="vhosts/examples.html">VirtualHost Örnekleri</a></li>
<li><a href="vhosts/details.html">Sanal Konak Eşleştirmesinin Derinliğine İncelenmesi</a></li>
<li><a href="vhosts/fd-limits.html">Dosya Tanıtıcı Sınırlamaları</a></li>
<li><a href="dns-caveats.html">DNS ve Apache ile ilgili Konular</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="rewrite" id="rewrite">URL’lerin Yeniden Yazılması</a></h2>
<ul><li class="separate"><a href="rewrite/index.html">Genel Bakış</a></li>
<li><a href="mod/mod_rewrite.html">mod_rewrite Başvuru Belgesi</a></li>
<li><a href="rewrite/rewrite_intro.html">Giriş</a></li>
<li><a href="rewrite/rewrite_flags.html">Seçenekler</a></li>
<li><a href="rewrite/rewrite_tech.html">Teknik Ayrıntılar</a></li>
<li><a href="rewrite/rewrite_guide.html">Yeniden Yazma Rehberi - yararlı örnekler</a></li>
<li><a href="rewrite/rewrite_guide_advanced.html">Gelişkin Yeniden Yazma Rehberi - daha
yararlı örnekler</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="ssl" id="ssl">Apache SSL/TLS Şifrelemesi</a></h2>
<ul><li class="separate"><a href="ssl/index.html">Genel Bakış</a></li>
<li><a href="ssl/ssl_intro.html">SSL/TLS Şifrelemesi: Giriş</a></li>
<li><a href="ssl/ssl_compat.html">SSL/TLS Şifrelemesi: Uyumluluk</a></li>
<li><a href="ssl/ssl_howto.html">SSL/TLS Şifrelemesi: Nasıl</a></li>
<li><a href="ssl/ssl_faq.html">SSL/TLS Şifrelemesi: SSS</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="howto" id="howto">Kılavuzlar, Öğreticiler ve Nasıllar</a></h2>
<ul><li class="separate"><a href="howto/index.html">Genel Bakış</a></li>
<li><a href="howto/auth.html">Kimlik Doğrulama</a></li>
<li><a href="howto/cgi.html">CGI ile Devingen İçerik</a></li>
<li><a href="howto/ssi.html">Sunucu Taraflı İçerik Yerleştirme (SSI)</a></li>
<li><a href="howto/htaccess.html">.htaccess Dosyaları</a></li>
<li><a href="howto/public_html.html">Kullanıcı Dizinleri (public_html)</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="platform" id="platform">Platformlara Özgü Bilgiler</a></h2>
<ul><li class="separate"><a href="platform/index.html">Genel Bakış</a></li>
<li><a href="platform/windows.html">Microsoft
Windows ile Apache Kullanımı</a></li>
<li><a href="platform/win_compiling.html">Microsoft Windows için Apache Derleme</a></li>
<li><a href="platform/netware.html">Novell NetWare ile Apache Kullanımı</a></li>
<li><a href="platform/perf-hp.html">HPUX üzerinde Yüksek Başarımlı HTTP Sunucusu Çalıştırma</a></li>
<li><a href="platform/ebcdic.html">Apache EBCDIC Portu</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="programs" id="programs">Apache HTTP Sunucusu  ve Desteklenen Programlar</a></h2>
<ul><li class="separate"><a href="programs/index.html">Genel Bakış</a></li>
<li><a href="programs/httpd.html">Kılavuz Sayfası: httpd</a></li>
<li><a href="programs/ab.html">Kılavuz Sayfası: ab</a></li>
<li><a href="programs/apachectl.html">Kılavuz Sayfası: apachectl</a></li>
<li><a href="programs/apxs.html">Kılavuz Sayfası: apxs</a></li>
<li><a href="programs/configure.html">Kılavuz Sayfası: configure</a></li>
<li><a href="programs/dbmmanage.html">Kılavuz Sayfası: dbmmanage</a></li>
<li><a href="programs/htcacheclean.html">Kılavuz Sayfası: htcacheclean</a></li>
<li><a href="programs/htdbm.html">Kılavuz Sayfası: htdbm</a></li>
<li><a href="programs/htdigest.html">Kılavuz Sayfası: htdigest</a></li>
<li><a href="programs/htpasswd.html">Kılavuz Sayfası: htpasswd</a></li>
<li><a href="programs/logresolve.html">Kılavuz Sayfası: logresolve</a></li>
<li><a href="programs/rotatelogs.html">Kılavuz Sayfası: rotatelogs</a></li>
<li><a href="programs/suexec.html">Kılavuz Sayfası: suexec</a></li>
<li><a href="programs/other.html">Diğer Programlar</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="misc" id="misc">Çeşitli Belgeler</a></h2>
<ul><li class="separate"><a href="misc/index.html">Genel Bakış</a></li>
<li><a href="misc/relevant_standards.html">İlgili Standartlar</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="modules" id="modules">Apache Modülleri</a></h2>
<ul><li><a href="mod/module-dict.html">Apache modüllerini tanımlamakta kullanılan terimlerin açıklamaları</a></li>
<li><a href="mod/directive-dict.html">Apache yönergelerini tanımlamakta kullanılan terimlerin açıklamaları</a></li>
</ul><ul><li><a href="mod/core.html">Apache Temel Özellikleri</a></li>
<li><a href="mod/mpm_common.html">Apache MPM Ortak Yönergeleri</a></li>
<li><a href="mod/beos.html">Apache MPM beos</a></li>
<li><a href="mod/event.html">Apache MPM event</a></li>
<li><a href="mod/mpm_netware.html">Apache MPM netware</a></li>
<li><a href="mod/mpmt_os2.html">Apache MPM os2</a></li>
<li><a href="mod/prefork.html">Apache MPM prefork</a></li>
<li><a href="mod/mpm_winnt.html">Apache MPM winnt</a></li>
<li><a href="mod/worker.html">Apache MPM worker</a></li>
</ul><ul><li><a href="mod/mod_actions.html">Apache Modülü mod_actions</a></li>
<li><a href="mod/mod_alias.html">Apache Modülü mod_alias</a></li>
<li><a href="mod/mod_asis.html">Apache Modülü mod_asis</a></li>
<li><a href="mod/mod_auth_basic.html">Apache Modülü mod_auth_basic</a></li>
<li><a href="mod/mod_auth_digest.html">Apache Modülü mod_auth_digest</a></li>
<li><a href="mod/mod_authn_alias.html">Apache Modülü mod_authn_alias</a></li>
<li><a href="mod/mod_authn_anon.html">Apache Modülü mod_authn_anon</a></li>
<li><a href="mod/mod_authn_dbd.html">Apache Modülü mod_authn_dbd</a></li>
<li><a href="mod/mod_authn_dbm.html">Apache Modülü mod_authn_dbm</a></li>
<li><a href="mod/mod_authn_default.html">Apache Modülü mod_authn_default</a></li>
<li><a href="mod/mod_authn_file.html">Apache Modülü mod_authn_file</a></li>
<li><a href="mod/mod_authnz_ldap.html">Apache Modülü mod_authnz_ldap</a></li>
<li><a href="mod/mod_authz_dbm.html">Apache Modülü mod_authz_dbm</a></li>
<li><a href="mod/mod_authz_default.html">Apache Modülü mod_authz_default</a></li>
<li><a href="mod/mod_authz_groupfile.html">Apache Modülü mod_authz_groupfile</a></li>
<li><a href="mod/mod_authz_host.html">Apache Modülü mod_authz_host</a></li>
<li><a href="mod/mod_authz_owner.html">Apache Modülü mod_authz_owner</a></li>
<li><a href="mod/mod_authz_user.html">Apache Modülü mod_authz_user</a></li>
<li><a href="mod/mod_autoindex.html">Apache Modülü mod_autoindex</a></li>
<li><a href="mod/mod_cache.html">Apache Modülü mod_cache</a></li>
<li><a href="mod/mod_cern_meta.html">Apache Modülü mod_cern_meta</a></li>
<li><a href="mod/mod_cgi.html">Apache Modülü mod_cgi</a></li>
<li><a href="mod/mod_cgid.html">Apache Modülü mod_cgid</a></li>
<li><a href="mod/mod_charset_lite.html">Apache Modülü mod_charset_lite</a></li>
<li><a href="mod/mod_dav.html">Apache Modülü mod_dav</a></li>
<li><a href="mod/mod_dav_fs.html">Apache Modülü mod_dav_fs</a></li>
<li><a href="mod/mod_dav_lock.html">Apache Modülü mod_dav_lock</a></li>
<li><a href="mod/mod_dbd.html">Apache Modülü mod_dbd</a></li>
<li><a href="mod/mod_deflate.html">Apache Modülü mod_deflate</a></li>
<li><a href="mod/mod_dir.html">Apache Modülü mod_dir</a></li>
<li><a href="mod/mod_disk_cache.html">Apache Modülü mod_disk_cache</a></li>
<li><a href="mod/mod_dumpio.html">Apache Modülü mod_dumpio</a></li>
<li><a href="mod/mod_echo.html">Apache Modülü mod_echo</a></li>
<li><a href="mod/mod_env.html">Apache Modülü mod_env</a></li>
<li><a href="mod/mod_example.html">Apache Modülü mod_example</a></li>
<li><a href="mod/mod_expires.html">Apache Modülü mod_expires</a></li>
<li><a href="mod/mod_ext_filter.html">Apache Modülü mod_ext_filter</a></li>
<li><a href="mod/mod_file_cache.html">Apache Modülü mod_file_cache</a></li>
<li><a href="mod/mod_filter.html">Apache Modülü mod_filter</a></li>
<li><a href="mod/mod_headers.html">Apache Modülü mod_headers</a></li>
<li><a href="mod/mod_ident.html">Apache Modülü mod_ident</a></li>
<li><a href="mod/mod_imagemap.html">Apache Modülü mod_imagemap</a></li>
<li><a href="mod/mod_include.html">Apache Modülü mod_include</a></li>
<li><a href="mod/mod_info.html">Apache Modülü mod_info</a></li>
<li><a href="mod/mod_isapi.html">Apache Modülü mod_isapi</a></li>
<li><a href="mod/mod_ldap.html">Apache Modülü mod_ldap</a></li>
<li><a href="mod/mod_log_config.html">Apache Modülü mod_log_config</a></li>
<li><a href="mod/mod_log_forensic.html">Apache Modülü mod_log_forensic</a></li>
<li><a href="mod/mod_logio.html">Apache Modülü mod_logio</a></li>
<li><a href="mod/mod_mem_cache.html">Apache Modülü mod_mem_cache</a></li>
<li><a href="mod/mod_mime.html">Apache Modülü mod_mime</a></li>
<li><a href="mod/mod_mime_magic.html">Apache Modülü mod_mime_magic</a></li>
<li><a href="mod/mod_negotiation.html">Apache Modülü mod_negotiation</a></li>
<li><a href="mod/mod_nw_ssl.html">Apache Modülü mod_nw_ssl</a></li>
<li><a href="mod/mod_proxy.html">Apache Modülü mod_proxy</a></li>
<li><a href="mod/mod_proxy_ajp.html">Apache Modülü mod_proxy_ajp</a></li>
<li><a href="mod/mod_proxy_balancer.html">Apache Modülü mod_proxy_balancer</a></li>
<li><a href="mod/mod_proxy_connect.html">Apache Modülü mod_proxy_connect</a></li>
<li><a href="mod/mod_proxy_ftp.html">Apache Modülü mod_proxy_ftp</a></li>
<li><a href="mod/mod_proxy_http.html">Apache Modülü mod_proxy_http</a></li>
<li><a href="mod/mod_proxy_scgi.html">Apache Modülü mod_proxy_scgi</a></li>
<li><a href="mod/mod_rewrite.html">Apache Modülü mod_rewrite</a></li>
<li><a href="mod/mod_setenvif.html">Apache Modülü mod_setenvif</a></li>
<li><a href="mod/mod_so.html">Apache Modülü mod_so</a></li>
<li><a href="mod/mod_speling.html">Apache Modülü mod_speling</a></li>
<li><a href="mod/mod_ssl.html">Apache Modülü mod_ssl</a></li>
<li><a href="mod/mod_status.html">Apache Modülü mod_status</a></li>
<li><a href="mod/mod_substitute.html">Apache Modülü mod_substitute</a></li>
<li><a href="mod/mod_suexec.html">Apache Modülü mod_suexec</a></li>
<li><a href="mod/mod_unique_id.html">Apache Modülü mod_unique_id</a></li>
<li><a href="mod/mod_userdir.html">Apache Modülü mod_userdir</a></li>
<li><a href="mod/mod_usertrack.html">Apache Modülü mod_usertrack</a></li>
<li><a href="mod/mod_version.html">Apache Modülü mod_version</a></li>
<li><a href="mod/mod_vhost_alias.html">Apache Modülü mod_vhost_alias</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="developer" id="developer">Geliştirici Belgeleri</a></h2>
<ul><li class="separate"><a href="developer/index.html">Genel Bakış</a></li>
<li><a href="developer/API.html">Apache API Bilgileri</a></li>
<li><a href="developer/debugging.html">APR’de Bellek Ayırmada Hata Ayıklama</a></li>
<li><a href="developer/documenting.html">Apache 2.0 Belgeleri</a></li>
<li><a href="developer/hooks.html">Apache 2.0 Kullanıcı İşlevleri</a></li>
<li><a href="developer/modules.html">Modüllerin Apache 1.3’ten Apache 2.0’a Dönüştürülmesi</a></li>
<li><a href="developer/request.html">Apache 2.0’da İsteklerin İşlenmesi</a></li>
<li><a href="developer/filters.html">Apache 2.0’da Süzgeçler Nasıl Çalışır</a></li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section"><h2><a name="index" id="index">Terimler ve Dizin</a></h2>
<ul><li><a href="glossary.html">Terimler</a></li>
<li><a href="mod/index.html">Modül Dizini</a></li>
<li><a href="mod/directives.html">Yönerge Dizini</a></li>
<li><a href="mod/quickreference.html">Hızlı Yönerge Kılavuzu</a></li>
</ul>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                   ssl/index.html                                                                                      100644       0       0         6474 11256641270  11022  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache SSL/TLS Şifrelemesi - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache SSL/TLS Şifrelemesi</h1>


  <p>Apache HTTP Sunucusunun <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> modülü, Güvenli Soketler
    Katmanı (SSL) ve Aktarım Katmanı Güvenliği (TLS) protokollerinin
    kullanıldığı Sağlam Şifreleme desteğini sağlayan <a href="http://www.openssl.org/">OpenSSL</a> kütüphanesine bir arayüz
    içerir. Bu modül ve belgeler Ralf S. Engelschall’ın mod_ssl projesine
    dayanmaktadır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#documentation">Belgeler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mod-ssl"><code>mod_ssl</code> Modülü</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="documentation" id="documentation">Belgeler</a></h2>
  <ul>
    <li><a href="ssl_intro.html">Giriş</a></li>
    <li><a href="ssl_compat.html">Uyumluluk</a></li>
    <li><a href="ssl_howto.html">NASIL</a></li>
    <li><a href="ssl_faq.html">Sıkça Sorulan Sorular</a></li>
    <li><a href="../glossary.html">Terimler</a></li>
  </ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mod-ssl" id="mod-ssl"><code>mod_ssl</code> Modülü</a></h2>
  <p>Bu modülce sağlanan yönergeler ve ortam değişkenleri
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> başvuru kılavuzunda ayrıntılı olarak
    açıklanmıştır.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                    ssl/ssl_compat.html                                                                                 100644       0       0        44733 11256641270  12077  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>SSL/TLS Strong Encryption: Compatibility - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS Strong Encryption: Compatibility</h1>


<blockquote>
<p>All PCs are compatible. But some of
them are more compatible than others.</p>
<p class="cite">-- <cite>Unknown</cite></p>
</blockquote>

<p>
This page covers backwards compatibility between mod_ssl and other
SSL solutions.  mod_ssl is not the only SSL solution for Apache; four
additional products are (or were) also available: Ben Laurie's freely
available <a href="http://www.apache-ssl.org/">Apache-SSL</a> (from
where mod_ssl were originally derived in 1998), Red Hat's commercial
<a href="http://www.redhat.com/products/product-details.phtml?id=rhsa">Secure
Web Server</a> (which was based on mod_ssl), Covalent's commercial <a href="http://www.covalent.net/">Raven SSL Module</a> (also based on
mod_ssl) and finally C2Net's (now Red Hat's) commercial product <a href="http://www.redhat.com/explore/stronghold/">Stronghold</a> (based
on a different evolution branch named Sioux up to Stronghold 2.x and
based on mod_ssl since Stronghold 3.x).</p>

<p>
mod_ssl mostly provides a superset of the functionality of all the other
solutions, so it's simple to migrate from one of the older modules to
mod_ssl. The configuration directives and environment variable names
used by the older SSL solutions vary from those used in mod_ssl;
mapping tables are included here to give the equivalents used by mod_ssl.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configuration">Configuration Directives</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#variables">Environment Variables</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#customlog">Custom Log Functions</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="configuration" id="configuration">Configuration Directives</a></h2>
<p>The mapping between configuration directives used by Apache-SSL
1.x and mod_ssl 2.0.x is given in <a href="#table1">Table
1</a>. The mapping from Sioux 1.x and Stronghold 2.x is only partial
because of special functionality in these interfaces which mod_ssl
doesn't provide.</p>


<h3><a name="table1" id="table1">Table 1: Configuration Directive Mapping</a></h3>

<table><tr class="header"><th>Old Directive</th><th>mod_ssl Directive</th><th>Comment</th></tr>
<tr class="header"><th colspan="3">Apache-SSL 1.x &amp; mod_ssl 2.0.x compatibility:</th></tr>
<tr><td><code>SSLEnable</code></td><td><code>SSLEngine on</code></td><td>compactified</td></tr>
<tr class="odd"><td><code>SSLDisable</code></td><td><code>SSLEngine off</code></td><td>compactified</td></tr>
<tr><td><code>SSLLogFile</code> <em>file</em></td><td><code>SSLLog</code> <em>file</em></td><td>compactified</td></tr>
<tr class="odd"><td><code>SSLRequiredCiphers</code> <em>spec</em></td><td><code>SSLCipherSuite</code> <em>spec</em></td><td>renamed</td></tr>
<tr><td><code>SSLRequireCipher</code> <em>c1</em> ...</td><td><code>SSLRequire %{SSL_CIPHER} in {"</code><em>c1</em><code>", 
...}</code></td><td>generalized</td></tr>
<tr class="odd"><td><code>SSLBanCipher</code> <em>c1</em> ...</td><td><code>SSLRequire not (%{SSL_CIPHER} in {"</code><em>c1</em><code>", 
...})</code></td><td>generalized</td></tr>
<tr><td><code>SSLFakeBasicAuth</code></td><td><code>SSLOptions +FakeBasicAuth</code></td><td>merged</td></tr>
<tr class="odd"><td><code>SSLCacheServerPath</code> <em>dir</em></td><td>-</td><td>functionality removed</td></tr>
<tr><td><code>SSLCacheServerPort</code> <em>integer</em></td><td>-</td><td>functionality removed</td></tr>
<tr class="header"><th colspan="3">Apache-SSL 1.x compatibility:</th></tr>
<tr class="odd"><td><code>SSLExportClientCertificates</code></td><td><code>SSLOptions +ExportCertData</code></td><td>merged</td></tr>
<tr><td><code>SSLCacheServerRunDir</code> <em>dir</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="header"><th colspan="3">Sioux 1.x compatibility:</th></tr>
<tr class="odd"><td><code>SSL_CertFile</code> <em>file</em></td><td><code>SSLCertificateFile</code> <em>file</em></td><td>renamed</td></tr>
<tr><td><code>SSL_KeyFile</code> <em>file</em></td><td><code>SSLCertificateKeyFile</code> <em>file</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CipherSuite</code> <em>arg</em></td><td><code>SSLCipherSuite</code> <em>arg</em></td><td>renamed</td></tr>
<tr><td><code>SSL_X509VerifyDir</code> <em>arg</em></td><td><code>SSLCACertificatePath</code> <em>arg</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_Log</code> <em>file</em></td><td><code>SSLLogFile</code> <em>file</em></td><td>renamed</td></tr>
<tr><td><code>SSL_Connect</code> <em>flag</em></td><td><code>SSLEngine</code> <em>flag</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_ClientAuth</code> <em>arg</em></td><td><code>SSLVerifyClient</code> <em>arg</em></td><td>renamed</td></tr>
<tr><td><code>SSL_X509VerifyDepth</code> <em>arg</em></td><td><code>SSLVerifyDepth</code> <em>arg</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_FetchKeyPhraseFrom</code> <em>arg</em></td><td>-</td><td>not directly mappable; use SSLPassPhraseDialog</td></tr>
<tr><td><code>SSL_SessionDir</code> <em>dir</em></td><td>-</td><td>not directly mappable; use SSLSessionCache</td></tr>
<tr class="odd"><td><code>SSL_Require</code> <em>expr</em></td><td>-</td><td>not directly mappable; use SSLRequire</td></tr>
<tr><td><code>SSL_CertFileType</code> <em>arg</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="odd"><td><code>SSL_KeyFileType</code> <em>arg</em></td><td>-</td><td>functionality not supported</td></tr>
<tr><td><code>SSL_X509VerifyPolicy</code> <em>arg</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="odd"><td><code>SSL_LogX509Attributes</code> <em>arg</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="header"><th colspan="3">Stronghold 2.x compatibility:</th></tr>
<tr><td><code>StrongholdAccelerator</code> <em>engine</em></td><td><code>SSLCryptoDevice</code> <em>engine</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>StrongholdKey</code> <em>dir</em></td><td>-</td><td>functionality not needed</td></tr>
<tr><td><code>StrongholdLicenseFile</code> <em>dir</em></td><td>-</td><td>functionality not needed</td></tr>
<tr class="odd"><td><code>SSLFlag</code> <em>flag</em></td><td><code>SSLEngine</code> <em>flag</em></td><td>renamed</td></tr>
<tr><td><code>SSLSessionLockFile</code> <em>file</em></td><td><code>SSLMutex</code> <em>file</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSLCipherList</code> <em>spec</em></td><td><code>SSLCipherSuite</code> <em>spec</em></td><td>renamed</td></tr>
<tr><td><code>RequireSSL</code></td><td><code>SSLRequireSSL</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSLErrorFile</code> <em>file</em></td><td>-</td><td>functionality not supported</td></tr>
<tr><td><code>SSLRoot</code> <em>dir</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="odd"><td><code>SSL_CertificateLogDir</code> <em>dir</em></td><td>-</td><td>functionality not supported</td></tr>
<tr><td><code>AuthCertDir</code> <em>dir</em></td><td>-</td><td>functionality not supported</td></tr>
<tr class="odd"><td><code>SSL_Group</code> <em>name</em></td><td>-</td><td>functionality not supported</td></tr>
<tr><td><code>SSLProxyMachineCertPath</code> <em>dir</em></td><td><code>SSLProxyMachineCertificatePath</code> <em>dir</em></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSLProxyMachineCertFile</code> <em>file</em></td><td><code>SSLProxyMachineCertificateFile</code> <em>file</em></td><td>renamed</td></tr>
<tr><td><code>SSLProxyCipherList</code> <em>spec</em></td><td><code>SSLProxyCipherSpec</code> <em>spec</em></td><td>renamed</td></tr>
</table>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="variables" id="variables">Environment Variables</a></h2> 

<p>The mapping between environment variable names used by the older
SSL solutions and the names used by mod_ssl is given in <a href="#table2">Table 2</a>.</p>

<h3><a name="table2" id="table2">Table 2: Environment Variable Derivation</a></h3>

<table><tr class="header"><th>Old Variable</th><th>mod_ssl Variable</th><th>Comment</th></tr>
<tr><td><code>SSL_PROTOCOL_VERSION</code></td><td><code>SSL_PROTOCOL</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSLEAY_VERSION</code></td><td><code>SSL_VERSION_LIBRARY</code></td><td>renamed</td></tr>
<tr><td><code>HTTPS_SECRETKEYSIZE</code></td><td><code>SSL_CIPHER_USEKEYSIZE</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>HTTPS_KEYSIZE</code></td><td><code>SSL_CIPHER_ALGKEYSIZE</code></td><td>renamed</td></tr>
<tr><td><code>HTTPS_CIPHER</code></td><td><code>SSL_CIPHER</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>HTTPS_EXPORT</code></td><td><code>SSL_CIPHER_EXPORT</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_KEY_SIZE</code></td><td><code>SSL_CIPHER_ALGKEYSIZE</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_CERTIFICATE</code></td><td><code>SSL_SERVER_CERT</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_CERT_START</code></td><td><code>SSL_SERVER_V_START</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_CERT_END</code></td><td><code>SSL_SERVER_V_END</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_CERT_SERIAL</code></td><td><code>SSL_SERVER_M_SERIAL</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_SIGNATURE_ALGORITHM</code></td><td><code>SSL_SERVER_A_SIG</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_DN</code></td><td><code>SSL_SERVER_S_DN</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_CN</code></td><td><code>SSL_SERVER_S_DN_CN</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_EMAIL</code></td><td><code>SSL_SERVER_S_DN_Email</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_O</code></td><td><code>SSL_SERVER_S_DN_O</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_OU</code></td><td><code>SSL_SERVER_S_DN_OU</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_C</code></td><td><code>SSL_SERVER_S_DN_C</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_SP</code></td><td><code>SSL_SERVER_S_DN_SP</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_L</code></td><td><code>SSL_SERVER_S_DN_L</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_IDN</code></td><td><code>SSL_SERVER_I_DN</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_ICN</code></td><td><code>SSL_SERVER_I_DN_CN</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_IEMAIL</code></td><td><code>SSL_SERVER_I_DN_Email</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_IO</code></td><td><code>SSL_SERVER_I_DN_O</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_IOU</code></td><td><code>SSL_SERVER_I_DN_OU</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_IC</code></td><td><code>SSL_SERVER_I_DN_C</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SERVER_ISP</code></td><td><code>SSL_SERVER_I_DN_SP</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SERVER_IL</code></td><td><code>SSL_SERVER_I_DN_L</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_CERTIFICATE</code></td><td><code>SSL_CLIENT_CERT</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_CERT_START</code></td><td><code>SSL_CLIENT_V_START</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_CERT_END</code></td><td><code>SSL_CLIENT_V_END</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_CERT_SERIAL</code></td><td><code>SSL_CLIENT_M_SERIAL</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_SIGNATURE_ALGORITHM</code></td><td><code>SSL_CLIENT_A_SIG</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_DN</code></td><td><code>SSL_CLIENT_S_DN</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_CN</code></td><td><code>SSL_CLIENT_S_DN_CN</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_EMAIL</code></td><td><code>SSL_CLIENT_S_DN_Email</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_O</code></td><td><code>SSL_CLIENT_S_DN_O</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_OU</code></td><td><code>SSL_CLIENT_S_DN_OU</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_C</code></td><td><code>SSL_CLIENT_S_DN_C</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_SP</code></td><td><code>SSL_CLIENT_S_DN_SP</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_L</code></td><td><code>SSL_CLIENT_S_DN_L</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_IDN</code></td><td><code>SSL_CLIENT_I_DN</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_ICN</code></td><td><code>SSL_CLIENT_I_DN_CN</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_IEMAIL</code></td><td><code>SSL_CLIENT_I_DN_Email</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_IO</code></td><td><code>SSL_CLIENT_I_DN_O</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_IOU</code></td><td><code>SSL_CLIENT_I_DN_OU</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_IC</code></td><td><code>SSL_CLIENT_I_DN_C</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_ISP</code></td><td><code>SSL_CLIENT_I_DN_SP</code></td><td>renamed</td></tr>
<tr><td><code>SSL_CLIENT_IL</code></td><td><code>SSL_CLIENT_I_DN_L</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_EXPORT</code></td><td><code>SSL_CIPHER_EXPORT</code></td><td>renamed</td></tr>
<tr><td><code>SSL_KEYSIZE</code></td><td><code>SSL_CIPHER_ALGKEYSIZE</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_SECKEYSIZE</code></td><td><code>SSL_CIPHER_USEKEYSIZE</code></td><td>renamed</td></tr>
<tr><td><code>SSL_SSLEAY_VERSION</code></td><td><code>SSL_VERSION_LIBRARY</code></td><td>renamed</td></tr>
<tr class="odd"><td><code>SSL_STRONG_CRYPTO</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_SERVER_KEY_EXP</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr class="odd"><td><code>SSL_SERVER_KEY_ALGORITHM</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_SERVER_KEY_SIZE</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr class="odd"><td><code>SSL_SERVER_SESSIONDIR</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_SERVER_CERTIFICATELOGDIR</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr class="odd"><td><code>SSL_SERVER_CERTFILE</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_SERVER_KEYFILE</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr class="odd"><td><code>SSL_SERVER_KEYFILETYPE</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_CLIENT_KEY_EXP</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_KEY_ALGORITHM</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
<tr><td><code>SSL_CLIENT_KEY_SIZE</code></td><td><code>-</code></td><td>Not supported by mod_ssl</td></tr>
</table>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="customlog" id="customlog">Custom Log Functions</a></h2>
<p>
When mod_ssl is enabled, additional functions exist for the <a href="../mod/mod_log_config.html#formats">Custom Log Format</a> of
<code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> as documented in the Reference
Chapter. Beside the ``<code>%{</code><em>varname</em><code>}x</code>''
eXtension format function which can be used to expand any variables provided
by any module, an additional Cryptography
``<code>%{</code><em>name</em><code>}c</code>'' cryptography format function
exists for backward compatibility. The currently implemented function calls
are listed in <a href="#table3">Table 3</a>.</p>

<h3><a name="table3" id="table3">Table 3: Custom Log Cryptography Function</a></h3>

<table>

<tr><th>Function Call</th><th>Description</th></tr>

<tr><td><code>%...{version}c</code></td>   <td>SSL protocol version</td></tr>
<tr><td><code>%...{cipher}c</code></td>    <td>SSL cipher</td></tr>
<tr><td><code>%...{subjectdn}c</code></td> <td>Client Certificate Subject Distinguished Name</td></tr>
<tr><td><code>%...{issuerdn}c</code></td>  <td>Client Certificate Issuer Distinguished Name</td></tr>
<tr><td><code>%...{errcode}c</code></td>   <td>Certificate Verification Error (numerical)</td></tr>

<tr><td><code>%...{errstr}c</code></td>    <td>Certificate Verification Error (string)</td></tr>
</table>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                     ssl/ssl_faq.html                                                                                    100644       0       0       152506 11256641270  11401  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>SSL/TLS Strong Encryption: FAQ - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS Strong Encryption: FAQ</h1>


<blockquote>
<p>The wise man doesn't give the right answers,
he poses the right questions.</p>
<p class="cite">-- <cite>Claude Levi-Strauss</cite></p>

</blockquote>
<p>This chapter is a collection of frequently asked questions (FAQ) and
corresponding answers following the popular USENET tradition. Most of these
questions occurred on the Newsgroup <code><a href="news:comp.infosystems.www.servers.unix">comp.infosystems.www.servers.unix</a></code> or the mod_ssl Support
Mailing List <code><a href="mailto:modssl-users@modssl.org">modssl-users@modssl.org</a></code>. They are collected at this place
to avoid answering the same questions over and over.</p>

<p>Please read this chapter at least once when installing mod_ssl or at least
search for your problem here before submitting a problem report to the
author.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#about">About The Module</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#installation">Installation</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#aboutconfig">Configuration</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#aboutcerts">Certificates</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#aboutssl">The SSL Protocol</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#support">mod_ssl Support</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="about" id="about">About The Module</a></h2>
<ul>
<li><a href="#history">What is the history of mod_ssl?</a></li>
<li><a href="#wassenaar">mod_ssl and Wassenaar Arrangement?</a></li>
</ul>

<h3><a name="history" id="history">What is the history of mod_ssl?</a></h3>
<p>The mod_ssl v1 package was initially created in April 1998 by <a href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> via porting <a href="mailto:ben@algroup.co.uk">Ben Laurie</a>'s <a href="http://www.apache-ssl.org/">Apache-SSL</a> 1.17 source patches for
    Apache 1.2.6 to Apache 1.3b6. Because of conflicts with Ben
    Laurie's development cycle it then was re-assembled from scratch for
    Apache 1.3.0 by merging the old mod_ssl 1.x with the newer Apache-SSL
    1.18. From this point on mod_ssl lived its own life as mod_ssl v2. The
    first publicly released version was mod_ssl 2.0.0 from August 10th,
    1998. </p>
    
    <p>After US export restrictions on cryptographic software were
    loosened, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> became part of the Apache HTTP
    Server with the release of Apache httpd 2.</p>


<h3><a name="wassenaar" id="wassenaar">Is mod_ssl affected by the Wassenaar Arrangement?</a></h3>
<p>First, let us explain what <dfn>Wassenaar</dfn> and its <dfn>Arrangement on
    Export Controls for Conventional Arms and Dual-Use Goods and
    Technologies</dfn> is: This is a international regime, established in 1995, to
    control trade in conventional arms and dual-use goods and technology. It
    replaced the previous <dfn>CoCom</dfn> regime. Further details on 
    both the Arrangement and its signatories are available at <a href="http://www.wassenaar.org/">http://www.wassenaar.org/</a>.</p>

    <p>In short, the aim of the Wassenaar Arrangement is to prevent the build up
    of military capabilities that threaten regional and international security
    and stability. The Wassenaar Arrangement controls the export of
    cryptography as a dual-use good, that is, something that has both military and
    civilian applications. However, the Wassenaar Arrangement also provides an
    exemption from export controls for mass-market software and free software.</p>
    
    <p>In the current Wassenaar <cite>List of Dual Use Goods and Technologies And
    Munitions</cite>, under <q>GENERAL SOFTWARE NOTE (GSN)</q> it says
    <q>The Lists do not control "software" which is either: 1. [...] 2. "in
    the public domain".</q> And under <q>DEFINITIONS OF TERMS USED IN
    THESE LISTS</q> we find <q>In the public
    domain</q> defined as <q>"technology" or "software" which has been made
    available without restrictions upon its further dissemination. Note:
    Copyright restrictions do not remove "technology" or "software" from being
    "in the public domain".</q></p>
    
    <p>So, both mod_ssl and OpenSSL are <q>in the public domain</q> for the purposes
    of the Wassenaar Arrangement and its <q>List of Dual Use Goods and
    Technologies And Munitions List</q>, and thus not affected by its provisions.</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="installation" id="installation">Installation</a></h2>
<ul>
<li><a href="#mutex">Why do I get permission errors related to 
SSLMutex when I start Apache?</a></li>
<li><a href="#entropy">Why does mod_ssl stop with the error "Failed to 
generate temporary 512 bit RSA private key" when I start Apache?</a></li>
</ul>

<h3><a name="mutex" id="mutex">Why do I get permission errors related to 
	SSLMutex when I start Apache?</a></h3>
    <p>Errors such as ``<code>mod_ssl: Child could not open
    SSLMutex lockfile /opt/apache/logs/ssl_mutex.18332 (System error follows)
    [...] System: Permission denied (errno: 13)</code>'' are usually
    caused by overly restrictive permissions on the <em>parent</em> directories.
    Make sure that all parent directories (here <code>/opt</code>,
    <code>/opt/apache</code> and <code>/opt/apache/logs</code>) have the x-bit
    set for, at minimum, the UID under which Apache's children are running (see
    the <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> directive).</p>


<h3><a name="entropy" id="entropy">Why does mod_ssl stop with the error
	"Failed to generate temporary 512 bit RSA private key" when I start 
	Apache?</a></h3>
    <p>Cryptographic software needs a source of unpredictable data
    to work correctly. Many open source operating systems provide
    a "randomness device" that serves this purpose (usually named
    <code>/dev/random</code>). On other systems, applications have to
    seed the OpenSSL Pseudo Random Number Generator (PRNG) manually with
    appropriate data before generating keys or performing public key
    encryption. As of version 0.9.5, the OpenSSL functions that need
    randomness report an error if the PRNG has not been seeded with
    at least 128 bits of randomness.</p>
    <p>To prevent this error, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> has to provide 
    enough entropy to the PRNG to allow it to work correctly. This can 
    be done via the <code class="directive"><a href="../mod/mod_ssl.html#sslrandomseed">SSLRandomSeed</a></code> 
    directive.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="aboutconfig" id="aboutconfig">Configuration</a></h2>
<ul>
<li><a href="#parallel">Is it possible to provide HTTP and HTTPS from 
the same server?</a></li>
<li><a href="#ports">Which port does HTTPS use?</a></li>
<li><a href="#httpstest">How do I speak HTTPS manually for testing 
purposes?</a></li>
<li><a href="#hang">Why does the connection hang when I connect to my 
SSL-aware Apache server?</a></li>
<li><a href="#refused">Why do I get ``Connection Refused'' errors, when 
trying to access my newly installed Apache+mod_ssl server via HTTPS?</a></li>
<li><a href="#envvars">Why are the <code>SSL_XXX</code> variables not
available to my CGI &amp; SSI scripts?</a></li>
<li><a href="#relative">How can I switch between HTTP and HTTPS in 
relative hyperlinks?</a></li>
</ul>

<h3><a name="parallel" id="parallel">Is it possible to provide HTTP and HTTPS 
	from the same server?</a></h3>
    <p>Yes. HTTP and HTTPS use different server ports (HTTP binds to 
    port 80, HTTPS to port 443), so there is no direct conflict between 
    them. You can either run two separate server instances bound to 
    these ports, or use Apache's elegant virtual hosting facility to 
    create two virtual servers, both served by the same instance of Apache 
    - one responding over HTTP to requests on port 80, and the other 
    responding over HTTPS to requests on port 443.</p>


<h3><a name="ports" id="ports">Which port does HTTPS use?</a></h3>
<p>You can run HTTPS on any port, but the standards specify port 443, which
    is where any HTTPS compliant browser will look by default. You can force
    your browser to look on a different port by specifying it in the URL. For
    example, if your server is set up to serve pages over HTTPS on port 8080,
    you can access them at <code>https://example.com:8080/</code></p>


<h3><a name="httpstest" id="httpstest">How do I speak HTTPS manually for testing purposes?</a></h3>
 <p>While you usually just use</p>
    
    <div class="example"><p><code>$ telnet localhost 80<br />
    GET / HTTP/1.0</code></p></div>

    <p>for simple testing of Apache via HTTP, it's not so easy for
    HTTPS because of the SSL protocol between TCP and HTTP. With the
    help of OpenSSL's <code>s_client</code> command, however, you can 
    do a similar check via HTTPS:</p>
    
    <div class="example"><p><code>$ openssl s_client -connect localhost:443 -state -debug<br />
    GET / HTTP/1.0</code></p></div>

    <p>Before the actual HTTP response you will receive detailed
    information about the SSL handshake. For a more general command
    line client which directly understands both HTTP and HTTPS, can
    perform GET and POST operations, can use a proxy, supports byte
    ranges, etc. you should have a look at the nifty
    <a href="http://curl.haxx.se/">cURL</a> tool. Using this, you can
    check that Apache is responding correctly to requests via HTTP and
    HTTPS as follows:</p>

    <div class="example"><p><code>$ curl http://localhost/<br />
    $ curl https://localhost/</code></p></div>


<h3><a name="hang" id="hang">Why does the connection hang when I connect 
    to my SSL-aware Apache server?</a></h3>

<p>This can happen when you try to connect to a HTTPS server (or virtual
    server) via HTTP (eg, using <code>http://example.com/</code> instead of
    <code>https://example.com</code>). It can also happen when trying to
    connect via HTTPS to a HTTP server (eg, using
    <code>https://example.com/</code> on a server which doesn't support HTTPS,
    or which supports it on a non-standard port). Make sure that you're
    connecting to a (virtual) server that supports SSL.</p>

<h3><a name="refused" id="refused">Why do I get ``Connection Refused'' messages, 
    when trying to access my newly installed Apache+mod_ssl server via HTTPS?</a></h3>
<p>
    This error can be caused by an incorrect configuration.
    Please make sure that your <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> directives match your 
    <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
    directives. If all else fails, please start afresh, using the default 
    configuration provided by <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.</p>


<h3><a name="envvars" id="envvars">Why are the <code>SSL_XXX</code> variables 
    not available to my CGI &amp; SSI scripts?</a></h3>
<p>Please make sure you have ``<code>SSLOptions +StdEnvVars</code>''
    enabled for the context of your CGI/SSI requests.</p>


<h3><a name="relative" id="relative">How can I switch between HTTP and HTTPS in relative 
    hyperlinks?</a></h3>

<p>Usually, to switch between HTTP and HTTPS, you have to use 
    fully-qualified hyperlinks (because you have to change the URL 
    scheme).  Using <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> however, you can 
    manipulate relative hyperlinks, to achieve the same effect.</p>
    <div class="example"><p><code>
    RewriteEngine on<br />
    RewriteRule   ^/(.*):SSL$   https://%{SERVER_NAME}/$1 [R,L]<br />
    RewriteRule   ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1  [R,L]
    </code></p></div>

    <p>This rewrite ruleset lets you use hyperlinks of the form
    <code>&lt;a href="document.html:SSL"&gt;</code>, to switch to HTTPS
    in a relative link. (Replace SSL with NOSSL to switch to HTTP.)</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="aboutcerts" id="aboutcerts">Certificates</a></h2>
<ul>
<li><a href="#keyscerts">What are RSA Private Keys, CSRs and 
Certificates?</a></li>
<li><a href="#startup">Is there a difference on startup between
a non-SSL-aware Apache and an SSL-aware Apache?</a></li>
<li><a href="#selfcert">How do I create a self-signed SSL 
Certificate for testing purposes?</a></li>
<li><a href="#realcert">How do I create a real SSL Certificate?</a></li>
<li><a href="#ownca">How do I create and use my own Certificate 
Authority (CA)?</a></li>
<li><a href="#passphrase">How can I change the pass-phrase on my private 
key file?</a></li>
<li><a href="#removepassphrase">How can I get rid of the pass-phrase 
dialog at Apache startup time?</a></li>
<li><a href="#verify">How do I verify that a private key matches its 
Certificate?</a></li>
<li><a href="#badcert">Why do connections fail with an "alert bad 
certificate" error?</a></li>
<li><a href="#keysize">Why does my 2048-bit private key not work?</a></li>
<li><a href="#hashsymlinks">Why is client authentication broken after 
upgrading from SSLeay version 0.8 to 0.9?</a></li>
<li><a href="#pemder">How can I convert a certificate from PEM to DER 
format?</a></li>
<li><a href="#verisign">Why can't I find the
<code>getca</code> or <code>getverisign</code> programs mentioned by
Verisign, for installing my Verisign certificate?</a></li>
<li><a href="#sgc">Can I use the Server Gated Cryptography (SGC)
facility (aka Verisign Global ID) with mod_ssl?</a></li>
<li><a href="#gid">Why do browsers complain that they cannot
verify my Verisign Global ID server certificate?</a></li>
</ul>

<h3><a name="keyscerts" id="keyscerts">What are RSA Private Keys, CSRs and Certificates?</a></h3>
<p>An RSA private key file is a digital file that you can use to decrypt
    messages sent to you. It has a public component which you distribute (via
    your Certificate file) which allows people to encrypt those messages to
    you.</p>
    <p>A Certificate Signing Request (CSR) is a digital file which contains
    your public key and your name. You send the CSR to a Certifying Authority
    (CA), who will convert it into a real Certificate, by signing it.</p> 
    <p>A Certificate contains your
    RSA public key, your name, the name of the CA, and is digitally signed by
    the CA. Browsers that know the CA can verify the signature on that
    Certificate, thereby obtaining your RSA public key. That enables them to
    send messages which only you can decrypt.</p>
    <p>See the <a href="ssl_intro.html">Introduction</a> chapter for a general
    description of the SSL protocol.</p>


<h3><a name="startup" id="startup">Is there a difference on startup between 
    a non-SSL-aware Apache and an SSL-aware Apache?</a></h3>
<p>Yes. In general, starting Apache with 
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> built-in is just like starting Apache 
    without it. However, if you have a passphrase on your SSL private 
    key file, a startup dialog will pop up which asks you to enter the 
    pass phrase.</p>
    
    <p>Having to manually enter the passphrase when starting the server 
    can be problematic - for example, when starting the server from the 
    system boot scripts. In this case, you can follow the steps
    <a href="#removepassphrase">below</a> to remove the passphrase from
    your private key. Bear in mind that doing so brings additional security
    risks - proceed with caution!</p>


<h3><a name="selfcert" id="selfcert">How do I create a self-signed SSL 
Certificate for testing purposes?</a></h3>
    <ol>
    <li>Make sure OpenSSL is installed and in your <code>PATH</code>.<br />
    <br />
    </li>
    <li>Run the following command, to create <code>server.key</code> and
        <code>server.crt</code> files:<br />
	<code><strong>$ openssl req -new -x509 -nodes -out server.crt 
			-keyout server.key</strong></code><br />
	These can be used as follows in your <code>httpd.conf</code> 
	file:
        <pre>
             SSLCertificateFile    /path/to/this/server.crt
             SSLCertificateKeyFile /path/to/this/server.key
	</pre>
    </li>
    <li>It is important that you are aware that this 
	<code>server.key</code> does <em>not</em> have any passphrase.
	To add a passphrase to the key, you should run the following 
	command, and enter &amp; verify the passphrase as requested.<br />
	<p><code><strong>$ openssl rsa -des3 -in server.key -out 
	server.key.new</strong></code><br />
	<code><strong>$ mv server.key.new server.key</strong></code><br /></p>
	Please backup the <code>server.key</code> file, and the passphrase 
	you entered, in a secure location.
    </li>
    </ol>


<h3><a name="realcert" id="realcert">How do I create a real SSL Certificate?</a></h3>
<p>Here is a step-by-step description:</p>
    <ol>
    <li>Make sure OpenSSL is installed and in your <code>PATH</code>.
    <br />
    <br />
    </li>
    <li>Create a RSA private key for your Apache server
       (will be Triple-DES encrypted and PEM formatted):<br />
       <br />
       <code><strong>$ openssl genrsa -des3 -out server.key 1024</strong></code><br />
       <br />
       Please backup this <code>server.key</code> file and the
       pass-phrase you entered in a secure location.
       You can see the details of this RSA private key by using the command:<br />

       <br />
       <code><strong>$ openssl rsa -noout -text -in server.key</strong></code><br />
       <br />
       If necessary, you can also create a decrypted PEM version (not 
       recommended) of this RSA private key with:<br />
       <br />
       <code><strong>$ openssl rsa -in server.key -out server.key.unsecure</strong></code><br />
       <br />

    </li>
    <li>Create a Certificate Signing Request (CSR) with the server RSA private
       key (output will be PEM formatted):<br />
       <br />
       <code><strong>$ openssl req -new -key server.key -out server.csr</strong></code><br />
       <br />
       Make sure you enter the FQDN ("Fully Qualified Domain Name") of the
       server when OpenSSL prompts you for the "CommonName", i.e. when you
       generate a CSR for a website which will be later accessed via
       <code>https://www.foo.dom/</code>, enter "www.foo.dom" here.
       You can see the details of this CSR by using<br />

       <br />
       <code><strong>$ openssl req -noout -text -in server.csr</strong></code><br />
       <br />
    </li>
    <li>You now have to send this Certificate Signing Request (CSR) to
       a Certifying Authority (CA) to be signed. Once the CSR has been 
       signed, you will have a real Certificate, which can be used by
       Apache. You can have a CSR signed by a commercial CA, or you can 
       create your own CA to sign it.<br />
       Commercial CAs usually ask you to post the CSR into a web form, 
       pay for the signing, and then send a signed Certificate, which 
       you can store in a server.crt file. For more information about 
       commercial CAs see the following locations:<br />
       <br />
       <ol>
       <li>  Verisign<br />
             <a href="http://digitalid.verisign.com/server/apacheNotice.htm">
             http://digitalid.verisign.com/server/apacheNotice.htm
             </a>
       </li>
       <li>  Thawte<br />
         <a href="http://www.thawte.com/">http://www.thawte.com/</a>
       </li>
       <li>  CertiSign Certificadora Digital Ltda.<br />
             <a href="http://www.certisign.com.br">
             http://www.certisign.com.br
             </a>
       </li>
       <li>  IKS GmbH<br />
             <a href="http://www.iks-jena.de/leistungen/ca/">
             http://www.iks-jena.de/leistungen/ca/
             </a>
       </li>
       <li>  Uptime Commerce Ltd.<br />
             <a href="http://www.uptimecommerce.com">
             http://www.uptimecommerce.com
             </a>
       </li>
       <li>  BelSign NV/SA<br />
             <a href="http://www.belsign.be">
             http://www.belsign.be
             </a>
       </li>
       </ol>

       For details on how to create your own CA, and use this to sign
       a CSR, see <a href="#ownca">below</a>.<br />
       
       Once your CSR has been signed, you can see the details of the 
       Certificate as follows:<br />
       <br />
       <code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br />

    </li>
    <li>You should now have two files: <code>server.key</code> and
    <code>server.crt</code>. These can be used as follows in your
    <code>httpd.conf</code> file:
       <pre>
       SSLCertificateFile    /path/to/this/server.crt
       SSLCertificateKeyFile /path/to/this/server.key
       </pre>
       The <code>server.csr</code> file is no longer needed.
    </li>

    </ol>


<h3><a name="ownca" id="ownca">How do I create and use my own Certificate Authority (CA)?</a></h3>
    <p>The short answer is to use the <code>CA.sh</code> or <code>CA.pl</code>
    script provided by OpenSSL. Unless you have a good reason not to, 
    you should use these for preference. If you cannot, you can create a
    self-signed Certificate as follows:</p>
    
    <ol>
    <li>Create a RSA private key for your server
       (will be Triple-DES encrypted and PEM formatted):<br />
       <br />
       <code><strong>$ openssl genrsa -des3 -out server.key 1024</strong></code><br />
       <br />
       Please backup this <code>host.key</code> file and the
       pass-phrase you entered in a secure location.
       You can see the details of this RSA private key by using the 
       command:<br />
       <code><strong>$ openssl rsa -noout -text -in server.key</strong></code><br />
       <br />
       If necessary, you can also create a decrypted PEM version (not 
       recommended) of this RSA private key with:<br />
       <br />
       <code><strong>$ openssl rsa -in server.key -out server.key.unsecure</strong></code><br />
       <br />
    </li>
    <li>Create a self-signed Certificate (X509 structure)
       with the RSA key you just created (output will be PEM formatted):<br />
       <br />
       <code><strong>$ openssl req -new -x509 -nodes -sha1 -days 365 
		       -key server.key -out server.crt</strong></code><br />
       <br />
       This signs the server CSR and results in a <code>server.crt</code> file.<br />
       You can see the details of this Certificate using:<br />
       <br />
       <code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br />
       <br />
    </li>
    </ol>


<h3><a name="passphrase" id="passphrase">How can I change the pass-phrase on my private key file?</a></h3>
<p>You simply have to read it with the old pass-phrase and write it again,
    specifying the new pass-phrase. You can accomplish this with the following
    commands:</p>

    
    <p><code><strong>$ openssl rsa -des3 -in server.key -out server.key.new</strong></code><br />
    <code><strong>$ mv server.key.new server.key</strong></code><br /></p>
    
    <p>The first time you're asked for a PEM pass-phrase, you should
    enter the old pass-phrase. After that, you'll be asked again to 
    enter a pass-phrase - this time, use the new pass-phrase. If you
    are asked to verify the pass-phrase, you'll need to enter the new 
    pass-phrase a second time.</p>


<h3><a name="removepassphrase" id="removepassphrase">How can I get rid of the pass-phrase dialog at Apache startup time?</a></h3>
<p>The reason this dialog pops up at startup and every re-start
    is that the RSA private key inside your server.key file is stored in
    encrypted format for security reasons. The pass-phrase is needed to decrypt
    this file, so it can be read and parsed. Removing the pass-phrase 
    removes a layer of security from your server - proceed with caution!</p>
    <ol>
    <li>Remove the encryption from the RSA private key (while
       keeping a backup copy of the original file):<br />
       <br />
       <code><strong>$ cp server.key server.key.org</strong></code><br />
       <code><strong>$ openssl rsa -in server.key.org -out server.key</strong></code><br />

       <br />
    </li>
    <li>Make sure the server.key file is only readable by root:<br />
       <br />
       <code><strong>$ chmod 400 server.key</strong></code><br />
       <br />
    </li>
    </ol>

    <p>Now <code>server.key</code> contains an unencrypted copy of the key.
    If you point your server at this file, it will not prompt you for a
    pass-phrase. HOWEVER, if anyone gets this key they will be able to
    impersonate you on the net. PLEASE make sure that the permissions on this
    file are such that only root or the web server user can read it
    (preferably get your web server to start as root but run as another
    user, and have the key readable only by root).</p>
    
    <p>As an alternative approach you can use the ``<code>SSLPassPhraseDialog
    exec:/path/to/program</code>'' facility. Bear in mind that this is
    neither more nor less secure, of course.</p>


<h3><a name="verify" id="verify">How do I verify that a private key matches its Certificate?</a></h3>
<p>A private key contains a series of numbers. Two of these numbers form
    the "public key", the others are part of the "private key". The "public
    key" bits are included when you generate a CSR, and subsequently form
    part of the associated Certificate.</p>
    <p>To check that the public key in your Certificate matches the public
    portion of your private key, you simply need to compare these numbers. 
    To view the Certificate and the key run the commands:</p>
    
    <p><code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br />
    <code><strong>$ openssl rsa -noout -text -in server.key</strong></code></p>
    
    <p>The `modulus' and the `public exponent' portions in the key and the
    Certificate must match. As the public exponent is usually 65537
    and it's difficult to visually check that the long modulus numbers
    are the same, you can use the following approach:</p>
    
    <p><code><strong>$ openssl x509 -noout -modulus -in server.crt | openssl md5</strong></code><br />
    <code><strong>$ openssl rsa -noout -modulus -in server.key | openssl md5</strong></code></p>
    
    <p>This leaves you with two rather shorter numbers to compare. It is,
    in theory, possible that these numbers may be the same, without the 
    modulus numbers being the same, but the chances of this are 
    overwhelmingly remote.</p>
    <p>Should you wish to check to which key or certificate a particular 
    CSR belongs you can perform the same calculation on the CSR as 
    follows:</p>
    
    <p><code><strong>$ openssl req -noout -modulus -in server.csr | openssl md5</strong></code></p>


<h3><a name="badcert" id="badcert">Why do connections fail with an "alert 
bad certificate" error?</a></h3>
<p>Errors such as <code>OpenSSL: error:14094412: SSL
    routines:SSL3_READ_BYTES:sslv3 alert bad certificate</code> in the SSL
    logfile, are usually caused by a browser which is unable to handle the server
    certificate/private-key. For example, Netscape Navigator 3.x is 
    unable to handle RSA key lengths not equal to 1024 bits.</p>


<h3><a name="keysize" id="keysize">Why does my 2048-bit private key not work?</a></h3>
<p>The private key sizes for SSL must be either 512 or 1024 bits, for compatibility
    with certain web browsers. A keysize of 1024 bits is recommended because
    keys larger than 1024 bits are incompatible with some versions of Netscape
    Navigator and Microsoft Internet Explorer, and with other browsers that
    use RSA's BSAFE cryptography toolkit.</p>


<h3><a name="hashsymlinks" id="hashsymlinks">Why is client authentication broken after upgrading from
SSLeay version 0.8 to 0.9?</a></h3>
<p>The CA certificates under the path you configured with
    <code>SSLCACertificatePath</code> are found by SSLeay through hash
    symlinks. These hash values are generated by the `<code>openssl x509 -noout
    -hash</code>' command. However, the algorithm used to calculate the hash for a
    certificate changed between SSLeay 0.8 and 0.9. You will need to remove
    all old hash symlinks and create new ones after upgrading. Use the
    <code>Makefile</code> provided by <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.</p>


<h3><a name="pemder" id="pemder">How can I convert a certificate from PEM to DER format?</a></h3>
<p>The default certificate format for SSLeay/OpenSSL is PEM, which is simply
    Base64 encoded DER, with header and footer lines. For some applications
    (e.g. Microsoft Internet Explorer) you need the certificate in plain DER
    format. You can convert a PEM file <code>cert.pem</code> into the
    corresponding DER file <code>cert.der</code> using the following command:
    <code><strong>$ openssl x509 -in cert.pem -out cert.der -outform DER</strong></code></p>


<h3><a name="verisign" id="verisign">Why can't I find the
<code>getca</code> or <code>getverisign</code> programs mentioned by 
Verisign, for installing my Verisign certificate?</a></h3>
<p>Verisign has never provided specific instructions
    for Apache+mod_ssl. The instructions provided are for C2Net's 
    Stronghold (a commercial Apache based server with SSL support).</p> 
    <p>To install your certificate, all you need to do is to save the 
    certificate to a file, and give the name of that file to the 
    <code class="directive"><a href="../mod/mod_ssl.html#sslcertificatefile">SSLCertificateFile</a></code> directive.
    You will also need to give it the key file. For more information, 
    see the <code class="directive"><a href="../mod/mod_ssl.html#sslcertificatekeyfile">SSLCertificateKeyFile</a></code>
    directive.</p> 


<h3><a name="sgc" id="sgc">Can I use the Server Gated Cryptography (SGC) 
facility (aka Verisign Global ID) with mod_ssl?</a></h3>
<p>Yes. <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> has included support for the SGC 
    facility since version 2.1. No special configuration is required - 
    just use the Global ID as your server certificate. The 
    <em>step up</em> of the clients is then automatically handled by 
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> at run-time.</p> 


<h3><a name="gid" id="gid">Why do browsers complain that they cannot 
verify my Verisign Global ID server certificate?</a></h3>
<p>Verisign uses an intermediate CA certificate between the root CA 
    certificate (which is installed in the browsers) and the server 
    certificate (which you installed on the server). You should have 
    received this additional CA certificate from Verisign.
    If not, complain to them. Then, configure this certificate with the
    <code class="directive"><a href="../mod/mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile</a></code> 
    directive. This ensures that the intermediate CA certificate is 
    sent to the browser, filling the gap in the certificate chain.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="aboutssl" id="aboutssl">The SSL Protocol</a></h2>
<ul>
<li><a href="#random">Why do I get lots of random SSL protocol 
errors under heavy server load?</a></li>
<li><a href="#load">Why does my webserver have a higher load, now
that it serves SSL encrypted traffic?</a></li>
<li><a href="#establishing">Why do HTTPS connections to my server
sometimes take up to 30 seconds to establish a connection?</a></li>
<li><a href="#ciphers">What SSL Ciphers are supported by mod_ssl?</a></li>
<li><a href="#adh">Why do I get ``no shared cipher'' errors, when
trying to use Anonymous Diffie-Hellman (ADH) ciphers?</a></li>
<li><a href="#sharedciphers">Why do I get a 'no shared ciphers'
error when connecting to my newly installed server?</a></li>
<li><a href="#vhosts">Why can't I use SSL with name-based/non-IP-based 
virtual hosts?</a></li>
<li><a href="#vhosts2">Why is it not possible to use Name-Based Virtual
Hosting to identify different SSL virtual hosts?</a></li>
<li><a href="#comp">How do I get SSL compression working?</a></li>
<li><a href="#lockicon">When I use Basic Authentication over HTTPS
the lock icon in Netscape browsers stays unlocked when the dialog pops up.
Does this mean the username/password is being sent unencrypted?</a></li>
<li><a href="#msie">Why do I get I/O errors when connecting via
HTTPS to an Apache+mod_ssl server with Microsoft Internet Explorer 
(MSIE)?</a></li>
<li><a href="#nn">Why do I get I/O errors, or the message "Netscape has 
encountered bad data from the server", when connecting via
HTTPS to an Apache+mod_ssl server with Netscape Navigator?</a></li>
</ul>

<h3><a name="random" id="random">Why do I get lots of random SSL protocol 
errors under heavy server load?</a></h3>
<p>There can be a number of reasons for this, but the main one
    is problems with the SSL session Cache specified by the
    <code class="directive"><a href="../mod/mod_ssl.html#sslsessioncache">SSLSessionCache</a></code> directive. The DBM session
    cache is the most likely source of the problem, so using the SHM session cache (or
    no cache at all) may help.</p>


<h3><a name="load" id="load">Why does my webserver have a higher load, now 
that it serves SSL encrypted traffic?</a></h3>
<p>SSL uses strong cryptographic encryption, which necessitates a lot of
    number crunching. When you request a webpage via HTTPS, everything (even
    the images) is encrypted before it is transferred. So increased HTTPS
    traffic leads to load increases.</p>


<h3><a name="establishing" id="establishing">Why do HTTPS connections to my server 
sometimes take up to 30 seconds to establish a connection?</a></h3>
<p>This is usually caused by a <code>/dev/random</code> device for
    <code class="directive"><a href="../mod/mod_ssl.html#sslrandomseed">SSLRandomSeed</a></code> which blocks the 
    read(2) call until enough entropy is available to service the 
    request. More information is available in the reference
    manual for the <code class="directive"><a href="../mod/mod_ssl.html#sslrandomseed">SSLRandomSeed</a></code>
    directive.</p>


<h3><a name="ciphers" id="ciphers">What SSL Ciphers are supported by mod_ssl?</a></h3>
<p>Usually, any SSL ciphers supported by the version of OpenSSL in use, 
    are also supported by <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. Which ciphers are 
    available can depend on the way you built OpenSSL. Typically, at 
    least the following ciphers are supported:</p>
    
    <ol>
    <li>RC4 with MD5</li>
    <li>RC4 with MD5 (export version restricted to 40-bit key)</li>
    <li>RC2 with MD5</li>
    <li>RC2 with MD5 (export version restricted to 40-bit key)</li>
    <li>IDEA with MD5</li>
    <li>DES with MD5</li>
    <li>Triple-DES with MD5</li>
    </ol>
    
    <p>To determine the actual list of ciphers available, you should run 
    the following:</p>
    <div class="example"><p><code>$ openssl ciphers -v</code></p></div>


<h3><a name="adh" id="adh">Why do I get ``no shared cipher'' errors, when 
trying to use Anonymous Diffie-Hellman (ADH) ciphers?</a></h3>
<p>By default, OpenSSL does <em>not</em> allow ADH ciphers, for security
    reasons. Please be sure you are aware of the potential side-effects 
    if you choose to enable these ciphers.</p>
    <p>In order to use Anonymous Diffie-Hellman (ADH) ciphers, you must 
    build OpenSSL with ``<code>-DSSL_ALLOW_ADH</code>'', and then add
    ``<code>ADH</code>'' into your <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code>.</p>


<h3><a name="sharedciphers" id="sharedciphers">Why do I get a 'no shared ciphers' 
error when connecting to my newly installed server?</a></h3>
<p>Either you have made a mistake with your 
    <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code>
    directive (compare it with the pre-configured example in
    <code>httpd.conf-dist</code>) or you chose to use DSA/DH
    algorithms instead of RSA when you generated your private key
    and ignored or overlooked the warnings. If you have chosen
    DSA/DH, then your server cannot communicate using RSA-based SSL 
    ciphers (at least until you configure an additional RSA-based
    certificate/key pair). Modern browsers like NS or IE can only 
    communicate over SSL using RSA ciphers. The result is the 
    "no shared ciphers" error. To fix this, regenerate your server 
    certificate/key pair, using the RSA algorithm.</p>


<h3><a name="vhosts" id="vhosts">Why can't I use SSL with name-based/non-IP-based virtual hosts?</a></h3>
<p>The reason is very technical, and a somewhat "chicken and egg" problem. 
    The SSL protocol layer stays below the HTTP protocol layer and 
    encapsulates HTTP. When an SSL connection (HTTPS) is established
    Apache/mod_ssl has to negotiate the SSL protocol parameters with the
    client. For this, mod_ssl has to consult the configuration of the virtual
    server (for instance it has to look for the cipher suite, the server
    certificate, etc.). But in order to go to the correct virtual server
    Apache has to know the <code>Host</code> HTTP header field. To do this, the
    HTTP request header has to be read. This cannot be done before the SSL
    handshake is finished, but the information is needed in order to 
    complete the SSL handshake phase. Bingo!</p>


<h3><a name="vhosts2" id="vhosts2">Why is it not possible to use Name-Based
Virtual Hosting to identify different SSL virtual hosts?</a></h3>
    <p>Name-Based Virtual Hosting is a very popular method of identifying
    different virtual hosts. It allows you to use the same IP address and
    the same port number for many different sites. When people move on to
    SSL, it seems natural to assume that the same method can be used to have
    lots of different SSL virtual hosts on the same server.</p>

    <p>It comes as rather a shock to learn that it is impossible.</p> 

    <p>The reason is that the SSL protocol is a separate layer which
    encapsulates the HTTP protocol. So the SSL session is a separate 
    transaction, that takes place before the HTTP session has begun. 
    The server receives an SSL request on IP address X and port Y 
    (usually 443). Since the SSL request does not contain any Host: 
    field, the server has no way to decide which SSL virtual host to use.
    Usually, it will just use the first one it finds, which matches the 
    port and IP address specified.</p> 

    <p>You can, of course, use Name-Based Virtual Hosting to identify many
    non-SSL virtual hosts (all on port 80, for example) and then 
    have a single SSL virtual host (on port 443). But if you do this,
    you must make sure to put the non-SSL port number on the NameVirtualHost
    directive, e.g.</p> 

    <div class="example"><p><code>
      NameVirtualHost 192.168.1.1:80
    </code></p></div>
    
    <p>Other workaround solutions include: </p>

    <p>Using separate IP addresses for different SSL hosts. 
    Using different port numbers for different SSL hosts.</p> 


<h3><a name="comp" id="comp">How do I get SSL compression working?</a></h3>
<p>Although SSL compression negotiation was defined in the specification
of SSLv2 and TLS, it took until May 2004 for RFC 3749 to define DEFLATE as
a negotiable standard compression method.
</p>
<p>OpenSSL 0.9.8 started to support this by default when compiled with the
<code>zlib</code> option. If both the client and the server support compression,
it will be used. However, most clients still try to initially connect with an
SSLv2 Hello. As SSLv2 did not include an array of prefered compression algorithms
in its handshake, compression cannot be negotiated with these clients.
If the client disables support for SSLv2, either an SSLv3 or TLS Hello
may be sent, depending on which SSL library is used, and compression may 
be set up. You can verify whether clients make use of SSL compression by 
logging the <code>%{SSL_COMPRESS_METHOD}x</code> variable.
</p>


<h3><a name="lockicon" id="lockicon">When I use Basic Authentication over HTTPS 
the lock icon in Netscape browsers stays unlocked when the dialog pops up. 
Does this mean the username/password is being sent unencrypted?</a></h3>
<p>No, the username/password is transmitted encrypted. The icon in
    Netscape browsers is not actually synchronized with the SSL/TLS layer.
    It only toggles to the locked state when the first part of the actual 
    webpage data is transferred, which may confuse people. The Basic 
    Authentication facility is part of the HTTP layer, which is above 
    the SSL/TLS layer in HTTPS. Before any HTTP data communication takes 
    place in HTTPS, the SSL/TLS layer has already completed its handshake 
    phase, and switched to encrypted communication. So don't be
    confused by this icon.</p>


<h3><a name="msie" id="msie">Why do I get I/O errors when connecting via 
HTTPS to an Apache+mod_ssl server with Microsoft Internet Explorer (MSIE)?</a></h3>
<p>The first reason is that the SSL implementation in some MSIE versions has
    some subtle bugs related to the HTTP keep-alive facility and the SSL close
    notify alerts on socket connection close. Additionally the interaction
    between SSL and HTTP/1.1 features are problematic in some MSIE versions. 
    You can work around these problems by forcing Apache not to use HTTP/1.1, 
    keep-alive connections or send the SSL close notify messages to MSIE clients. 
    This can be done by using the following directive in your SSL-aware 
    virtual host section:</p>
    <div class="example"><p><code>
    SetEnvIf User-Agent ".*MSIE.*" \<br />
             nokeepalive ssl-unclean-shutdown \<br />
             downgrade-1.0 force-response-1.0
    </code></p></div>
    <p>Further, some MSIE versions have problems with particular ciphers. 
    Unfortunately, it is not possible to implement a MSIE-specific 
    workaround for this, because the ciphers are needed as early as the 
    SSL handshake phase. So a MSIE-specific 
    <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> won't solve these 
    problems. Instead, you will have to make more drastic
    adjustments to the global parameters. Before you decide to do
    this, make sure your clients really have problems. If not, do not 
    make these changes - they will affect <em>all</em> your clients, MSIE
    or otherwise.</p>

    <p>The next problem is that 56bit export versions of MSIE 5.x 
    browsers have a broken SSLv3 implementation, which interacts badly 
    with OpenSSL versions greater than 0.9.4. You can accept this and 
    require your clients to upgrade their browsers, you can downgrade to 
    OpenSSL 0.9.4 (not advised), or you can work around this, accepting 
    that your workaround will affect other browsers too:</p>
    <div class="example"><p><code>SSLProtocol all -SSLv3</code></p></div>
    <p>will completely disables the SSLv3 protocol and allow those 
    browsers to work. A better workaround is to disable only those 
    ciphers which cause trouble.</p>
    <div class="example"><p><code>SSLCipherSuite
    ALL:!ADH:<strong>!EXPORT56</strong>:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP</code>
    </p></div>

    <p>This also allows the broken MSIE versions to work, but only removes the
    newer 56bit TLS ciphers.</p>
    
    <p>Another problem with MSIE 5.x clients is that they refuse to connect to
    URLs of the form <code>https://12.34.56.78/</code> (where IP-addresses are used
    instead of the hostname), if the server is using the Server Gated
    Cryptography (SGC) facility. This can only be avoided by using the fully
    qualified domain name (FQDN) of the website in hyperlinks instead, because
    MSIE 5.x has an error in the way it handles the SGC negotiation.</p>
    
    <p>And finally there are versions of MSIE which seem to require that
    an SSL session can be reused (a totally non standard-conforming
    behaviour, of course). Connecting with those MSIE versions only work
    if a SSL session cache is used. So, as a work-around, make sure you
    are using a session cache (see the <code class="directive"><a href="../mod/mod_ssl.html#sslsessioncache">SSLSessionCache</a></code> directive).</p>


<h3><a name="nn" id="nn">Why do I get I/O errors, or the message "Netscape has
encountered bad data from the server", when connecting via
HTTPS to an Apache+mod_ssl server with Netscape Navigator?</a></h3>
<p>
    This usually occurs when you have created a new server certificate for
    a given domain, but had previously told your browser to always accept 
    the old server certificate. Once you clear the entry for the old 
    certificate from your browser, everything should be fine. Netscape's SSL
    implementation is correct, so when you encounter I/O errors with Netscape
    Navigator it is usually caused by the configured certificates.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="support" id="support">mod_ssl Support</a></h2>
<ul>
<li><a href="#resources">What information resources are available in 
case of mod_ssl problems?</a></li>
<li><a href="#contact">What support contacts are available in case of 
mod_ssl problems?</a></li>
<li><a href="#reportdetails">What information should I 
provide when writing a bug report?</a></li>
<li><a href="#coredumphelp">I had a core dump, can you help me?</a></li>
<li><a href="#backtrace">How do I get a backtrace, to help find the reason
for my core dump?</a></li>
</ul>

<h3><a name="resources" id="resources">What information resources are available in case of mod_ssl problems?</a></h3>
<p>The following information resources are available.
    In case of problems you should search here first.</p>

    <dl>
    <dt>Answers in the User Manual's F.A.Q. List (this)</dt>
    <dd><a href="http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html">
	http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html</a><br />
	First check the F.A.Q. (this text). If your problem is a common
	one, it may have been answered several times before, and been included
	in this doc.
    </dd>
    <dt>Postings from the modssl-users Support Mailing List
        <a href="http://www.modssl.org/support/">http://www.modssl.org/support/</a></dt>
    <dd>Search for your problem in the archives of the modssl-users mailing list. 
	You're probably not the first person to have had this problem!
    </dd>
    </dl>


<h3><a name="contact" id="contact">What support contacts are available in case 
of mod_ssl problems?</a></h3>
 <p>The following lists all support possibilities for mod_ssl, in order of
	 preference. Please go through these possibilities 
	 <em>in this order</em> - don't just pick the one you like the look of. </p>
    <ol>
    <li><em>Send a Problem Report to the modssl-users Support Mailing List</em><br />
        <a href="mailto:modssl-users@modssl.org">
        modssl-users@modssl.org</a><br />
        This is the preferred way of submitting your problem report, because this way,
	others can see the problem, and learn from any answers. You must subscribe to 
        the list first, but you can then easily discuss your problem with both the 
	author and the whole mod_ssl user community.
        </li>

    <li><em>Send a Problem Report to the Apache httpd Users Support Mailing List</em><br />
        <a href="mailto:users@httpd.apache.org">
        users@httpd.apache.org</a><br />
        This is the second way of submitting your problem report. Again, you must
        subscribe to the list first, but you can then easily discuss your problem
        with the whole Apache httpd user community.
    </li>

    <li><em>Write a Problem Report in the Bug Database</em><br />
	<a href="http://httpd.apache.org/bug_report.html">
	http://httpd.apache.org/bug_report.html</a><br />
        This is the last way of submitting your problem report. You should only
	do this if you've already posted to the mailing lists, and had no success.
	Please follow the instructions on the above page <em>carefully</em>.
    </li>
    </ol>


<h3><a name="reportdetails" id="reportdetails">What information should I
provide when writing a bug report?</a></h3>
<p>You should always provide at least the following information:</p>

    <dl>
    <dt>Apache and OpenSSL version information</dt>
    <dd>The Apache version can be determined
        by running <code>httpd -v</code>. The OpenSSL version can be
        determined by running <code>openssl version</code>. Alternatively, if
        you have Lynx installed, you can run the command <code>lynx -mime_header
        http://localhost/ | grep Server</code> to gather this information in a
        single step.
    </dd>

    <dt>The details on how you built and installed Apache+mod_ssl+OpenSSL</dt>
    <dd>For this you can provide a logfile of your terminal session which shows
    the configuration and install steps. If this is not possible, you 
    should at least provide the <code class="program"><a href="../programs/configure.html">configure</a></code> command line you used.
    </dd>

    <dt>In case of core dumps please include a Backtrace</dt>
    <dd>If your Apache+mod_ssl+OpenSSL dumps its core, please attach
    a stack-frame ``backtrace'' (see <a href="#backtrace">below</a> 
    for information on how to get this). This information is required
    in order to find a reason for your core dump.
    </dd>
    
    <dt>A detailed description of your problem</dt>
    <dd>Don't laugh, we really mean it! Many problem reports don't 
    include a description of what the actual problem is. Without this,
    it's very difficult for anyone to help you. So, it's in your own 
    interest (you want the problem be solved, don't you?) to include as 
    much detail as possible, please. Of course, you should still include
    all the essentials above too.
    </dd>
    </dl>


<h3><a name="coredumphelp" id="coredumphelp">I had a core dump, can you help me?</a></h3>
<p>In general no, at least not unless you provide more details about the code
    location where Apache dumped core. What is usually always required in
    order to help you is a backtrace (see next question). Without this
    information it is mostly impossible to find the problem and help you in
    fixing it.</p>


<h3><a name="backtrace" id="backtrace">How do I get a backtrace, to help find 
the reason for my core dump?</a></h3>
<p>Following are the steps you will need to complete, to get a backtrace:</p>
    <ol>
    <li>Make sure you have debugging symbols available, at least
        in Apache. On platforms where you use GCC/GDB, you will have to build
        Apache+mod_ssl with ``<code>OPTIM="-g -ggdb3"</code>'' to get this. On
        other platforms at least ``<code>OPTIM="-g"</code>'' is needed.
    </li>

    <li>Start the server and try to reproduce the core-dump. For this you may
        want to use a directive like ``<code>CoreDumpDirectory /tmp</code>'' to
	make sure that the core-dump file can be written. This should result
	in a <code>/tmp/core</code> or <code>/tmp/httpd.core</code> file. If you
        don't get one of these, try running your server under a non-root UID. 
        Many modern kernels do not allow a process to dump core after it has
        done a <code>setuid()</code> (unless it does an <code>exec()</code>) for
        security reasons (there can be privileged information left over in
        memory). If necessary, you can run <code>/path/to/httpd -X</code>
        manually to force Apache to not fork.
    </li>

    <li>Analyze the core-dump. For this, run <code>gdb /path/to/httpd
        /tmp/httpd.core</code> or a similar command. In GDB, all you 
	have to do then is to enter <code>bt</code>, and voila, you get the
        backtrace. For other debuggers consult your local debugger manual. 
    </li>
    </ol>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                          ssl/ssl_howto.html                                                                                  100644       0       0        33662 11256641270  11753  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>SSL/TLS Strong Encryption: How-To - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS Strong Encryption: How-To</h1>


<blockquote>
<p>The solution to this problem is trivial
and is left as an exercise for the reader.</p>

<p class="cite">-- <cite>Standard textbook cookie</cite></p>
</blockquote>

<p>How to solve particular security problems for an SSL-aware
webserver is not always obvious because of the interactions between SSL,
HTTP and Apache's way of processing requests. This chapter gives
instructions on how to solve some typical situations. Treat it as a first
step to find out the final solution, but always try to understand the 
stuff before you use it. Nothing is worse than using a security solution
without knowing its restrictions and how it interacts with other systems.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#ciphersuites">Cipher Suites and Enforcing Strong Security</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#accesscontrol">Client Authentication and Access Control</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ciphersuites" id="ciphersuites">Cipher Suites and Enforcing Strong Security</a></h2>

<ul>
<li><a href="#realssl">How can I create a real SSLv2-only server?</a></li>
<li><a href="#onlystrong">How can I create an SSL server which accepts strong encryption only?</a></li>
<li><a href="#upgradeenc">How can I create an SSL server which accepts strong encryption only, but allows
export browsers to upgrade to stronger encryption?</a></li>
<li><a href="#strongurl">How can I create an SSL server which accepts all types of ciphers in general, but 
requires a strong cipher for access to a particular URL?</a></li>
</ul>

<h3><a name="realssl" id="realssl">How can I create a real SSLv2-only server?</a></h3>

    <p>The following creates an SSL server which speaks only the SSLv2 protocol and
    its ciphers.</p>

    <div class="example"><h3>httpd.conf</h3><p><code>
      SSLProtocol -all +SSLv2<br />
      SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP<br />
    </code></p></div>


<h3><a name="onlystrong" id="onlystrong">How can I create an SSL server which accepts strong encryption
only?</a></h3>

    <p>The following enables only the seven strongest ciphers:</p>
    <div class="example"><h3>httpd.conf</h3><p><code>
      SSLProtocol all<br />
      SSLCipherSuite HIGH:MEDIUM<br />
    </code></p></div>


<h3><a name="upgradeenc" id="upgradeenc">How can I create an SSL server which accepts strong encryption
only, but allows export browsers to upgrade to stronger encryption?</a></h3>

    <p>This facility is called Server Gated Cryptography (SGC) and requires 
    a Global ID server certificate, signed by a special CA certificate 
    from Verisign. This enables strong encryption in 'export' versions of 
    browsers, which traditionally could not support it (because of US export 
    restrictions).</p>
    <p>When a browser connects with an export cipher, the server sends its Global
    ID certificate. The browser verifies this, and can then upgrade its
    cipher suite before any HTTP communication takes place. The problem 
    lies in allowing browsers to upgrade in this fashion, but still requiring
    strong encryption. In other words, we want browsers to either start a 
    connection with strong encryption, or to start with export ciphers but 
    upgrade to strong encryption before beginning HTTP communication.</p>
    <p>This can be done as follows:</p>
    <div class="example"><h3>httpd.conf</h3><p><code>
      # allow all ciphers for the initial handshake,<br />
      # so export browsers can upgrade via SGC facility<br />
      SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<br />
      <br />
      &lt;Directory /usr/local/apache2/htdocs&gt;<br />
      # but finally deny all browsers which haven't upgraded<br />
      SSLRequire %{SSL_CIPHER_USEKEYSIZE} &gt;= 128<br />
      &lt;/Directory&gt;
    </code></p></div>


<h3><a name="strongurl" id="strongurl">How can I create an SSL server which accepts all types of ciphers
in general, but requires a strong ciphers for access to a particular
URL?</a></h3>

    <p>Obviously, a server-wide <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> which restricts 
    ciphers to the strong variants, isn't the answer here. However, 
    <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> can be reconfigured within <code>Location</code>
    blocks, to give a per-directory solution, and can automatically force
    a renegotiation of the SSL parameters to meet the new configuration.
    This can be done as follows:</p>
    <div class="example"><p><code>
      # be liberal in general<br />
      SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<br />
      <br />
      &lt;Location /strong/area&gt;<br />
      # but https://hostname/strong/area/ and below<br />
      # requires strong ciphers<br />
      SSLCipherSuite HIGH:MEDIUM<br />
      &lt;/Location&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="accesscontrol" id="accesscontrol">Client Authentication and Access Control</a></h2>

<ul>
<li><a href="#allclients">How can I force clients to authenticate using certificates?</a></li>
<li><a href="#arbitraryclients">How can I force clients to authenticate using certificates for a 
        particular URL, but still allow arbitrary clients to access the rest of the server?</a></li>
<li><a href="#certauthenticate">How can I allow only clients who have certificates to access a
        particular URL, but allow all clients to access the rest of the server?</a></li>
<li><a href="#intranet">How can I require HTTPS with strong ciphers, and either
basic authentication or client certificates, for access to part of the
Intranet website, for clients coming from the Internet?</a></li>
</ul>

<h3><a name="allclients" id="allclients">How can I force clients to authenticate using certificates?</a></h3>


    <p>When you know all of your users (eg, as is often the case on a corporate
    Intranet), you can require plain certificate authentication. All you
    need to do is to create client certificates signed by your own CA
    certificate (<code>ca.crt</code>) and then verify the clients against this
    certificate.</p>
    <div class="example"><h3>httpd.conf</h3><p><code>
      # require a client certificate which has to be directly<br />
      # signed by our CA certificate in ca.crt<br />
      SSLVerifyClient require<br />
      SSLVerifyDepth 1<br />
      SSLCACertificateFile conf/ssl.crt/ca.crt
    </code></p></div>


<h3><a name="arbitraryclients" id="arbitraryclients">How can I force clients to authenticate using certificates for a
	particular URL, but still allow arbitrary clients to access the rest of the server?</a></h3>


<p>To force clients to authenticate using certificates for a particular URL,
	you can use the per-directory reconfiguration features of <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>:</p>

    <div class="example"><h3>httpd.conf</h3><p><code>
    SSLVerifyClient none<br />
    SSLCACertificateFile conf/ssl.crt/ca.crt<br />
    <br />
    &lt;Location /secure/area&gt;<br />
    SSLVerifyClient require<br />
    SSLVerifyDepth 1<br />
    &lt;/Location&gt;<br />
    </code></p></div>


<h3><a name="certauthenticate" id="certauthenticate">How can I allow only clients who have certificates to access a
	particular URL, but allow all clients to access the rest of the server?</a></h3>


    <p>The key to doing this is checking that part of the client certificate
    matches what you expect. Usually this means checking all or part of the
    Distinguished Name (DN), to see if it contains some known string.
    There are two ways to do this, using either <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> or
    <code class="directive"><a href="../mod/mod_ssl.html#sslrequire">SSLRequire</a></code>.</p> 
    
    <p>The <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> method is generally required when
    the certificates are completely arbitrary, or when their DNs have
    no common fields (usually the organisation, etc.). In this case,
    you should establish a password database containing <em>all</em>
    clients allowed, as follows:</p>
    
    <div class="example"><h3>httpd.conf</h3><pre>
SSLVerifyClient      none
&lt;Directory /usr/local/apache2/htdocs/secure/area&gt;

SSLVerifyClient      require
SSLVerifyDepth       5
SSLCACertificateFile conf/ssl.crt/ca.crt
SSLCACertificatePath conf/ssl.crt
SSLOptions           +FakeBasicAuth
SSLRequireSSL
AuthName             "Snake Oil Authentication"
AuthType             Basic
AuthBasicProvider    file
AuthUserFile         /usr/local/apache2/conf/httpd.passwd
Require              valid-user
&lt;/Directory&gt;</pre></div>
    
    <p>The password used in this example is the DES encrypted string "password".
    See the <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code> docs for more 
    information.</p>
    
    <div class="example"><h3>httpd.passwd</h3><pre>
/C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA
/C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA
/C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA</pre></div>

    <p>When your clients are all part of a common hierarchy, which is encoded
    into the DN, you can match them more easily using <code class="directive"><a href="../mod/mod_ssl.html#sslrequire">SSLRequire</a></code>, as follows:</p>


    <div class="example"><h3>httpd.conf</h3><pre>
SSLVerifyClient      none
&lt;Directory /usr/local/apache2/htdocs/secure/area&gt;

  SSLVerifyClient      require
  SSLVerifyDepth       5
  SSLCACertificateFile conf/ssl.crt/ca.crt
  SSLCACertificatePath conf/ssl.crt
  SSLOptions           +FakeBasicAuth
  SSLRequireSSL
  SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
               and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
&lt;/Directory&gt;</pre></div>


<h3><a name="intranet" id="intranet">How can I require HTTPS with strong ciphers, and either basic
authentication or client certificates, for access to part of the
Intranet website, for clients coming from the Internet? I still want to allow
plain HTTP access for clients on the Intranet.</a></h3>

   
   <p>These examples presume that clients on the Intranet have IPs in the range 
   192.168.1.0/24, and that the part of the Intranet website you want to allow
   internet access to is <code>/usr/local/apache2/htdocs/subarea</code>. 
   This configuration should remain outside of your HTTPS virtual host, so
   that it applies to both HTTPS and HTTP.</p>

    <div class="example"><h3>httpd.conf</h3><pre>
SSLCACertificateFile conf/ssl.crt/company-ca.crt

&lt;Directory /usr/local/apache2/htdocs&gt;
#   Outside the subarea only Intranet access is granted
Order                deny,allow
Deny                 from all
Allow                from 192.168.1.0/24
&lt;/Directory&gt;

&lt;Directory /usr/local/apache2/htdocs/subarea&gt;
#   Inside the subarea any Intranet access is allowed
#   but from the Internet only HTTPS + Strong-Cipher + Password
#   or the alternative HTTPS + Strong-Cipher + Client-Certificate

#   If HTTPS is used, make sure a strong cipher is used.
#   Additionally allow client certs as alternative to basic auth.
SSLVerifyClient      optional
SSLVerifyDepth       1
SSLOptions           +FakeBasicAuth +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} &gt;= 128

#   Force clients from the Internet to use HTTPS
RewriteEngine        on
RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
RewriteCond          %{HTTPS} !=on
RewriteRule          .* - [F]

#   Allow Network Access and/or Basic Auth
Satisfy              any

#   Network Access Control
Order                deny,allow
Deny                 from all
Allow                192.168.1.0/24

#   HTTP Basic Authentication
AuthType             basic
AuthName             "Protected Intranet Area"
AuthBasicProvider    file
AuthUserFile         conf/protected.passwd
Require              valid-user
&lt;/Directory&gt;</pre></div>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                              ssl/ssl_intro.html                                                                                  100644       0       0       101203 11256641270  11751  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>SSL/TLS Strong Encryption: An Introduction - Apache HTTP Server</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../index.html">Version 2.2</a> &gt; <a href="./index.html">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>SSL/TLS Strong Encryption: An Introduction</h1>


<blockquote>
<p>The nice thing about standards is that there are so many to choose
from. And if you really don't like all the standards you just have to
wait another year until the one arises you are looking for.</p>

<p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to
Computer Networks"</p>
</blockquote>

<p>As an introduction this chapter is aimed at readers who are familiar
with the Web, HTTP, and Apache, but are not security experts. It is not
intended to be a definitive guide to the SSL protocol, nor does it discuss
specific techniques for managing certificates in an organization, or the
important legal issues of patents and import and export restrictions.
Rather, it is intended to provide a common background to <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> users by pulling together various concepts, definitions, 
and examples as a starting point for further exploration.</p>

<p>The presented content is mainly derived, with the author's permission,
from the article <a href="http://home.comcast.net/~fjhirsch/Papers/wwwj/">Introducing
SSL and Certificates using SSLeay</a> by <a href="http://home.comcast.net/~fjhirsch/">Frederick J. Hirsch</a>, of The
Open Group Research Institute, which was published in <a href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of
Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997.
Please send any positive feedback to <a href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> (the original
article author) and all negative feedback to <a href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> (the
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> author).</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#cryptographictech">Cryptographic Techniques</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#certificates">Certificates</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ssl">Secure Sockets Layer (SSL)</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#references">References</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cryptographictech" id="cryptographictech">Cryptographic Techniques</a></h2>

<p>Understanding SSL requires an understanding of cryptographic
algorithms, message digest functions (aka. one-way or hash functions), and
digital signatures. These techniques are the subject of entire books (see
for instance [<a href="#AC96">AC96</a>]) and provide the basis for privacy,
integrity, and authentication.</p>

<h3><a name="cryptographicalgo" id="cryptographicalgo">Cryptographic Algorithms</a></h3>

    <p>Suppose Alice wants to send a message to her bank to transfer some
    money. Alice would like the message to be private, since it will
    include information such as her account number and transfer amount. One
    solution is to use a cryptographic algorithm, a technique that would
    transform her message into an encrypted form, unreadable until it is
    decrypted. Once in this form, the message can only be
    decrypted by using a secret key. Without the key the message is useless: 
    good cryptographic algorithms make it so difficult
    for intruders to decode the original text that it isn't worth their
    effort.</p>

    <p>There are two categories of cryptographic algorithms: conventional
    and public key.</p>

    <dl>
    <dt>Conventional cryptography</dt>
    <dd>also known as symmetric cryptography, requires the sender and
    receiver to share a key: a secret piece of information that may be
    used to encrypt or decrypt a message. As long as this key is kept 
    secret, nobody other than the sender or recipient can read the message. 
    If Alice and the bank know a secret key, then they can send each other
    private messages. The task of sharing a key between sender and recipient
    before communicating, while also keeping it secret from others, can be 
    problematic.</dd>

    <dt>Public key cryptography</dt>
    <dd>also known as asymmetric cryptography, solves the key exchange
    problem by defining an algorithm which uses two keys, each of which
    may be used to encrypt a message. If one key is used to encrypt a
    message then the other must be used to decrypt it. This makes it
    possible to receive secure messages by simply publishing one key
    (the public key) and keeping the other secret (the private key).</dd>
    </dl>

    <p>Anyone can encrypt a message using the public key, but only the
    owner of the private key will be able to read it. In this way, Alice
    can send private messages to the owner of a key-pair (the bank), by
    encrypting them using their public key. Only the bank will be able to
    decrypt them.</p>


<h3><a name="messagedigests" id="messagedigests">Message Digests</a></h3>

    <p>Although Alice may encrypt her message to make it private, there
    is still a concern that someone might modify her original message or
    substitute it with a different one, in order to transfer the money
    to themselves, for instance. One way of guaranteeing the integrity
    of Alice's message is for her to create a concise summary of her 
    message and send this to the bank as well. Upon receipt of the message, 
    the bank creates its own summary and compares it with the one Alice 
    sent. If the summaries are the same then the message has been received
    intact.</p>

    <p>A summary such as this is called a <dfn>message digest</dfn>, <em>one-way
    function</em> or <em>hash function</em>. Message digests are used to create
    a short, fixed-length representation of a longer, variable-length message.
    Digest algorithms are designed to produce a unique digest for each
    message. Message digests are designed to make it impractically difficult 
    to determine the message from the digest and (in theory) impossible to 
    find two different messages which create the same digest -- thus 
    eliminating the possibility of substituting one message for another while 
    maintaining the same digest.</p>

    <p>Another challenge that Alice faces is finding a way to send the digest
    to the bank securely; if the digest is not sent securely, its integrity may
    be compromised and with it the possibility for the bank to determine the
    integrity of the original message. Only if the digest is sent securely can
    the integrity of the associated message be determined.</p>
    
    <p>One way to send the digest securely is to include it in a digital 
    signature.</p>


<h3><a name="digitalsignatures" id="digitalsignatures">Digital Signatures</a></h3>
<p>When Alice sends a message to the bank, the bank needs to ensure that the
message is really from her, so an intruder cannot request a transaction
involving her account. A <em>digital signature</em>, created by Alice and
included with the message, serves this purpose.</p>

<p>Digital signatures are created by encrypting a digest of the message and
other information (such as a sequence number) with the sender's private key.
Though anyone can <em>decrypt</em> the signature using the public key, only the
sender knows the private key. This means that only the sender can have signed
the message. Including the digest in the signature means the signature is only
good for that message; it also ensures the integrity of the message since no one
can change the digest and still sign it.</p>
<p>To guard against interception and reuse of the signature by an intruder at a
later date, the signature contains a unique sequence number. This protects
the bank from a fraudulent claim from Alice that she did not send the message
-- only she could have signed it (non-repudiation).</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="certificates" id="certificates">Certificates</a></h2>

<p>Although Alice could have sent a private message to the bank, signed
it and ensured the integrity of the message, she still needs to be sure
that she is really communicating with the bank. This means that she needs
to be sure that the public key she is using is part of the bank's key-pair, 
and not an intruder's. Similarly, the bank needs to verify that the message
signature really was signed by the private key that belongs to Alice.</p>

<p>If each party has a certificate which validates the other's identity,
confirms the public key and is signed by a trusted agency, then both
can be assured that they are communicating with whom they think they are.
Such a trusted agency is called a <em>Certificate Authority</em> and
certificates are used for authentication.</p>

<h3><a name="certificatecontents" id="certificatecontents">Certificate Contents</a></h3>

    <p>A certificate associates a public key with the real identity of
    an individual, server, or other entity, known as the subject. As
    shown in <a href="#table1">Table 1</a>, information about the subject
    includes identifying information (the distinguished name) and the
    public key. It also includes the identification and signature of the
    Certificate Authority that issued the certificate and the period of
    time during which the certificate is valid. It may have additional
    information (or extensions) as well as administrative information
    for the Certificate Authority's use, such as a serial number.</p>

    <h4><a name="table1" id="table1">Table 1: Certificate Information</a></h4>
    
    <table>
    
    <tr><th>Subject</th>
        <td>Distinguished Name, Public Key</td></tr>
    <tr><th>Issuer</th>
        <td>Distinguished Name, Signature</td></tr>
    <tr><th>Period of Validity</th>
        <td>Not Before Date, Not After Date</td></tr>
    <tr><th>Administrative Information</th>
        <td>Version, Serial Number</td></tr>
    <tr><th>Extended Information</th>
        <td>Basic Constraints, Netscape Flags, etc.</td></tr>
    </table>
    

    <p>A distinguished name is used to provide an identity in a specific
    context -- for instance, an individual might have a personal
    certificate as well as one for their identity as an employee.
    Distinguished names are defined by the X.509 standard [<a href="#X509">X509</a>], which defines the fields, field names and
    abbreviations used to refer to the fields (see <a href="#table2">Table
    2</a>).</p>

    <h4><a name="table2" id="table2">Table 2: Distinguished Name Information</a></h4>
    
    <table class="bordered">
    
    <tr><th>DN Field</th>
        <th>Abbrev.</th>
        <th>Description</th>
        <th>Example</th></tr>
    <tr><td>Common Name</td>
        <td>CN</td>
        <td>Name being certified</td>
        <td>CN=Joe Average</td></tr>
    <tr><td>Organization or Company</td>
        <td>O</td>
        <td>Name is associated with this<br />organization</td>
        <td>O=Snake Oil, Ltd.</td></tr>
    <tr><td>Organizational Unit</td>
        <td>OU</td>
        <td>Name is associated with this <br />organization unit, such
        as a department</td>
        <td>OU=Research Institute</td></tr>
    <tr><td>City/Locality</td>
        <td>L</td>
        <td>Name is located in this City</td>
        <td>L=Snake City</td></tr>
    <tr><td>State/Province</td>
        <td>ST</td>
        <td>Name is located in this State/Province</td>
        <td>ST=Desert</td></tr>
    <tr><td>Country</td>
        <td>C</td>
        <td>Name is located in this Country (ISO code)</td>
        <td>C=XZ</td></tr>
    </table>
    

    <p>A Certificate Authority may define a policy specifying which
    distinguished field names are optional and which are required. It
    may also place requirements upon the field contents, as may users of
    certificates. For example, a Netscape browser requires that the
    Common Name for a certificate representing a server matches a wildcard 
    pattern for the domain name of that server, such
    as <code>*.snakeoil.com</code>.</p>

    <p>The binary format of a certificate is defined using the ASN.1
    notation [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>]. This
    notation defines how to specify the contents and encoding rules
    define how this information is translated into binary form. The binary
    encoding of the certificate is defined using Distinguished Encoding
    Rules (DER), which are based on the more general Basic Encoding Rules
    (BER). For those transmissions which cannot handle binary, the binary
    form may be translated into an ASCII form by using Base64 encoding
    [<a href="#MIME">MIME</a>]. When placed between begin and end delimiter
    lines (as below), this encoded version is called a PEM ("Privacy Enhanced
    Mail") encoded certificate.</p>

    <div class="example"><h3>Example of a PEM-encoded certificate (snakeoil.crt)</h3><pre>-----BEGIN CERTIFICATE-----
MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx
FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG
A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv
cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz
bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL
MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h
a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl
cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN
AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b
vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa
lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV
HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB
gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt
2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7
dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==
-----END CERTIFICATE-----</pre></div>


<h3><a name="certificateauthorities" id="certificateauthorities">Certificate Authorities</a></h3>

    <p>By verifying the information in a certificate request
    before granting the certificate, the Certificate Authority assures
    itself of the identity of the private key owner of a key-pair. 
    For instance, if Alice requests a personal certificate, the 
    Certificate Authority must first make sure that Alice really is the 
    person the certificate request claims she is.</p>

    <h4><a name="certificatechains" id="certificatechains">Certificate Chains</a></h4>
    
        <p>A Certificate Authority may also issue a certificate for
        another Certificate Authority. When examining a certificate,
        Alice may need to examine the certificate of the issuer, for each
        parent Certificate Authority, until reaching one which she has
        confidence in. She may decide to trust only certificates with a
        limited chain of issuers, to reduce her risk of a "bad" certificate
        in the chain.</p>
    

    <h4><a name="rootlevelca" id="rootlevelca">Creating a Root-Level CA</a></h4>
    
        <p>As noted earlier, each certificate requires an issuer to assert
        the validity of the identity of the certificate subject, up to
        the top-level Certificate Authority (CA). This presents a problem:
        who can vouch for the certificate of the top-level
        authority, which has no issuer? In this unique case, the
        certificate is "self-signed", so the issuer of the certificate is
        the same as the subject. Browsers are preconfigured to trust well-known
        certificate authorities, but it is important to exercise extra care in
        trusting a self-signed certificate. The wide publication of a
        public key by the root authority reduces the risk in trusting this
        key -- it would be obvious if someone else publicized a key
        claiming to be the authority.</p>

        <p>A number of companies, such as <a href="http://www.thawte.com/">Thawte</a> and <a href="http://www.verisign.com/">VeriSign</a>
        have established themselves as Certificate Authorities. These
        companies provide the following services:</p>

        <ul>
        <li>Verifying certificate requests</li>
        <li>Processing certificate requests</li>
        <li>Issuing and managing certificates</li>
        </ul>

        <p>It is also possible to create your own Certificate Authority.
        Although risky in the Internet environment, it may be useful
        within an Intranet where the organization can easily verify the
        identities of individuals and servers.</p>
    

    <h4><a name="certificatemanagement" id="certificatemanagement">Certificate Management</a></h4>
    
        <p>Establishing a Certificate Authority is a responsibility which
        requires a solid administrative, technical and management
        framework. Certificate Authorities not only issue certificates,
        they also manage them -- that is, they determine for how long
        certificates remain valid, they renew them and keep lists of
        certificates that were issued in the past but are no longer valid
	    (Certificate Revocation Lists, or CRLs).</p> 

        <p>For example, if Alice is entitled to a certificate as an 
        employee of a company but has now left
        that company, her certificate may need to be revoked.
        Because certificates are only issued after the subject's identity has
        been verified and can then be passed around to all those with whom 
        the subject may communicate, it is impossible to tell from the 
        certificate alone that it has been revoked. 
        Therefore when examining certificates for validity 
        it is necessary to contact the issuing Certificate Authority to 
        check CRLs -- this is usually not an automated part of the process.</p>

        <div class="note"><h3>Note</h3>
        <p>If you use a Certificate Authority that browsers are not configured
        to trust by default, it is necessary to load the Certificate
        Authority certificate into the browser, enabling the browser to
        validate server certificates signed by that Certificate Authority.
        Doing so may be dangerous, since once loaded, the browser will
        accept all certificates signed by that Certificate Authority.</p>
        </div>
    


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ssl" id="ssl">Secure Sockets Layer (SSL)</a></h2>

<p>The Secure Sockets Layer protocol is a protocol layer which may be
placed between a reliable connection-oriented network layer protocol
(e.g. TCP/IP) and the application protocol layer (e.g. HTTP). SSL provides
for secure communication between client and server by allowing mutual
authentication, the use of digital signatures for integrity and encryption
for privacy.</p>

<p>The protocol is designed to support a range of choices for specific
algorithms used for cryptography, digests and signatures. This allows
algorithm selection for specific servers to be made based on legal, export
or other concerns and also enables the protocol to take advantage of new
algorithms. Choices are negotiated between client and server when
establishing a protocol session.</p>

<h3><a name="table4" id="table4">Table 4: Versions of the SSL protocol</a></h3>

    <table class="bordered">
    
    <tr><th>Version</th>
        <th>Source</th>
        <th>Description</th>
        <th>Browser Support</th></tr>
    <tr><td>SSL v2.0</td>
        <td>Vendor Standard (from Netscape Corp.) [<a href="#SSL2">SSL2</a>]</td>
        <td>First SSL protocol for which implementations exist</td>
        <td>- NS Navigator 1.x/2.x<br />
        - MS IE 3.x<br />
        - Lynx/2.8+OpenSSL</td></tr>
    <tr><td>SSL v3.0</td>
        <td>Expired Internet Draft (from Netscape Corp.) [<a href="#SSL3">SSL3</a>]</td>
        <td>Revisions to prevent specific security attacks, add non-RSA
        ciphers and support for certificate chains</td>
        <td>- NS Navigator 2.x/3.x/4.x<br />
        - MS IE 3.x/4.x<br />
        - Lynx/2.8+OpenSSL</td></tr>
    <tr><td>TLS v1.0</td>
        <td>Proposed Internet Standard (from IETF) [<a href="#TLS1">TLS1</a>]</td>
        <td>Revision of SSL 3.0 to update the MAC layer to HMAC, add block
        padding for block ciphers, message order standardization and more
        alert messages.</td>
        <td>- Lynx/2.8+OpenSSL</td></tr>
    </table>


<p>There are a number of versions of the SSL protocol, as shown in 
<a href="#table4">Table 4</a>. As noted there, one of the benefits in
SSL 3.0 is that it adds support of certificate chain loading. This feature
allows a server to pass a server certificate along with issuer certificates
to the browser. Chain loading also permits the browser to validate the
server certificate, even if Certificate Authority certificates are not
installed for the intermediate issuers, since they are included in the
certificate chain. SSL 3.0 is the basis for the Transport Layer Security 
[<a href="#TLS1">TLS</a>] protocol standard, currently in development by
the Internet Engineering Task Force (IETF).</p>

<h3><a name="session" id="session">Establishing a Session</a></h3>

    <p>The SSL session is established by following a handshake sequence
    between client and server, as shown in <a href="#figure1">Figure 1</a>. This sequence may vary, depending on whether the server
    is configured to provide a server certificate or request a client
    certificate. Although cases exist where additional handshake steps
    are required for management of cipher information, this article
    summarizes one common scenario. See the SSL specification for the full
    range of possibilities.</p>

    <div class="note"><h3>Note</h3>
    <p>Once an SSL session has been established, it may be reused. This
    avoids the performance penalty of repeating the many steps needed
    to start a session. To do this, the server assigns each SSL session a
    unique session identifier which is cached in the server and which the
    client can use in future connections to reduce the handshake time
    (until the session identifer expires from the cache of the server).</p>
    </div>

    <p class="figure">
    <img src="../images/ssl_intro_fig1.gif" alt="" width="423" height="327" /><br />
    <a id="figure1" name="figure1"><dfn>Figure 1</dfn></a>: Simplified SSL
    Handshake Sequence</p>

    <p>The elements of the handshake sequence, as used by the client and
    server, are listed below:</p>

    <ol>
    <li>Negotiate the Cipher Suite to be used during data transfer</li>
    <li>Establish and share a session key between client and server</li>
    <li>Optionally authenticate the server to the client</li>
    <li>Optionally authenticate the client to the server</li>
    </ol>

    <p>The first step, Cipher Suite Negotiation, allows the client and
    server to choose a Cipher Suite supported by both of them. The SSL3.0
    protocol specification defines 31 Cipher Suites. A Cipher Suite is
    defined by the following components:</p>

    <ul>
    <li>Key Exchange Method</li>
    <li>Cipher for Data Transfer</li>
    <li>Message Digest for creating the Message Authentication Code (MAC)</li>
    </ul>

    <p>These three elements are described in the sections that follow.</p>


<h3><a name="keyexchange" id="keyexchange">Key Exchange Method</a></h3>

    <p>The key exchange method defines how the shared secret symmetric
    cryptography key used for application data transfer will be agreed
    upon by client and server. SSL 2.0 uses RSA key exchange only, while
    SSL 3.0 supports a choice of key exchange algorithms including
    RSA key exchange (when certificates are used), and Diffie-Hellman key
    exchange (for exchanging keys without certificates, or without prior
    communication between client and server).</p>

    <p>One variable in the choice of key exchange methods is digital
    signatures -- whether or not to use them, and if so, what kind of
    signatures to use. Signing with a private key provides protection 
    against a man-in-the-middle-attack during the information exchange
    used to generating the shared key [<a href="#AC96">AC96</a>, p516].</p>


<h3><a name="ciphertransfer" id="ciphertransfer">Cipher for Data Transfer</a></h3>

    <p>SSL uses conventional symmetric cryptography, as described earlier, 
    for encrypting messages in a session.
    There are nine choices of how to encrypt, including the option not to
    encrypt:</p>

    <ul>
    <li>No encryption</li>
    <li>Stream Ciphers
        <ul>
        <li>RC4 with 40-bit keys</li>
        <li>RC4 with 128-bit keys</li>
        </ul></li>
    <li>CBC Block Ciphers
        <ul><li>RC2 with 40 bit key</li>
        <li>DES with 40 bit key</li>
        <li>DES with 56 bit key</li>
        <li>Triple-DES with 168 bit key</li>
        <li>Idea (128 bit key)</li>
        <li>Fortezza (96 bit key)</li>
        </ul></li>
    </ul>

    <p>"CBC" refers to Cipher Block Chaining, which means that a
    portion of the previously encrypted cipher text is used in the
    encryption of the current block. "DES" refers to the Data Encryption
    Standard [<a href="#AC96">AC96</a>, ch12], which has a number of
    variants (including DES40 and 3DES_EDE). "Idea" is currently one of 
    the best and cryptographically strongest algorithms available, 
    and "RC2" is a proprietary algorithm from RSA DSI [<a href="#AC96">AC96</a>, ch13].</p>


<h3><a name="digestfuntion" id="digestfuntion">Digest Function</a></h3>

    <p>The choice of digest function determines how a digest is created
    from a record unit. SSL supports the following:</p>

    <ul>
    <li>No digest (Null choice)</li>
    <li>MD5, a 128-bit hash</li>
    <li>Secure Hash Algorithm (SHA-1), a 160-bit hash</li>
    </ul>

    <p>The message digest is used to create a Message Authentication Code
    (MAC) which is encrypted with the message to verify integrity and to
    protect against replay attacks.</p>


<h3><a name="handshake" id="handshake">Handshake Sequence Protocol</a></h3>

    <p>The handshake sequence uses three protocols:</p>

    <ul>
    <li>The <dfn>SSL Handshake Protocol</dfn>
    for performing the client and server SSL session establishment.</li>
    <li>The <dfn>SSL Change Cipher Spec Protocol</dfn> for actually
    establishing agreement on the Cipher Suite for the session.</li>
    <li>The <dfn>SSL Alert Protocol</dfn> for conveying SSL error
    messages between client and server.</li>
    </ul>

    <p>These protocols, as well as application protocol data, are
    encapsulated in the <dfn>SSL Record Protocol</dfn>, as shown in
    <a href="#figure2">Figure 2</a>. An encapsulated protocol is
    transferred as data by the lower layer protocol, which does not
    examine the data. The encapsulated protocol has no knowledge of the
    underlying protocol.</p>

    <p class="figure">
    <img src="../images/ssl_intro_fig2.gif" alt="" width="428" height="217" /><br />
    <a id="figure2" name="figure2"><dfn>Figure 2</dfn></a>: SSL Protocol Stack
    </p>

    <p>The encapsulation of SSL control protocols by the record protocol
    means that if an active session is renegotiated the control protocols
    will be transmitted securely. If there was no previous session,    
    the Null cipher suite is used, which means there will be no encryption and
    messages will have no integrity digests, until the session has been
    established.</p>


<h3><a name="datatransfer" id="datatransfer">Data Transfer</a></h3>

    <p>The SSL Record Protocol, shown in <a href="#figure3">Figure 3</a>,
    is used to transfer application and SSL Control data between the
    client and server, where necessary fragmenting this data into smaller units,
    or combining multiple higher level protocol data messages into single
    units. It may compress, attach digest signatures, and encrypt these
    units before transmitting them using the underlying reliable transport
    protocol (Note: currently, no major SSL implementations include support
    for compression).</p>

    <p class="figure">
    <img src="../images/ssl_intro_fig3.gif" alt="" width="423" height="323" /><br />
    <a id="figure3" name="figure3"><dfn>Figure 3</dfn></a>: SSL Record Protocol
    </p>


<h3><a name="securehttp" id="securehttp">Securing HTTP Communication</a></h3>

    <p>One common use of SSL is to secure Web HTTP communication between
    a browser and a webserver. This does not preclude the use of
    non-secured HTTP - the secure version (called HTTPS) is the same as 
    plain HTTP over SSL, but uses the URL scheme <code>https</code> 
    rather than <code>http</code>, and a different server port (by default,
    port 443). This functionality is a large part of what <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> provides for the Apache webserver.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="references" id="references">References</a></h2>

<dl>
<dt><a id="AC96" name="AC96">[AC96]</a></dt>
<dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley,
1996. See <a href="http://www.counterpane.com/">http://www.counterpane.com/</a> for various other materials by Bruce
Schneier.</dd>

<dt><a id="X208" name="X208">[X208]</a></dt>
<dd>ITU-T Recommendation X.208, <q>Specification of Abstract Syntax Notation
One (ASN.1)</q>, 1988. See for instance <a href="http://www.itu.int/rec/recommendation.asp?type=items&amp;lang=e&amp;parent=T-REC-X.208-198811-I">http://www.itu.int/rec/recommendation.asp?type=items&amp;lang=e&amp;parent=T-REC-X.208-198811-I</a>.
</dd>

<dt><a id="X509" name="X509">[X509]</a></dt>
<dd>ITU-T Recommendation X.509, <q>The Directory - Authentication
Framework</q>. See for instance <a href="http://www.itu.int/rec/recommendation.asp?type=folders&amp;lang=e&amp;parent=T-REC-X.509">http://www.itu.int/rec/recommendation.asp?type=folders&amp;lang=e&amp;parent=T-REC-X.509</a>.
</dd>

<dt><a id="PKCS" name="PKCS">[PKCS]</a></dt>
<dd><q>Public Key Cryptography Standards (PKCS)</q>, 
RSA Laboratories Technical Notes, See <a href="http://www.rsasecurity.com/rsalabs/pkcs/">http://www.rsasecurity.com/rsalabs/pkcs/</a>.</dd>

<dt><a id="MIME" name="MIME">[MIME]</a></dt>
<dd>N. Freed, N. Borenstein, <q>Multipurpose Internet Mail Extensions
(MIME) Part One: Format of Internet Message Bodies</q>, RFC2045.
See for instance <a href="http://ietf.org/rfc/rfc2045.txt">http://ietf.org/rfc/rfc2045.txt</a>.</dd>

<dt><a id="SSL2" name="SSL2">[SSL2]</a></dt>
<dd>Kipp E.B. Hickman, <q>The SSL Protocol</q>, 1995. See <a href="http://www.netscape.com/eng/security/SSL_2.html">http://www.netscape.com/eng/security/SSL_2.html</a>.</dd>

<dt><a id="SSL3" name="SSL3">[SSL3]</a></dt>
<dd>Alan O. Freier, Philip Karlton, Paul C. Kocher, <q>The SSL Protocol
Version 3.0</q>, 1996. See <a href="http://www.netscape.com/eng/ssl3/draft302.txt">http://www.netscape.com/eng/ssl3/draft302.txt</a>.</dd>

<dt><a id="TLS1" name="TLS1">[TLS1]</a></dt>
<dd>Tim Dierks, Christopher Allen, <q>The TLS Protocol Version 1.0</q>,
1999. See <a href="http://ietf.org/rfc/rfc2246.txt">http://ietf.org/rfc/rfc2246.txt</a>.</dd>
</dl>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/index.html">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                             stopping.html                                                                                       100644       0       0        37546 11256641270  11001  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Durdurma ve Yeniden Başlatma - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Durdurma ve Yeniden Başlatma</h1>


    <p>Bu belge Apache HTTPd’nin Unix benzeri sistemlerde durdurulması ve
      yeniden başlatılması konularını kapsar. Windows NT, 2000 ve XP
      kullanıcıları Apache HTTPd’yi bu platformlarda nasıl denetimlerine
      alacaklarını öğrenmek için <a href="platform/windows.html#winsvc">Apache
      HTTPd’nin Bir Hizmet Olarak Çalıştırılması</a> sayfasına, Windows 9x ve
      ME kullanıcıları ise <a href="platform/windows.html#wincons">Apache
      HTTPd’nin Bir Konsol Uygulaması Olarak Çalıştırılması</a> sayfasına
      bakabilirler.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Giriş</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#term">Hemen Durdur</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#graceful">Nazikçe Yeniden Başlat</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#hup">Hemen Yeniden Başlat</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#gracefulstop">Nazikçe Durdur</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li><li><a href="invoking.html">Başlatma</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Giriş</a></h2>

    <p>Apache HTTPd’yi durdurmak ve yeniden başlatmak için çalışan
      <code class="program"><a href="./programs/httpd.html">httpd</a></code> süreçlerine bir sinyal göndermeniz gerekir.
      Sinyal göndermek için iki yol vardır. İlki, süreçlere doğrudan sinyal
      göndermek için unix <code>kill</code> komutunun kullanımıdır. Bu
      suretle, sisteminizde çalışmakta olan bir çok <code class="program"><a href="./programs/httpd.html">httpd</a></code>
      sürecini uyarabilirsiniz ama süreç kimliği <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile belirtilen dosyada
      tutulan ana süreç dışında hiçbirine sinyal göndermemelisiniz. Başka
      bir deyişle, ana süreç haricinde hiçbir sürece sinyal göndermeye normal
      olarak ihtiyacınız olmaması gerekir. Ana sürece gönderebileceğiniz
      dört çeşit sinyal vardır:
      <code><a href="#term">TERM</a></code>,
      <code><a href="#graceful">USR1</a></code>,
      <code><a href="#hup">HUP</a></code> ve
      <code><a href="#gracefulstop">WINCH</a></code>. Bunlar yeri geldikçe
      açıklanacaktır.</p>

    <p>Ana sürece <code>kill</code> ile sinyal göndermek için şöyle bir
      komut verebilirsiniz:</p>

    <div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>

    <p><code class="program"><a href="./programs/httpd.html">httpd</a></code> süreçlerine sinyal göndermenin ikinci yolu
      <code>-k</code> komut satırı seçeneğini şu değerlerden biri ile
      kullanmaktır: <code>stop</code>, <code>restart</code>,
      <code>graceful</code> ve <code>graceful-stop</code>. Bunlar aşağıda
      açıklanacaktır. <code>-k</code> komut satırı seçeneği
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye ait olsa da ana sürece bu sinyalleri
      göndermek için <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> betiğini kullanmanızı
      öneririz. <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>, komut satırı seçeneklerini
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye aktaracaktır.</p>

    <p><code class="program"><a href="./programs/httpd.html">httpd</a></code>’ye sinyal gönderdikten sonra olup biteni şu
      komutla izleyebilirsiniz:</p>

    <div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>

    <p>Bu örnekleri, kendi <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> ve
      <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergelerinizdeki
      ayarlara uygun olarak değiştirdikten sonra kullanınız.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="term" id="term">Hemen Durdur</a></h2>

  <dl><dt>Sinyal: TERM</dt>
    <dd><code>apachectl -k stop</code></dd>
  </dl>

    <p>Ana sürece <code>TERM</code> veya <code>stop</code> sinyali
      göndererek tüm çocukların bir an önce öldürülmeye çalışılmasını sağlamış
      olursunuz. Tüm çocukların öldürülmesi bir kaç saniye sürebilir. Son
      olarak ana süreç çıkacaktır. Yanıtlanmakta olan istekler hemen
      sonlandırılacak ve artık isteklere yanıt verilmeyecektir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="graceful" id="graceful">Nazikçe Yeniden Başlat</a></h2>

  <dl><dt>Sinyal: USR1</dt>
    <dd><code>apachectl -k graceful</code></dd>
  </dl>

    <p>Ana sürece <code>USR1</code> veya <code>graceful</code> sinyalinin
      gönderilmesi, çocuklara ellerindeki mevcut işleri bitirdikten sonra
      (veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesi</em>
      demektir. Ana süreç kendi yapılandırma dosyalarını yeniden okur ve
      kendi günlük dosyalarını yeniden açar. Ana sürecin öldürdüğü her sürecin
      yerine yeni yapılandırma <em>kuşağından</em> bir süreç başlatır ve hemen
      yeni isteklere hizmet sunulmaya başlanır.</p>

    <p>Bu kod MPM’lerin süreçleri denetleyen yönergelerine daima uyacak
      şekilde tasarlanmıştır. Bu suretle, istemcilere hizmet sunacak çocuk
      süreçler ve evreler, yeniden başlatma işleminde de uygun sayıda
      sağlanmış olur. Bununla birlikte, <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> yönergesinde şöyle
      davranılır: İlk saniye içinde en azından <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> sayıda yeni çocuk
      oluşturulmamışsa iş olmayan bir devreyi geçiştirecek kadarı oluşturulur.
      Ardından sunucunun mevcut yükünü karşılamak için gereken sayıda çocuk
      süreç oluşturulur. Bu suretle, kod her ikisi için de gereğini yerine
      getirmeye çalışmış olur.</p>

    <p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> kullanıcıları <code>USR1</code>
      gönderildiği zaman sunucu istatistiklerinin sıfırlanmadığı konusunda
      uyarılacaktır. Kod, sunucunun yeni isteklere yanıt veremediği zamanı en
      aza indirmenin yanısıra ayar parametrelerinize de uymak üzere
      tasarlanmıştır (yeni istekler işletim sistemi tarafından kuyruğa
      alınacağından bir istek kaybı olayı yaşanmaz). Bunu sağlamak için, her
      iki kuşağın çocuklarının izini sürecek bir <em>çetele</em> tutulur.</p>

    <p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> modülü, nazikçe yeniden başlat komutunun
      verilmesinden önce başlamış ve sunulmaya devam eden isteklere bakan
      çocukları imlemek için ayrıca bir <code>G</code> (Graceful’un baş harfi)
      kullanır.</p>

    <p>Günlük dosyası döndürme betiğine, yeniden başlatma öncesi günlüğe yazan
      tüm çocukların işini bitirdiğini <code>USR1</code> kullanarak
      bildirmenin bir yolu yoktur.  Önerimiz, eski günlük kaydı üzerinde bir
      işlem yapmaya başlamadan önce <code>USR1</code> sinyali gönderilmesinin
      ardından belli bir süre beklenilmesi olacaktır. Örneğin, düşük band
      genişliğine sahip istemcilere hizmet sunan çoğu sürecin işinin 10
      dakikadan önce bitmeyeceğini gözönüne alarak eski günlük üzerinde işlem
      yapmaya başlamak için 15 dakika beklenebilir.</p>

    <div class="note">Bir yeniden başlatma isteğinde, eğer yapılandırma dosyalarınızda bir
      hata varsa sunucu yeniden başlamaz ve bir hata ile çıkar. Nazikçe
      yeniden başlatma durumunda ana süreç çıkarken çocuklarını çalışır durumda
      bırakır. (Bunlar, ellerindeki istekler bitince ‘nazikçe çıkacak’ olan
      çocuk süreçlerdir.) Eğer sunucuyu yeniden başlatmaya çalışırsanız bu
      sorunlara yol açar; örneğin, dinleyeceği portları bağlayamayabilir. Bir
      yeniden başlatma öncesinde yapılandırma dosyalarınızın sözdizimini
      <code>-t</code> komut satırı seçeneği ile sınayabilirsiniz (bkz,
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>).  Ancak, bu hala sunucunuzun düzgünce yeniden
      başlatılmasını garanti etmeyecektir. Yapılandırma dosyalarınızı
      sözdizimi denetiminin yanında anlamlandırılması bakımından da sınamak
      için <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin root olmayan bir kullanıcı tarafından
      çalıştırılmasını deneyebilirsiniz. Eğer yapılandırma dosyalarında bir
      hata yoksa soketleri ve günlük dosyalarını açmaya çalışırken root
      aidiyetinde çalışmadığından veya çalışmakta olan asıl sunucu bu portları
      zaten dinlediğinden başarısız olacaktır. Eğer başka bir sebeple
      başarısız olursa olası sebep bir yapılandırma dosyası hatasıdır ve asıl
      sunucuya ‘nazikçe yeniden başla’ komutunu vermeden önce bu hatayı
      düzeltmeniz gerekir.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="hup" id="hup">Hemen Yeniden Başlat</a></h2>

  <dl><dt>Sinyal: HUP</dt>
    <dd><code>apachectl -k restart</code></dd>
  </dl>

    <p>Ana sürece <code>HUP</code> veya <code>restart</code> sinyalinin
      gönderilmesi tüm çocukların <code>TERM</code> sinyali gönderilmiş gibi
      öldürülmesine sebep olur fakat ana sürecin çıkmasını sağlamaz.
      Ana süreç yapılandırma dosyalarını yeniden okur ve günlük kayıt
      dosyalarını yeniden açar. Bunların ardından isteklere yanıt verecek yeni
      kuşak çocukları oluşturmaya başlar.</p>

    <p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> kullanıcıları bir <code>HUP</code> sinyali
      gönderildiğinde sunucu istatistiklerinin sıfırlandığı konusunda
      uyarılırlar.</p>

    <div class="note">Eğer yapılandırma dosyalarınızda sözdizimi hatası varsa yeniden
     başlatma işlemi gerçekleşmez ve ana süreç bir hata vererek çıkar.
     Bundan kaçınmak için önceki yönteme bakınız.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="gracefulstop" id="gracefulstop">Nazikçe Durdur</a></h2>

  <dl><dt>Sinyal: WINCH</dt>
    <dd><code>apachectl -k graceful-stop</code></dd>
  </dl>

    <p>Ana sürecin <code>WINCH</code> veya <code>graceful-stop</code>
      sinyalini alması, çocuklara ellerindeki mevcut işleri bitirdikten sonra
      (veya sundukları bir şey yoksa hemen) çıkmalarının <em>önerilmesine</em>
      sebep olur. Ebevey süreç bunun hemen <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> dosyasını siler ve port
      dinlemeyi keser. Ana süreç çalışmaya ve isteklere yanıt vermekte olan
      çocuk süreçleri izlemeye devam eder. Tüm çocuklar işlerini bitirip
      çıktığında veya <code class="directive"><a href="./mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code> ile belirtilen
      zaman aşımı dolduğunda ana süreç de kendini sonlandırır. Eğer zaman aşımı
      devreye girmişse o an calışmakta olan çocuk süreçlere <code>TERM</code>
      sinyali gönderilerek hemen çıkmaları sağlanır.</p>

    <p>Bir <code>TERM</code> sinyali ile "graceful" durumundaki tüm çocuklar
      ve ana süreç hemen sonlandırılacaktır. Bununla birlikte, <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> dosyası da silineceğinden, artık
      <code>apachectl</code> veya <code>httpd</code>’yi bu sinyali göndermek
      için kullanamayacaksınız.</p>

    <div class="note"><p><code>graceful-stop</code> sinyali, aynı anda, aynı yapılandırma
      ile çok sayıda <code class="program"><a href="./programs/httpd.html">httpd</a></code> kopyasının çalıştırılabilmesine
      imkan verir.  Bu, Apache nazikçe yükseltileceği zaman güçlü bir özellik
      haline gelmekteyse de, bazı yapılandırmalarda yarış koşullarının
      oluşmasına ve kısır çekişmelere (deadlock) sebep olabilir.</p>

    <p>Sunucunun süreç kimliğini içeren <code class="directive"><a href="./mod/core.html#lockfile">Lockfile</a></code> ve <code class="directive"><a href="./mod/mod_cgid.html#scriptsock">ScriptSock</a></code> gibi dosyaların disk üzerindeki
      mevcudiyetlerinin sorunsuz olarak devam ettiğinden emin olunmaya
      çalışılmalıdır.  Ayrıca, bir yapılandırma yönergesi, üçüncü parti bir
      modül veya kalıcı CGI uygulamalarına ait disk kilit veya durum dosyaları
      olabilir; <code class="program"><a href="./programs/httpd.html">httpd</a></code>’nin birden fazla kopyasının çalışması
      nedeniyle bu dosyaların da üzerine yazılmadığından emin olunmaya
      çalışılmalıdır.</p>

    <p><code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> tarzı borulu günlükleme kullanımı gibi
      durumlarda yarış koşullarının oluşması olasılığına karşı uyanık
      olunmalıdır. Aynı günlük kayıt dosyalarını aynı anda döndürmeye çalışan
      birden fazla <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> kopyasının çalıştırılması
      halinde bunların her biri diğerlerinin günlük kayıt dosyalarının kaybına
      sebep olabilir.</p></div>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                          style/css/manual-chm.css                                                                            100644       0       0         1623 11256640756  12707  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         @import url(manual-loose-100pc.css);

/* 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.
 */

html {
    font-size: 95%;
}

h1 {
    margin: 0 0 0.5em 0;
}

/* the end */
                                                                                                             style/css/manual-loose-100pc.css                                                                    100644       0       0         5771 11256640756  14112  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * manual.css - no sidebar, 100% normal font height
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* 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.
 */

/* import the main CSS, so we
 * have to adjust only a few things
 */
@import url(manual.css);

html {
    font-size: 100%;
}

/* "sidebar" background is white here */
div#quickview a:hover,
div#quickview a:active {
    background-color: #f0f0f0;
    color: #0073c7;
}

div#quickview code.module a:hover,
div#quickview code.module a:active {
    background-color: #f0f0f0;
    color: #8b4513;
}

div#quickview code.directive a:hover,
div#quickview code.directive a:active {
    background-color: #f0f0f0;
    color: #287f00;
}

h1 {
    font-size: 1.5em;
}

h2 {
    font-size: 1.2em;
}

.category h2 {
    font-size: 1em;
}

h3 {
    font-size: 1.1em;
}

h4 {
    font-size: 1em;
}

div.example h3,
div.note h3,
div.warning h3 {
    font-size: 1em;
}

div#quickview h3,
div#quickview h3.directives {
    margin: 1em 0 0.3em 0;
    font-size: 1.1em;
}

div#quickview h3.directives {
    margin-top: 0;
}

div#quickview li {
    font-size: 1em;
}

div#quickview ul {
    margin-bottom: 1em;
}

div#quickview ul#toc {
    margin-left: 0;
}

div#quickview li img {
    display: inline;
    margin-right: 19px;
}

#module-index div#quickview ul#toc,
#manual-page div#quickview ul#toc,
div#quickview #topics {
    padding-left: 0;
}

div#quickview .seealso {
    padding-left: 34px;
}

#module-index div#quickview ul#toc li,
#manual-page div#quickview ul#toc li,
div#quickview #topics li,
div#quickview .seealso li {
    margin: 0;
    list-style-type: none;
}

div#page-header p.menu,
div#path,
div#footer {
    font-size: smaller;
}

div#quickview {
    position: static;
    margin: 0 0 1em 30px;
    padding: 0;
    width: auto;
    background-color: #fff;
}

div#page-content {
    margin-right: 0;
    padding-right: 0;
}

div.example pre,
div.example p > code {
    font-size: 0.9em;
}

div.note pre,
div.warning pre {
    font-size: 0.9em;
}

table.qref td.descr {
    font-size: 0.9em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * -> The End <-
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
       style/css/manual-print.css                                                                          100644       0       0        31620 11256640756  13314  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * manual.css for printers
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* 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.
 */

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * mainframe ;-)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
html {
    font-size: 11pt;
}

body {
    background-color: #fff;
    color: #000;
    padding: 0 0 0 0;
    margin: 0;
    font-family: "Times New Roman", serif;
    font-weight: normal;
}

pre, code {
    font-family: "Courier New", Courier, monospace;
}

strong {
    font-weight: bold;
}

q, em, var {
    font-style: italic;
}

span.transnote, span.phonetic {
    font-weight: normal;
    background-color: inherit;
    color: #888;
}

/* fixup IE & Opera
 * otherwise they forget to inherit
 * the computed font-size value
 */
table, code {
    font-size: 1em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Links
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* normal links           */
/* ====================== */
a:link,
a:visited,
a:hover,
a:active {
    color: #000;
    background-color: inherit;
    text-decoration: none;
}

/* sidebar */
div#quickview a:hover,
div#quickview a:active {
    background-color: #fff;
    color: #000;
}

/* EXPERIMENTAL! I'm waiting for complaints... */
#page-content p > a[href]:after {
  content: " (\002197\0000A0" attr(href) ") ";
  color: #036;
}

/* code.module [links]    */
/* ====================== */
code.module,
code.module a:link,
code.module a:visited,
code.module a:hover,
code.module a:active {
    color: #8b4513;
    background-color: inherit;
    text-decoration: none;
}

/* code.directive [links] */
/* ====================== */
code.directive,
code.directive a:link,
code.directive a:visited,
code.directive a:hover,
code.directive a:active {
    color: #287f00;
    background-color: inherit;
    text-decoration: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Headings
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* h1                     */
/* ====================== */
h1 {
    padding: 0 0 0.2em 0;
    margin: 1em 0 0.5em 0;
    border-style: none none solid none;
    border-bottom-width: 1px;
    border-bottom-color: #405871;
    background-color: inherit;
    color: #000;
    text-decoration: none;
    font-size: 17pt;
    font-weight: bold;
    text-align: center;
}

/* h2                     */
/* ====================== */
h2 {
    padding: 0.2em 0 0.2em 0.2em;
    margin: 0 0 0.5em 0;
    width: 80%;
    text-decoration: none;
    font-size: 15pt;
    font-weight: bold;
    border-bottom: 1px solid #000;
    text-align: left;
}

.section h2,
.directive-section h2,
.category h2 {
    background-color: #fff;
    color: #000;
}

/* take care of <a name>s inside */
h2 a,
h2 a:hover,
h2 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* h3, h4                 */
/* ====================== */
h3 {
    background-color: inherit;
    color: #000;
    text-decoration: none;
    font-weight: bold;
    font-size: 13pt;
    margin: 1.3em 0 0.4em 0;
    padding: 0 0 0 0.2em;
}

h4 {
    background-color: inherit;
    color: #000;
    text-decoration: none;
    font-weight: bold;
    font-size: 11pt;
    margin: 1.3em 0 0.2em 0;
    padding: 0 0 0 0.2em;
}

/* margin adjustment */
h3 + *, h4 + * {
    margin-top: 0;
}

/* IE confuses the + * :-( 
 * so reset some things
 */
ul, .section table, .directive-section table {
    margin-bottom: 1em;
}

/* titles for 
 * examples, notes and warnings
 */
div.example h3,
div.note h3,
div.warning h3 {
    margin: 0 0 0.5em 0;
    text-align: left;
    font-size: 11pt;
}

/* sidebar */
div#quickview h3 {
    margin: 1em 0 0.3em 0;
    font-size: 13pt;
}

div#quickview h3.directives {
    margin-top: 0;
}

/* take care of <a name>s inside */
h3 a,
h3 a:hover,
h3 a:active,
h4 a,
h4 a:hover,
h4 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Up & Top helper images
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

div.up,
div.top {
    display: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Tables
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* general                */
/* ====================== */
table {
    border: 1px solid #000;
    border-collapse: collapse;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
    margin-left: 1px; /* border-width == 1px */
}

td, th {
    empty-cells: show; /* show border around empty cells */
    padding: 0.1em 0.2em;
    vertical-align: top;
    text-align: left;
    line-height: 1.1em;
}

th {
    font-weight: bold;
}

td.centered {
    text-align: center;
}

tr.header, tr.header th {
    border-top: 1px solid #000;
    border-bottom: 1px solid #000;
}

/* bordered table cells   */
/* ====================== */

/* turn off borders in tables nested in 
 * bordered tables per default
 */
table.bordered table td,
table.bordered table th {
    border-style: none;
}

table.bordered td,
table.bordered th,
table table.bordered td,
table table.bordered th {
    border: 1px solid #000;
}

/* mod/dir. overview table and quick reference  */
/* ============================================ */
table.module th,
table.directive th {
    white-space: nowrap;
}

table.qref {
    border-collapse: collapse;
    width: auto;
}

table.qref td {
    border-style: none solid;
    border-color: #000;
    border-width: 1px;
}

table.qref td.descr {
    padding-left: 1em;
    font-size: 11pt;
}

table#legend {
    width: 100%;
    border-style: none;
    border-width: 0;
    vertical-align: bottom;
    padding: 0;
    margin: 0;
}

table#legend td {
    vertical-align: bottom;
    margin: 0;
    padding: 0;
}

table#legend table {
    vertical-align: bottom;
    margin: 0 0 0 0.4em;
    padding: 0;
    height: 7.5em;
}

table#legend td.letters span {
    display: none;
}

table#legend table td,
table#legend table th {
    vertical-align: middle;
    padding: 0.1ex 0.2em;
    line-height: 1em;
}

/* related modules & dir. */
/* ====================== */

/* assuming, all links are enclosed by
 * <code class="directive"> or
 * <code class="module">
 */

table.related {
    border-collapse: collapse;
}

table.related th,
table.related td {
    background-color: #fff;
    color: #000;
    padding: 0.2ex 0.4em;
    border: 1px solid #000;
}

table.related th {
    vertical-align: middle;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Lists
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* list default values    */
/* ====================== */
ul {
    list-style-type: disc;
}

ul ul {
    list-style-type: square;
}

ul ul ul {
    list-style-type: circle;
}

li, dt, dd {
    line-height: 1.1em;
}

dt {
    margin-top: 0.5em;
    font-weight: bold;
}

ol li {
    margin-top: 0.5em;
}

ol.up-A {
    list-style-type: upper-alpha;
}

/* table of contents      */
/* ====================== */
#toc,
#topics {
    margin: 0;
    padding: 0;
}

#toc li,
#topics li {
    list-style-type: square;
    margin: 0 0 1em 0;
    padding: 0;
}

#toc li img,
#topics li img {
    margin-right: 19px;
}

/* see also               */
/* ====================== */
.seealso {
    margin: 0;
    padding: 0;
}

.seealso li {
    list-style-type: square;
    margin: 0 0 1em 0;
    padding: 0 0 0 34px;
}

/* related modules & dir. */
/* ====================== */
table.related td ul,
table.related td li {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

/* list of all directives */
/* ====================== */
div#directive-list ul {
    margin: 0;
    padding: 0;
}

/* quickview              */
/* ====================== */
div#quickview li {
    font-size: 11pt;
}

div#quickview ul {
    margin: 0;
    padding: 0;
}

div#quickview ul#toc {
    margin: 0;
    padding: 0;
}

div#quickview ul#toc li {
    margin: 0 0 0 1em;
    padding: 0;
    list-style-type: square;
    list-style-position: outside;
}

div#quickview li img {
    display: none;
}

#module-index div#quickview ul#toc,
#manual-page div#quickview ul#toc,
div#quickview #topics,
div#quickview .seealso {
    padding-left: 0;
}

#module-index div#quickview ul#toc li,
#manual-page div#quickview ul#toc li,
div#quickview #topics li,
div#quickview .seealso li {
    margin: 0 0 2px 1em;
    padding: 0;
    list-style-type: square;
    list-style-position: outside;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * main page sections
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* page header            */
/* ====================== */
div#page-header {
    margin-left: 0;
}

div#page-header img {
    display: none;
}

div#page-header p.apache {
    background-color: #fff;
    color: #000;
    padding: 0;
    margin: 0;
    text-align: center;
    vertical-align: middle;
    font-size: 20pt;
    font-weight: bold;
    line-height: 20pt;
}

div#page-header p.menu {
    display: none;
}

/* breadcrumb navigation */
div#path {
    display: none;
}

/* content sections       */
/* ====================== */
div#preamble {
    padding-bottom: 1em;
    margin-left: 0;
}

div.section,
div.directive-section {
    margin: 0;
    padding: 0;
}

.section p,
.directive-section p {
    margin: 0 0 1em 0;
    padding: 0;
}

/* look for this on directive
 * list pages
 */
div#directive-list {
    margin-left: 0;
    padding: 0 0 1em 1em;
}

div#directive-ref {
    margin: -1em 0 0 1px;
    padding: 0 0 1em 0;
    width: auto;
}

/* no sidebar */
div#quickview {
    position: static;
    margin: 0 0 1em 0;
    padding: 0;
    width: auto;
    background-color: #fff;
    color: inherit;
}

/* -> keep content wide */
div#page-content {
    padding-top: 0;
    margin-right: 0;
    padding-right: 0;
}

/* in general */
p {
    line-height: 1.1em;
}

/* page footer            */
/* ====================== */
div#footer {
    margin-left: 0;
    font-size: 11pt;
    border-top: 1px solid #000;
    padding-top: 0.2em;
}

div#footer p.apache {
    float: none;
    text-align: center;
    padding: 0 0 1em 0;
    margin-top: 0;
    font-weight: bold;
}

div.toplang,
div.bottomlang,
div#footer p.menu {
    display: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * subsections (examples, notes, warnings)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* examples               */
/* ====================== */
div.example,
div.note div.example {
    background-color: #fff;
    color: #000;
    padding: 0.5em;
    margin: 1em;
    border: 1px dotted #000;
}

/* the following [block] elements
 * may appear inside example...
 */
div.example p,
div.example pre,
div.example table {
    padding: 0;
    margin: 0;
}

div.example p {
    line-height: 1em;
}

div.example pre,
div.example p > code {
    font-size: 10pt;
}

/* notes & warnings       */
/* ====================== */
div.note,
div.warning {
    background-color: #fff;
    color: #000;
    border: 1px solid #000;
    padding: 0.5em;
    margin: 1em;
}

div.note p,
div.warning p {
    margin: 0;
    padding: 0;
}

div.note pre,
div.warning pre {
    font-size: 10pt;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * quotations, indented paragraphs and figures
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
p.letters {
    display: none;
}

blockquote p {
    font-style: italic;
    margin: 0;
}

blockquote p.cite {
    font-style: normal;
    margin-top: 0;
    margin-left: 2em;
}

blockquote p.cite cite {
    font-style: normal;
}

p.indent {
    margin-left: 2em;
    margin-top: 1em;
}

#index-page form {
    display: none;
}

p.figure {
    margin-left: 2em;
    font-style: italic;
}

p.figure img {
    border: 1px solid #000;
}

p.figure dfn {
    font-weight: bold;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * -> The End <-
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
                                                                                                                style/css/manual-zip-100pc.css                                                                      100644       0       0         1565 11256640756  13570  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         @import url(manual-loose-100pc.css);

/* 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.
 */

h1 {
    margin: 0 0 0.5em 0;
}

/* the end */
                                                                                                                                           style/css/manual-zip.css                                                                            100644       0       0         1552 11256640756  12743  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         @import url(manual.css);

/* 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.
 */


h1 {
    margin: 0 0 0.5em 0;
}

/* the end */
                                                                                                                                                      style/css/manual.css                                                                                100644       0       0        44362 11256640756  12171  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * manual.css
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* 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.
 */

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * mainframe ;-)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
html {
    font-size: 14px;
}

body {
    background-color: #fff;
    color: #036;
    padding: 0 1em 0 0;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: normal;
}

pre, code {
    font-family: "Courier New", Courier, monospace;
}

strong {
    font-weight: bold;
}

q, em, var {
    font-style: italic;
}

span.transnote, span.phonetic {
    font-weight: normal;
    background-color: inherit;
    color: #888;
}

/* fixup IE & Opera
 * otherwise they forget to inherit
 * the computed font-size value
 */
table, code {
    font-size: 1em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Links
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* normal links           */
/* ====================== */
a:link {
    color: #0073c7;
    background-color: inherit;
}

a:visited {
    color: #5A88B5;
    background-color: inherit;
}

a:link:hover,
a:link:active,
a:visited:hover,
a:visited:active {
    color: #0073c7;
    background-color: #f0f0f0;
}

/* hover on non-white backgrounds */
tr.odd a:hover,
tr.odd a:active,
tr.header a:hover,
tr.header a:active,
div.note a:hover,
div.note a:active,
div.example a:hover,
div.example a:active,
div.warning a:hover,
div.warning a:active,
div#quickview a:hover,
div#quickview a:active {
    background-color: #fff;
    color: #0073c7;
}

/* code.module [links]    */
/* ====================== */
code.module,
code.module a:link {
    color: #8b4513;
    background-color: inherit;
}

code.module a:visited {
    color: #bc8f8f;
    background-color: inherit;
}

code.module a:hover,
code.module a:active {
    color: #8b4513;
    background-color: #f0f0f0;
}

/* hover on non-white backgrounds */
tr.odd code.module a:hover,
tr.odd code.module a:active,
tr.header code.module a:hover,
tr.header code.module a:active,
div.note code.module a:hover,
div.note code.module a:active,
div.example code.module a:hover,
div.example code.module a:active,
div.warning code.module a:hover,
div.warning code.module a:active,
div#quickview code.module a:hover,
div#quickview code.module a:active {
    background-color: #fff;
    color: #8b4513;
}

/* code.directive [links] */
/* ====================== */
code.directive,
code.directive a:link {
    color: #287f00;
    background-color: inherit;
}

code.directive a:visited {
    color: #35a500;
    background-color: inherit;
}

code.directive a:hover,
code.directive a:active {
    color: #287f00;
    background-color: #f0f0f0;
}

/* hover on non-white backgrounds */
tr.odd code.directive a:hover,
tr.odd code.directive a:active,
tr.header code.directive a:hover,
tr.header code.directive a:active,
div.note code.directive a:hover,
div.note code.directive a:active,
div.example code.directive a:hover,
div.example code.directive a:active,
div.warning code.directive a:hover,
div.warning code.directive a:active,
div#quickview code.directive a:hover,
div#quickview code.directive a:active {
    background-color: #fff;
    color: #287f00;
}

/* glossary [links] */
/* ====================== */
.glossarylink {
    cursor: help;
    border-bottom: 1px dashed #0073c7;
    text-decoration: none;
}


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Headings
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* h1                     */
/* ====================== */
h1 {
    padding: 0.2em;
    margin: 0;
    border: 1px solid #405871;
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-size: 22px;
    font-weight: bold;
}

/* h2                     */
/* ====================== */
h2 {
    padding: 0.2em 0 0.2em 0.7em;
    margin: 0 0 0.5em 0;
    text-decoration: none;
    font-size: 18px;
    font-weight: bold;
}

.section h2 {
    background-color: #405871;
    color: #fff;
}

.directive-section h2 {
    background-color: #557697;
    color: #fff;
}

.category h2 {
    background-color: #e5ecf3;
    color: #405871;
    font-size: 14px;
}

/* take care of <a name>s inside */
h2 a,
h2 a:hover,
h2 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* h3, h4                 */
/* ====================== */
h3 {
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
    margin: 1.3em 0 0.4em 0;
    padding: 0;
}

h4 {
    background-color: inherit;
    color: #036;
    text-decoration: none;
    font-weight: bold;
    font-size: 14px;
    margin: 1.3em 0 0.2em 0;
    padding: 0;
}

/* margin adjustment */
h3 + *, h4 + * {
    margin-top: 0;
}

/* IE confuses the + * :-(
 * so reset some things
 */
ul, .section table, .directive-section table {
    margin-bottom: 1em;
}

/* titles for
 * examples, notes and warnings
 */
div.example h3,
div.note h3,
div.warning h3 {
    margin: 0 0 0.5em 0;
    text-align: left;
    font-size: 14px;
}

/* sidebar */
div#quickview h3 {
    margin: 1em 0 0.3em 0.5em;
    font-size: 15px;
}

div#quickview h3.directives {
    margin-top: 0.3em;
}

/* take care of <a name>s inside */
h3 a,
h3 a:hover,
h3 a:active,
h4 a,
h4 a:hover,
h4 a:active {
    color: inherit;
    background-color: inherit;
    text-decoration: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Up & Top helper images
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* arrow left             */
/* ====================== */
div.up {
    width: 30px;
    height: 20px;
    padding: 0;
    margin: -20px 0 1px 0;
    text-align: center;
    vertical-align: top;
}

div.up img {
    vertical-align: top;
    width: 11px;
    height: 11px;
    border-style: none;
}

/* arrow up (to page top) */
/* ====================== */
div.top {
    width: 30px;
    padding: 0 0 0 30px;
    margin: 0;
}

div.top img {
    margin-top: 0.5em;
    vertical-align: bottom;
    width: 11px;
    height: 11px;
    border-style: none;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Tables
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* general                */
/* ====================== */
table {
    border: 1px solid #aaa;
    border-collapse: collapse;
    padding: 2px;
    margin-top: 0.5em;
    margin-bottom: 0;
}

td, th {
    empty-cells: show; /* show border around empty cells */
    padding: 0.1em 0.2em;
    vertical-align: top;
    text-align: left;
    line-height: 1.3em;
}

th {
    font-weight: bold;
}

td.centered {
    text-align: center;
}

td.data {
    font-family: monospace;
    text-align: right;
    padding-left: 1em;
}

th.data {
    text-align: right;
}

tr.odd { /* for large tables alternating colors */
    background-color: #f2f2f2;
}

tr.header, tr.header th {
    background-color: #e2e2e2;
    border-top: 1px solid #aaa;
    border-bottom: 1px solid #aaa;
}

/* bordered table cells   */
/* ====================== */

/* turn off borders in tables nested in
 * bordered tables per default
 */
table.bordered table td,
table.bordered table th {
    border-style: none;
}

table.bordered td,
table.bordered th,
table table.bordered td,
table table.bordered th {
    border: 1px solid #aaa;
}

/* index page layout table */
/* ======================= */
body#index-page div#page-content {
    width: 100%; /* IE fun */
}

body[id]#index-page div#page-content {
    width: auto; /* reasonable browsers. */
}

table#indextable {
    width: 100%;
    border-collapse: collapse;
    border: 0 none;
}

table#indextable td {
    width: 33.3%;
    border-left: 1px solid #aaa;
    padding-top: 0;
    padding-bottom: 0;
}

table#indextable td.col1 {
    border-left: 0 none;
    padding-left: 0;
}

table#indextable td.col3 {
    padding-right: 0;
}

/* mod/dir. overview table and quick reference  */
/* ============================================ */
table.module th,
table.directive th {
    white-space: nowrap;
}

table.qref {
    border-collapse: collapse;
    width: 100%;
}

table.qref td {
    border-style: none solid;
    border-color: #aaa;
    border-width: 1px;
}

table.qref td.descr {
    padding-left: 1em;
    font-size: 13px;
}

table#legend {
    width: 100%;
    border-style: none;
    border-width: 0;
    vertical-align: bottom;
    padding: 0;
    margin: 0;
}

table#legend td {
    vertical-align: bottom;
    margin: 0;
    padding: 0;
}

table#legend td.letters {
    width: 100%;
    padding-bottom: 0.5em;
}

table#legend table {
    vertical-align: bottom;
    margin: 0 0 0 0.4em;
    padding: 0;
    height: 7.5em;
}

table#legend table td,
table#legend table th {
    vertical-align: middle;
    padding: 0.1ex 0.2em;
    line-height: 1em;
    white-space: nowrap;
}

/* related modules & dir. */
/* ====================== */

/* assuming, all links are enclosed by
 * <code class="directive"> or
 * <code class="module">
 */

table.related {
    border-collapse: separate;
}

table.related th {
    padding: 0.2ex 0.3em;
    background-color: #e5ecf3;
    color: #405871;
    vertical-align: middle;
}

table.related td {
    padding: 0.2ex 0.3em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Lists
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* list default values    */
/* ====================== */
ul {
    list-style-type: disc;
}

ul ul {
    list-style-type: square;
}

ul ul ul {
    list-style-type: circle;
}

li, dt, dd {
    line-height: 1.3em;
}

dt {
    margin-top: 0.5em;
    font-weight: bold;
}

ol li {
    margin-top: 0.5em;
}

ol.up-A {
    list-style-type: upper-alpha;
}

ol.lo-A {
    list-style-type: lower-alpha;
}

dd.separate {
    margin-bottom: 2em;
}

li.separate {
    margin-bottom: 1em;
}

/* table of contents      */
/* ====================== */
#toc,
#topics {
    margin: 0 0 1em 0;
    padding: 0;
}

#toc li,
#topics li {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

/* see also               */
/* ====================== */
.seealso {
    margin: 0 0 1em 0;
    padding: 0;
}

.seealso li {
    list-style-type: none;
    margin: 0;
    padding: 0 0 0 34px;
}

/* related modules & dir. */
/* ====================== */
table.related td ul,
table.related td li {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

/* list of all directives */
/* ====================== */
div#directive-list ul {
    margin: 0;
    padding: 0;
}

/* indextable */
/* ========== */
table#indextable td ul {
    list-style-type: none;
    margin: 0 0 1em 0.5em;
    padding: 0 0 0 0;
}

table#indextable td ul li {
    margin-top: 0.3em;
}

/* sidebar                */
/* ====================== */
div#quickview li {
    font-size: 13px;
}

div#quickview ul {
    margin: 0 0 15px 0;
    padding: 0;
}

div#quickview ul#toc {
    margin: 0 0 0 0.5em;
    padding: 0;
}

#module-index div#quickview ul#toc,
#manual-page div#quickview ul#toc {
    margin-left: 0;
}

div#quickview ul#toc li {
    margin: 0;
    padding: 0;
    list-style-type: none;
}

div#quickview li img {
    display: none;
}

#module-index div#quickview ul#toc,
#manual-page div#quickview ul#toc,
div#quickview #topics,
div#quickview .seealso {
    padding-left: 15px;
}

#module-index div#quickview ul#toc li,
#manual-page div#quickview ul#toc li,
div#quickview #topics li,
div#quickview .seealso li {
    margin: 0.4em 0 2px 0;
    padding: 0;
    list-style-type: square;
    list-style-position: outside;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * main page sections
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* page header            */
/* ====================== */
div#page-header {
    margin-left: 30px;
}

div#page-header img {
    padding: 0;
    display: block;
    margin: -70px 0 1px 2em;
    width: 248px;
    height: 70px;
}

div#page-header p.apache {
    background-color: #405871;
    color: #fff;
    padding: 0 0 0 248px;
    margin: 0;
    text-align: center;
    vertical-align: middle;
    font-size: 16px;
    font-weight: bold;
    line-height: 29px;
}

div#page-header p.menu {
    text-align: right;
    font-size: 13px;
    margin: 30px 0 0.5em 0;
    padding: 0;
}

/* breadcrumb navigation */
div#path {
    margin: 0.2em 0 1.2em 30px;
    padding: 0;
    font-size: 13px;
}

/* content sections       */
/* ====================== */
div#preamble {
    padding-bottom: 1em;
    margin-left: 30px;
}

div.section,
div.directive-section {
    margin: -1.2em 0 0 60px;
    padding: 0;
}

.section p,
.directive-section p {
    margin: 0 0 1em 0;
    padding: 0;
}

/* look for this on directive
 * list pages
 */
div#directive-list {
    margin-left: 30px;
    padding: 0 0 1em 1em;
}

div#directive-ref {
    margin: -1em 0 0 0;
    padding: 0 0 1em 30px;
    width: 100%; /* IE is BAD (broken as designed) */
}

div[id]#directive-ref { /* a big sorry to ICab, Amaya (and old Konquerors?) */
    width: auto; /* other browsers are fine ;-) */
}

/* sidebar position: right */
div#quickview {
    position: absolute;
    top: 5.5em;
    right: 1em;
    margin-left: 0;
    margin-top: 40px;
    padding: 4px;
    width: 13.5em;
    background-color: #f0f0f0;
    color: inherit;
}

/* -> move content left */
div#page-content {
    padding-top: 0;
    margin-right: 13em;
    padding-right: 30px;
}

/* unsqueeze on some pages... */
body.no-sidebar div#page-content,
body#index-page div#page-content {
    margin-right: 0;
    padding-right: 0;
}

body#index-page div#page-content {
    margin-left: 30px;
    padding-bottom: 1em;
}

/* in general */
p {
    line-height: 1.3em;
}

/* translations           */
/* ====================== */
.toplang {
    padding: 0;
    margin: 0.2em 0.2em 1em 0;
}

.bottomlang {
    padding: 0;
    margin: 0 0.2em 0.2em 0;
}

.toplang p,
.bottomlang p {
    font-size: 13px;
    text-align: right;
    background-color: inherit;
    color: #ccc;
    margin: 0;
    padding: 0;
}

.toplang p span,
.bottomlang p span {
    background-color: inherit;
    color: #036;
}

.toplang p a:link,
.toplang p a:visited,
.bottomlang p a:link,
.bottomlang p a:visited {
    text-decoration: none;
    font-weight: bold;
}

.toplang p a:hover,
.toplang p a:active,
.bottomlang p a:hover,
.bottomlang p a:active {
    font-weight: bold;
}

/* page footer            */
/* ====================== */
div#footer {
    margin-left: 30px;
    font-size: 13px;
    border-top: 1px solid #405871;
    padding-top: 0.2em;
}

div#footer p.apache {
    float: left;
    text-align: left;
    padding: 0 0 1em 0;
    margin-top: 0;
}

div#footer p.menu {
    float: right;
    text-align: right;
    margin-top: 0;
    padding: 0 0 1em 0;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * subsections (examples, notes, warnings)
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

/* examples               */
/* ====================== */
div.example {
    background-color: #e5ecf3;
    color: #000;
    padding: 0.5em;
    margin: 1em 2em 1em 1em;
}

/* example inside a note:
 * blue in gray doesn't look good
 * so simply draw a border around
 * and keep it gray
 */
div.note div.example,
div.warning div.example {
    border: 1px solid #aaa;
    background-color: transparent;
    color: inherit;
    margin-right: 1em;
}

/* example inside table */
table div.example {
    margin-right: 1em;
}

/* the following [block] elements
 * may appear inside example...
 */
div.example p,
div.example pre,
div.example table {
    padding: 0;
    margin: 0;
}

div.example p {
    line-height: 1em;
}

div.example pre,
div.example p > code {
    font-size: 13px;
}

/* notes & warnings       */
/* ====================== */
div.note,
div.warning {
    background-color: #eee;
    color: #036;
    padding: 0.5em;
    margin: 1em 2em 1em 1em;
}

div.warning {
    border: 1px solid #f00;
}

div.note p,
div.warning p {
    margin: 0.5em 0 0 0;
    padding: 0;
}

div.note pre,
div.warning pre {
    font-size: 13px;
}

/* inside table */
table div.note,
table div.warning {
    margin-right: 1em;
}

div.outofdate {
    background-color: #ffffe0;
    color: #036;
    padding: 0.5em;
    margin: 1em 2em 1em 1em;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * quotations, indented paragraphs, forms and figures
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
p.letters {
    margin: 1em 0 0 0;
}

p.centered {
    text-align: center;
}

.letters {
    text-align: center;
    background-color: inherit;
    color: #ccc;
}

.letters a:link,
.letters a:visited {
    text-decoration: none;
    font-weight: bold;
}

.letters a:hover,
.letters a:active {
    font-weight: bold;
}

blockquote p {
    font-style: italic;
    margin: 0;
}

blockquote p.cite {
    font-style: normal;
    margin-top: 0;
    margin-left: 2em;
}

blockquote p.cite cite {
    font-style: normal;
}

p.indent {
    margin-left: 2em;
    margin-top: 1em;
}

span.indent {
    padding-left: 1.5em;
    display: block;
}

#index-page form {
    text-align: center;
}

#index-page form p {
    line-height: 1.1em;
}

#index-page form input {
    font-size: 1em;
}

p.figure {
    margin-left: 2em;
    font-style: italic;
}

p.figure img {
    border: 1px solid #aaa;
}

p.figure dfn {
    font-weight: bold;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * -> The End <-
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
                                                                                                                                                                                                                                                                              style/version.ent                                                                                   100644       0       0         1635 11256640756  11563  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <?xml version='1.0' encoding='UTF-8' ?>

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

<!ENTITY httpd.major "2">
<!ENTITY httpd.minor "2">
<!ENTITY httpd.patch "14">

<!ENTITY httpd.docs "2.2">
                                                                                                   suexec.html                                                                                         100644       0       0        67373 11256641270  10433  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>SuEXEC Desteği - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>SuEXEC Desteği</h1>


    <p><strong>SuEXEC</strong> özelliği, Apache kullanıcılarına
      <strong>CGI</strong> ve <strong>SSI</strong> programlarını sunucunun
      aidiyetinde çalıştığı kullanıcıdan farklı bir kullanıcının aidiyetinde
      çalıştırma olanağı verir. Normalde, <strong>CGI</strong> ve
      <strong>SSI</strong> programlarını çalıştıranla sunucuyu çalıştıran
      aynı kullanıcıdır.</p>

    <p>Gerektiği gibi kullanıldığında bu özellik, kullanıcılara
      <strong>CGI</strong> ve <strong>SSI</strong> programlarını çalıştırma
      ve geliştirmeye izin vermekle ortaya çıkan güvenlik risklerini azaltır.
      Bununla birlikte, <strong>suEXEC</strong> gerektiği gibi
      yapılandırılmadığı takdirde bazı sorunlara yol açabilir ve bilgisayar
      güvenliğinizde yeni delikler ortaya çıkmasına sebep olabilir.
      Güvenlikle ilgili mevcut sorunlarla başa çıkmada ve <em>setuid
      root</em> programları yönetmekte bilgi ve deneyim sahibi değilseniz
      <strong>suEXEC</strong> kullanmayı kesinlikle düşünmemenizi
      öneririz.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Başlamadan önce</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#model">SuEXEC Güvenlik Modeli</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#install">suEXEC’in Yapılandırılması ve Kurulumu</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#enable">suEXEC’in etkin kılınması ve iptal edilmesi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#usage">SuEXEC’in kullanımı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#debug">SuEXEC ve hata ayıklama</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Uyarılar ve Örnekler</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="before" id="before">Başlamadan önce</a></h2>

    <p>Belgeye balıklama dalmadan önce, Apache Grubu ve bu belge ile ilgili
      kabuller hakkında bilgi sahibi olmalısınız.</p>

    <p>Öncelikle, üzerinde <strong>setuid</strong> va <strong>setgid</strong>
      işlemlerinin yapılabildiği Unix türevi bir işletim sistemi
      kullandığınızı varsayıyoruz. Tüm komut örnekleri buna dayanarak
      verilmiştir. Bu desteğe sahip başka platformlar varsa onlardaki
      yapılandırma burada anlattığımız yapılandırmadan farklı olabilir.</p>

    <p>İkinci olarak, bilgisayarınızın güvenliği ve yönetimi ile ilgili bazı
      temel kavramları bildiğinizi kabul ediyoruz. Buna
      <strong>setuid/setgid</strong> işlemlerinin sisteminiz ve güvenlik
      seviyesi üzerindeki etkilerini bilmek dahildir.</p>

    <p>Üçüncü olarak, <strong>suEXEC</strong> kodunun
      <strong>değiştirilmemiş</strong> bir sürümünü kullandığınızı
      varsayıyoruz. Tüm suEXEC kodu, geliştiricilerin yanında sayısız beta
      kullanıcısı tarafından dikkatle incelenmiş ve denenmiştir. Kodların hem
      basit hem de sağlam bir şekilde güvenli olması için gerekli tüm
      önlemler alınmıştır. Bu kodun değiştirilmesi beklenmedik sorunlara ve
      yeni güvenlik risklerine yol açabilir. Özellikle güvenlikle ilgili
      programlarda deneyimli değilseniz suEXEC kodunda kesinlikle bir
      değişiklik yapmamalısınız. Değişiklik yaparsanız kodlarınızı gözden
      geçirmek ve tartışmak üzere Apache Grubu ile paylaşmanızı öneririz.</p>

    <p>Dördüncü ve son olarak, Apache Grubunun suEXEC’i öntanımlı Apache
      kurulumunun bir parçası yapmama kararından bahsetmek gerekir. Bunun
      sonucu olarak, suEXEC yapılandırması sistem yöneticisinin ayrıntılı bir
      incelemesini gerektirir. Gerekli incelemeden sonra yönetici tarafından
      suEXEC yapılandırma seçeneklerine karar verilip, normal yollardan
      sisteme kurulumu yapılır. Bu seçeneklerin belirlenmesi, suEXEC
      işlevselliğinin kullanımı sırasında sistem güvenliğini gerektiği gibi
      sağlamak için yönetici tarafından dikkatle saptanmayı gerektirir. Bu
      sürecin ayrıntılarının yöneticiye bırakılma sebebi, Apache Grubunun
      suEXEC kurulumunu, suEXEC’i dikkatle kullanacak yeterliliğe sahip
      olanlarla sınırlama beklentisidir.</p>

    <p>Hala bizimle misiniz? Evet mi? Pekala, o halde devam!</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="model" id="model">SuEXEC Güvenlik Modeli</a></h2>

    <p>SuEXEC yapılandırması ve kurulumuna girişmeden önce biraz da
      gerçekleşmesini istediğiniz güvenlik modelinin ayrıntıları üzerinde
      duralım. Böylece, suEXEC’in içinde olup bitenleri ve sisteminizin
      güvenliği için alınacak önlemleri daha iyi anlayabilirsiniz.</p>

    <p><strong>suEXEC</strong> işlevselliği, Apache HTTP Sunucusu tarafından
      gerektiği takdirde artalanda çalıştırılan bir setuid programa dayanır.
      Bu program, bir CGI veya SSI betiğine bir HTTP isteği yapıldığı zaman,
      bu betiği, yöneticinin ana sunucunun aidiyetinde çalıştığı kullanıcıdan
      farklı olarak seçtiği bir kullanıcının aidiyetinde çalıştırmak için
      çağrılır. Böyle bir istek geldiğinde, Apache artalandaki setuid
      programına, HTTP isteği yapılan programın ismiyle beraber aidiyetinde
      çalışacağı kullanıcı ve grup kimliklerini de aktarır.</p>

    <p>Artalanda çalıştırılan setuid program başarıyı ve başarısızlığı
      aşağıdaki süreci izleyerek saptar. Bunlardan herhangi biri başarısız
      olursa program başarısızlık durumunu günlüğe kaydeder ve bir hata
      vererek çıkar. Aksi takdirde çalışmaya devam eder.</p>

    <ol>
      <li>
        <strong>Setuid programı çalıştıran kullanıcı sistemin geçerli
        kullanıcılarından biri mi?</strong>

        <p class="indent">Bu, setuid programı çalıştıran kullanıcının
        sistemin gerçek bir kullanıcısı olduğunudan emin olunmasını sağlar.
        </p>
     </li>

     <li>
        <strong>Setuid program yeterli sayıda argümanla çağrılmış mı?
        </strong>

        <p class="indent">Apache’nin artalanda çağırdığı setuid program
          ancak yeterli sayıda argüman sağlandığı takdirde çalışacaktır.
          Argümanların sayısını ve sırasını Apache HTTP sunucusu bilir. Eğer
          setuid program yeterli sayıda argümanla çağrılmamışsa ya
          kendisinde bir değişiklik yapılmıştır ya da kurulu Apache
          çalıştırılabilirinin suEXEC ile ilgili kısmında yanlış giden bir
          şeyler vardır.</p>
      </li>

      <li>
        <strong>Bu geçerli kullanıcının bu setuid programı çalıştırma
          yetkisi var mı?</strong>

        <p class="indent">Sadece tek bir kullanıcı (Apache’nin aidiyetinde
          çalıştığı kullanıcı) bu programı çalıştırmaya yetkilidir.</p>
      </li>

      <li>
        <strong>Hedef CGI veya SSI programı hiyerarşik olarak güvenliği
          bozacak bir dosya yolu üzerinde mi?</strong>

        <p class="indent">Hedef CGI veya SSI programının dosya yolu '/' veya
          '..' ile başlıyor  mu? Buna izin verilmez. Hedef CGI veya SSI
          programı suEXEC’in belge kök dizininde yer almalıdır (aşağıda
          <code>--with-suexec-docroot=<em>DİZİN</em></code> seçeneğine
          bakınız).</p>
      </li>

      <li>
        <strong>Hedef kullanıcı ismi geçerli mi?</strong>

        <p class="indent">Hedef kullanıcı mevcut mu?</p>
      </li>

      <li>
        <strong>Hedef grup ismi geçerli mi?</strong>

        <p class="indent">Hedef grup mevcut mu?</p>
      </li>

      <li>
        <strong>Hedef kullanıcı <code>root</code> değil, değil mi?</strong>

        <p class="indent">Mevcut durumda, <code>root</code> kullanıcısının
          CGI/SSI programlarını çalıştırmasına izin verilmemektedir.</p>
      </li>

      <li>
        <strong>Hedef kullanıcı kimliği asgari kullanıcı numarasından
          <em>BÜYÜK</em> mü?</strong>

        <p class="indent">Asgari kullanıcı numarası yapılandırma sırasında
          belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin
          verilecek olası en düşük kullanıcı numarasını belirlemeniz mümkün
          kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için
          yararlıdır.</p>
      </li>

      <li>
        <strong>Hedef grup <code>root</code>  değil, değil mi?</strong>

        <p class="indent">Mevcut durumda, <code>root</code> grubunun CGI/SSI
          programlarını çalıştırmasına izin verilmemektedir.</p>
      </li>

      <li>
        <strong>Hedef grup numarası asgari grup numarasından
          <em>BÜYÜK</em> mü?</strong>

        <p class="indent">Asgari grup numarası yapılandırma sırasında
          belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin
          verilecek olası en düşük grup numarasını belirlemeniz mümkün
          kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için
          yararlıdır.</p>
      </li>

      <li>
        <strong>Apache’nin artalanda çağırdığı setuid program hedef
          kullanıcı ve grubun aidiyetine geçebildi mi?</strong>

        <p class="indent">Bu noktadan itibaren program setuid ve setgid
          çağrıları üzerinden hedef kullanıcı ve grubun aidiyetine geçer.
          Erişim grubu listesi de ayrıca kullanıcının üyesi olduğu tüm
          gruplara genişletilir.</p>
      </li>

      <li>
        <strong>Hedef CGI/SSI programının bulunduğu dizine geçebildik mi?
        </strong>

        <p class="indent">Dizin mevcut değilse dosyaları da içeremez. Hedef
          dizine geçemiyorsak bu, dizin mevcut olmadığından olabilir.</p>
      </li>

      <li>
        <strong>Hedef dizin Apache için izin verilen yerlerden biri mi?
        </strong>

        <p class="indent">İstek sunucunun normal bir bölümü için yapılmış
          olsa da istenen dizin acaba suEXEC’in belge kök dizini altında mı?
          Yani, istenen dizin, suEXEC’in aidiyetinde çalıştığı kullanıcının
          ev dizini altında bulunan, <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> ile belirtilen dizinin altında mı? (<a href="#install">suEXEC’in yapılandırma seçeneklerine</a>
          bakınız).</p>
      </li>

      <li>
        <strong>Hedef dizin başkaları tarafından yazılabilen bir dizin değil,
          değil mi?</strong>

        <p class="indent">Başkaları da yazabilsin diye bir dizin açmıyoruz;
          dizin içeriğini sadece sahibi değiştirebilmelidir.</p>
      </li>

      <li>
        <strong>Hedef CGI/SSI programı mevcut mu?</strong>

        <p class="indent">Mevcut değilse çalıştırılamaz.</p>
      </li>

      <li>
        <strong>Hedef CGI/SSI program dosyasına başkaları tarafından
          yazılamıyor, değil mi?</strong>

        <p class="indent">Hedef CGI/SSI programının dosyasına sahibinden
          başka kimsenin bir şeyler yazmasını istemeyiz.</p>
      </li>

      <li>
        <strong>Hedef CGI/SSI program setuid veya setgid <em>değil</em>,
          değil mi?</strong>

        <p class="indent">UID/GID‘i tekrar değiştirecek programlar
          çalıştırmayı istemeyiz.</p>
      </li>

      <li>
        <strong>Hedef kullanıcı/grup, programın kullanıcı/grubu ile aynı mı?
        </strong>

        <p class="indent">Hedef kullanıcı dosyanın sahibi mi?</p>
      </li>

      <li>
        <strong>İşlemlerin güvenle yapılabilmesi için süreç ortamını
          başarıyla temizleyebildik mi?</strong>

        <p class="indent">suEXEC, sürecin çalışacağı ortama güvenli bir
          program çalıştırma yolu sağlamaktan başka, yapılandırma sırasında
          oluşturulan güvenli ortam değişkenleri listesinde isimleri bulunan
          ortam değişkenlerinden başkasını aktarmayacaktır.</p>
      </li>

      <li>
        <strong>Hedef CGI/SSI programı haline gelip çalışabildik mi?</strong>

        <p class="indent">Burası suEXEC’in bitip CGI/SSI programının
          başladığı yerdir.</p>
      </li>
    </ol>

    <p>Bu süreç suEXEC güvenlik modelinin standart işlemlerini oluşturur.
      Biraz zorlayıcı ve CGI/SSI tasarımına yeni kurallar ve sınırlamalar
      getiriyor olsa da düşünülen güvenliği adım adım sağlayacak şekilde
      tasarlanmıştır.</p>

    <p>Düzgün bir suEXEC yapılandırmasının hangi güvenlik risklerinden
      kurtulmayı sağladığı ve bu güvenlik modelinin sunucu yapılandırmasıyla
      ilgili sorumluluklarınızı nasıl sınırlayabildiği hakkında daha
      ayrıntılı bilgi edinmek için bu belgenin <a href="#jabberwock">"Uyarılar ve Örnekler"</a> bölümüne bakınız.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="install" id="install">suEXEC’in Yapılandırılması ve Kurulumu</a></h2>

    <p>Eğlence başlıyor.</p>

    <p><strong>suEXEC yapılandırma seçenekleri</strong><br />
    </p>

    <dl>
      <dt><code>--enable-suexec</code></dt>

      <dd>Bu seçenek, hiçbir zaman öntanımlı olarak kurulmayan ve
        etkinleştirilmeyen suEXEC özelliğini etkin kılar. suEXEC özelliğini
        kullanma isteğinizi Apache’nin kabul edebilmesi için
        <code>--enable-suexec</code> seçeneğinin yanında en azından bir tane
        de <code>--with-suexec-xxxxx</code> seçeneği belirtilmiş
        olmalıdır.</dd>

      <dt><code>--with-suexec-bin=<em>YOL</em></code></dt>

      <dd>Güvenlik sebebiyle <code>suexec</code> çalıştırılabilirinin
        bulunduğu yer sunucu koduna yazılır. Bu seçenekle öntanımlı yol
        değiştirilmiş olur. Örnek:<br />
        <code>--with-suexec-bin=/usr/sbin/suexec</code></dd>

      <dt><code>--with-suexec-caller=<em>KULLANICI</em></code></dt>

      <dd>Normalde Apache’nin aidiyetinde çalıştığı <a href="mod/mpm_common.html#user">kullanıcı</a>dır. Bu, bu programı
        çalıştırmasına izin verilen tek kullanıcıdır.</dd>

      <dt><code>--with-suexec-userdir=<em>DİZİN</em></code></dt>

      <dd><p>Kullanıcıların ev dizinleri altında suEXEC’in erişmesine izin
        verilen alt dizinin yerini tanımlar. Bu dizin altında suEXEC
        kullanıcısı tarafından çalıştırılacak tüm programlar "güvenilir"
        olmalıdır. Eğer “basit” bir <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi kullanıyorsanız ( içinde “*”
        bulunmayan), bunun aynı dizin olması gerekir. Eğer burada belirtilen
        dizin, <code>passwd</code> dosyasında kullanıcı için belirtilmiş
        dizinin altında <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>
        yönergesinde belirtilen dizin olmadığı takdirde suEXEC işini
        gerektiği gibi yapmayacaktır. Öntanımlı değer
        <code>public_html</code>’dir.</p>

      <p>Eğer, sanal konaklarınızın herbiri farklı <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> yönergeleri içeriyorsa
        burada belirtilecek dizinin üst dizininin hepsinde aynı olması
        gerekir. <strong>Aksi takdirde, "~<em><code>kullanıcı</code></em>"
        istekleri düzgün çalışmayacaktır.</strong></p></dd>

      <dt><code>--with-suexec-docroot=<em>DİZİN</em></code></dt>

      <dd>Apache için belge kök dizinini belirler. Bu, (<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>’lardan başka) suEXEC için
        kullanılacak tek hiyerarşi olacaktır. Öntanımlı dizin sonuna
        "<code>/htdocs</code>" eklenmiş <code>--datadir</code> dizinidir.
        Yani, seçeneği "<code>--datadir=/home/apache</code>" olarak
        belirtmişseniz suEXEC çalıştırıcısı için belge kök dizini
        "<code>/home/apache/htdocs</code>" olur.</dd>

      <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt>

      <dd>suEXEC kullanıcısının kullanıcı kimliği olarak izin verilen en
        düşük değeri belirler. Çoğu sistemde bu ya 500’dür ya da 100; 100
        öntanımlıdır.</dd>

      <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt>

      <dd>suEXEC kullanıcısının grup kimliği olarak izin verilen en düşük
        değeri belirler. Çoğu sistemde bu 100 olup, seçeneğin de öntanımlı
        değeridir.</dd>

      <dt><code>--with-suexec-logfile=<em>DOSYA</em></code></dt>

      <dd>suEXEC hareketlerinin ve hatalarının kaydedileceği günlük
        dosyasının adını belirler (denetim ve hata ayıklama için
        kullanışlıdır). Öntanımlı günlük dosyası ismi
        "<code>suexec_log</code>" olup yeri (<code>--logfiledir</code>
        seçeneği ile belirtilen) günlük dosyaları dizinidir.</dd>

      <dt><code>--with-suexec-safepath=<em>YOL</em></code></dt>

      <dd>CGI çalıştırılabilirlerine aktarılacak güvenilir <code>PATH</code>
        ortam değişkeninin değerini tanımlar.
        "<code>/usr/local/bin:/usr/bin:/bin</code>" öntanımlıdır.</dd>
    </dl>

    <h3>SuEXEC çalıştırıcısının derlenmesi ve kurulumu</h3>
      

      <p>SuEXEC özelliğini <code>--enable-suexec</code> seçeneği ile
        etkinleştirdiyseniz <code>make</code> komutunu verdiğinizde Apache
        ile birlikte <code>suexec</code> çalıştırılabilir dosyası da
        derlenecektir.</p>

      <p>Tüm bileşenler derlendikten sonra <code>make install</code> komutunu
        vererek kurulumu tamamlayabilirsiniz. <code>suexec</code>
        çalıştırılabilir dosyası <code>--sbindir</code> seçeneği ile
        tanımlanan dizine kurulacaktır; öntanımlı yeri
        <code>/usr/local/apache2/bin/</code> dizinidir.</p>

      <p>Kurulum adımında <strong><em>root yetkisine</em></strong> sahip
        olmanız gerektiğini unutmayın. Çalıştırıcıya kullanıcı kimliğinin
        atanabilmesi ve dosyanın sahibi olan kullanıcı kimliği ile
        çalıştırılabilmesini mümkün kılan bitinin etkin kılınabilmesi için
        kurulumun <code><em>root</em></code> tarafından yapılması
        önemlidir.</p>
    

    <h3>Paranoyak yetkilendirme</h3>
      

      <p>SuEXEC çalıştırıcısı kendini çalıştıran kullanıcının
        <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine
        <code>--with-suexec-caller</code> seçeneği ile belirtilen kullanıcı
        olup olmadığına bakacaksa da, bu sınamanın da bir sistem veya
        kütüphane çağrısı ile istismar edilmiş olma ihtimali gözardı
        edilmemelidir. Bunun meydana gelmesini önlemek için ve genelde
        yapıldığı gibi dosyanın izinlerini suEXEC çalıştırıcısı sadece Apache
        sunucusunun aidiyetinde çalıştığı kullanıcı tarafından çalıştırılacak
        şekilde ayarlayınız.</p>

      <p>Örneğin, sunucunuz şöyle yapılandırılmışsa:</p>

      <div class="example"><p><code>
          User apache<br />
          Group apache-grup<br />
      </code></p></div>

      <p>Ve <code class="program"><a href="./programs/suexec.html">suexec</a></code> çalıştırılabilir de
        <code>/usr/local/apache2/bin/</code> dizinine kurulmuşsa şu komutları
        vermelisiniz:</p>

      <div class="example"><p><code>
          chgrp apache-grup /usr/local/apache2/bin/suexec<br />
          chmod 4750 /usr/local/apache2/bin/suexec<br />
      </code></p></div>

      <p>Böylece suEXEC çalıştırıcısını Apache’yi çalıştıran grubun
        üyelerinden başkasının çalıştıramayacağından emin olabilirsiniz.</p>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">suEXEC’in etkin kılınması ve iptal edilmesi</a></h2>
    

    <p>Apache başlatıldığı sırada <code class="program"><a href="./programs/suexec.html">suexec</a></code> çalıştırıcısı
      için <code>--sbindir</code> seçeneği ile tanımlanan dizine bakar
      (seçeneğin öntanımlı değeri
      <code>/usr/local/apache/sbin/suexec</code>’tir). Apache düzgün
      yapılandırılmış bir suEXEC çalıştırıcısı bulduğu takdirde hata
      günlüğüne şöyle bir ileti yazacaktır:</p>

<div class="example"><p><code>
    [notice] suEXEC mechanism enabled (wrapper: <var>/dosya/yolu/suexec</var>)
</code></p></div>

    <p>Sunucu başlatıldığında bu ileti yazılmazsa sunucu ya çalıştırıcı
      programı umduğu yerde bulamamıştır ya da dosyanın <em>setuid</em> biti
      <em>root</em> tarafından etkin kılınmamıştır.</p>

     <p>SuEXEC mekanizmasını etkin kılmak istediğiniz sunucu çalışmaktaysa
      sunucuyu önce öldürmeli sonra yeniden başlatmalısınız.  Basit bir
      <code>HUP</code> veya <code>USR1</code> sinyali ile yeniden başlamasını
      sağlamak yeterli olmayacaktır.</p>

     <p>SuEXEC mekanizmasını iptal etmek için ise <code class="program"><a href="./programs/suexec.html">suexec</a></code>
      dosyasını sildikten sonra Apache sunucusunu öldürüp yeniden
      başlamalısınız.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="usage" id="usage">SuEXEC’in kullanımı</a></h2>

    <p>CGI programlarına yapılan isteklerin suEXEC çalıştırıcısı tarafından
      yerine getirilebilmesi için sanal konağın bir <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesi içermesi veya
      isteğin <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> tarafından işleme konulması
      gerekir.</p>

    <p><strong>Sanal Konaklar:</strong><br />SuEXEC çalıştırıcısını farklı
      bir kullanıcı ile etkin kılmanın tek yolu <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> bölümleri içinde <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesini
      kullanmaktır. Bu yönergede ana sunucuyu çalıştıran kullanıcıdan farklı
      bir kullanıcı  belirterek ilgili sanal konak üzerinden CGI kaynakları
      için yapılan tüm isteklerin belirtilen <em>kullanıcı</em> ve
      <em>grup</em> tarafından çalıştırılması sağlanır. Bu yönergeyi
      içermeyen sanal konaklar için ana sunucunun kullanıcısı
      öntanımlıdır.</p>

    <p><strong>Kullanıcı dizinleri:</strong><br />
    <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> tarafından işleme sokulan tüm istekler için
    suEXEC çalıştırıcısı istek yapılan kullanıcı dizininin sahibinin
    aidiyetinde çalıştırılacaktır. Bu özelliğin çalışması için tek
    gereklilik, kullanıcının SuEXEC çalıştırıcısı için etkin kılınmış olması
    ve çalıştırıcının yukarıdaki <a href="#model">güvenlik sınamalarından</a>
    geçebilmesidir. Ayrıca,  <code>--with-suexec-userdir</code> <a href="#install">derleme</a> seçeneğinin açıklamasına da bakınız.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="debug" id="debug">SuEXEC ve hata ayıklama</a></h2>

    <p>SuEXEC çalıştırıcısı yukarıda değinildiği gibi günlük bilgilerini
      <code>--with-suexec-logfile</code> seçeneği ile belirtilen dosyaya
      yazacaktır. Çalıştırıcıyı doğru yapılandırarak kurduğunuzdan emin olmak
      istiyorsanız, yolunda gitmeyen şeyler var mı diye bu günlük dosyasına
      bakmayı ihmal etmeyin.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="jabberwock" id="jabberwock">Uyarılar ve Örnekler</a></h2>
    

    <p><strong>UYARI!</strong> Bu bölüm henüz bitmedi. Bu bölümün son hali
      için <a href="http://httpd.apache.org/docs/2.2/suexec.html">çevrimiçi
      belgelere</a> bakınız.</p>

    <p>SuEXEC çalıştırıcısından dolayı sunucu ayarlarına bazı sınırlamalar
      getiren bir kaç önemli nokta mevcuttur. SuEXEC ile ilgili hata
      bildiriminde bulunmadan önce bunlara bir göz atmalısınız.</p>

    <ul>
      <li><strong>suEXEC ile ilgili önemli noktalar</strong></li>

      <li>Hiyerarşik sınırlamalar

        <p class="indent">Güvenlik ve verimlilik adına, tüm suEXEC
          isteklerinin sanal konaklar için üst düzey belge kökünün altındaki
          dosyalarla, kullanıcı dizinleri için ise üst düzey bireysel belge
          köklerinin altındaki dosyalarla sınırlı kalması gerekir. Örneğin,
          dört sanal konağınız varsa ve suEXEC çalıştırıcısının
          getirilerinden faydalanmak istiyorsanız, sanal konaklarınızın belge
          kök dizinlerini ana sunucunun belge kök dizininin altında kalacak
          şekilde yapılandırmanız gerekir (örnek yolda).</p>
      </li>

      <li>SuEXEC'in <code>PATH</code> ortam değişkeni

        <p class="indent">Bunu değiştirmek tehlikeli olabilir. Bu değişkende
          tanımladığınız her yolun <strong>güvenli</strong> bir dizini işaret
          ettiğinden emin olmalısınız. Başkalarının oralarda bir truva atı
          çalıştırmasını istemiyorsanız buna çok dikkat ediniz.</p>
      </li>

      <li>SuEXEC kodunda değişiklik

        <p class="indent">Gerçekte ne yaptığınızı bilmiyorsanız bu,
          <strong>büyük bir sorun</strong> olabilir. Böyle şeyler yapmaktan
          mümkün olduğunca uzak durmalısınız.</p>
      </li>
    </ul>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                     upgrading.html                                                                                      100644       0       0        21371 11256641270  11103  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<title>Upgrading to 2.2 from 2.0 - Apache HTTP Server</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/index.html">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./index.html">Version 2.2</a></div><div id="page-content"><div id="preamble"><h1>Upgrading to 2.2 from 2.0</h1>


  <p>In order to assist folks upgrading, we maintain a document
  describing information critical to existing Apache users. These
  are intended to be brief notes, and you should be able to find
  more information in either the <a href="new_features_2_2.html">New Features</a> document, or in
  the <code>src/CHANGES</code> file.</p>

  <p>This document describes only the changes from 2.0 to 2.2.  If you
  are upgrading from version 1.3, you should also consult the <a href="http://httpd.apache.org/docs/2.0/upgrading.html">1.3 to 2.0
  upgrading document.</a></p>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#compile-time">Compile-Time Configuration Changes</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#run-time">Run-Time Configuration Changes</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#misc">Misc Changes</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#third-party">Third Party Modules</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="new_features_2_2.html">Overview of new features in
  Apache 2.2</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="compile-time" id="compile-time">Compile-Time Configuration Changes</a></h2>
    

    <p>The compilation process is very similar to the one used in
    version 2.0.  Your old <code>configure</code> command line (as
    found in <code>build/config.nice</code> in the installed server
    directory) can be used in some cases.  The most significant change
    required will be to account for changes in module names, in
    particular for the authentication and authorization modules.
    Some details of changes:</p>

    <ul>
      <li>mod_imap has been renamed to <code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code></li>
      <li>mod_auth has been split up into <code class="module"><a href="./mod/mod_auth_basic.html">mod_auth_basic</a></code>,
          <code class="module"><a href="./mod/mod_authn_file.html">mod_authn_file</a></code>, <code class="module"><a href="./mod/mod_authz_user.html">mod_authz_user</a></code>, and
          <code class="module"><a href="./mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
      <li>mod_access has been renamed to <code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li>
      <li>mod_auth_ldap has been renamed to <code class="module"><a href="./mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
      <li>Upgraded to require the APR 1.0 API.</li>
      <li>Updated bundled PCRE version to 5.0</li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="run-time" id="run-time">Run-Time Configuration Changes</a></h2>
    

    <p>Your existing version 2.0 config files and startup scripts can
      usually be used unchanged in version 2.2.  Some small
      adjustments may be necessary for particular configurations as
      discussed below.  In addition, if you dynamically load the
      standard modules using the <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> directive, then you will
      need to account for the module name changes mentioned above.</p>

    <p>If you choose to use the new default
      configuration file for version 2.2, you will find that it has
      been greatly simplified by removing all but the most essential
      configuration settings.  A set of example configuration settings
      for more advanced features is present in the
      <code>conf/extra/</code> directory of the installed server.  Default
      configuration files are installed in the <code>conf/original</code>
      directory.</p>

    <p>Some runtime configuration changes that you may notice:</p>

    <ul>
      <li>The <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> option
      <code>startssl</code> is no longer available.  To enable SSL
      support, you should edit <code>httpd.conf</code> to include the
      relevant <code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> directives and then use
      <code>apachectl start</code> to start the server.  An example
      configuration to activate <code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> has been
      included in <code>conf/extra/httpd-ssl.conf</code>.</li>

      <li>The default setting of <code class="directive"><a href="./mod/core.html#usecanonicalname">UseCanonicalName</a></code> is now
      <code>Off</code>.  If you did not have this directive in your
      config file, you can add <code>UseCanonicalName On</code> to
      retain the old behavior.</li>

      <li>The module <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> will no longer act
      on requests unless a <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> directive specifying a
      directory name is present in the config file.  To restore the
      old default behavior, place the directive <code>UserDir
      public_html</code> in your config file.</li>

      <li>The directive <code class="directive">AuthDigestFile</code>
      from <code class="module"><a href="./mod/mod_auth_digest.html">mod_auth_digest</a></code> has been merged with
      <code class="directive"><a href="./mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
      and is now part of <code class="module"><a href="./mod/mod_authn_file.html">mod_authn_file</a></code>.</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="misc" id="misc">Misc Changes</a></h2>
    

    <ul>
      <li>The module <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, which was
      experimental in Apache 2.0, is now a standard module.</li>

      <li>The module <code class="module"><a href="./mod/mod_disk_cache.html">mod_disk_cache</a></code>, which was
      experimental in Apache 2.0, is now a standard module.</li>

      <li>The module <code class="module"><a href="./mod/mod_mem_cache.html">mod_mem_cache</a></code>, which was
      experimental in Apache 2.0, is now a standard module.</li>

      <li>The module <code class="module"><a href="./mod/mod_charset_lite.html">mod_charset_lite</a></code>, which was
      experimental in Apache 2.0, is now a standard module.</li>

      <li>The module <code class="module"><a href="./mod/mod_dumpio.html">mod_dumpio</a></code>, which was
      experimental in Apache 2.0, is now a standard module.</li>

    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="third-party" id="third-party">Third Party Modules</a></h2>
    

   <p>Many third-party modules designed for version 2.0 will work
   unchanged with the Apache HTTP Server version 2.2.  But all
   modules must be recompiled before being loaded.</p>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/index.html">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/index.html">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                       urlmapping.html                                                                                     100644       0       0        52030 11256641270  11275  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>URL’lerin Dosya Sistemi ile Eşleştirilmesi - Apache HTTP Sunucusu</title>
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>URL’lerin Dosya Sistemi ile Eşleştirilmesi</h1>


    <p>Bu belgede, bir istekte belirtilen URL’nin sunulacak dosyanın dosya
      sistemindeki yerini bulmak için Apache tarafından nasıl kullanıldığı
      açıklanmaktadır.</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#related">İlgili Modüller ve Yönergeler</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#documentroot"><code>DocumentRoot</code></a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#outside">Belge Kök Dizini Dışındaki Dosyalar</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#user">Kullanıcı Dizinleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#redirect">URL Yönlendirme</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#proxy">Karşı Vekil</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#rewrite">Yeniden Yazma Motoru</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#notfound">Dosya orada yok</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="related" id="related">İlgili Modüller ve Yönergeler</a></h2>

<table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code></li><li><code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code></li><li><code class="module"><a href="./mod/mod_vhost_alias.html">mod_vhost_alias</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_alias.html#alias">Alias</a></code></li><li><code class="directive"><a href="./mod/mod_alias.html#aliasmatch">AliasMatch</a></code></li><li><code class="directive"><a href="./mod/mod_speling.html#checkspelling">CheckSpelling</a></code></li><li><code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code></li><li><code class="directive"><a href="./mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxypass">ProxyPass</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxypassreversecookiedomain">ProxyPassReverseCookieDomain</a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxypassreversecookiepath">ProxyPassReverseCookiePath</a></code></li><li><code class="directive"><a href="./mod/mod_alias.html#redirect">Redirect</a></code></li><li><code class="directive"><a href="./mod/mod_alias.html#redirectmatch">RedirectMatch</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li><li><code class="directive"><a href="./mod/mod_alias.html#scriptaliasmatch">ScriptAliasMatch</a></code></li><li><code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code></li></ul></td></tr></table>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="documentroot" id="documentroot"><code>DocumentRoot</code></a></h2>

    <p>Yapılan bir isteğe hangi dosyanın sunulacağına karar verirken
      Apache’nin öntanımlı davranışı istek için URL yolunu (URL’den konak ismi
      ve port ayrıldıktan sonra kalan kısım) alıp bunu yapılandırma dosyasında
      <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> yönergesi ile
      belirtilen dizinin sonuna eklemektir. Bu nedenle, <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> altındaki dizinler ve dosyalar
      sitenin dışardan görünen temel belge ağacını oluştururlar.</p>

    <p>Örneğin, <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> yönergesine
      <code>/var/http/html</code> atanmış olsun.
      <code>http://mesela.dom/balıklar/zargana.html</code> şeklindeki bir
      istek için istemciye <code>/var/http/html/balıklar/zargana.html</code>
      dosyası sunulur.</p>

    <p>Apache ayrıca, sunucunun birden fazla konak için istek kabul etmesini
      sağlayan <a href="vhosts/index.html">sanal barındırmaya</a> da muktedirdir. Bu
      durumda her sanal konak için ayrı bir <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> belirtilebileceği gibi sunulacak içeriğin
      istekte bulunulan IP adresi veya konak ismine dayanarak devingen olarak
      saptanmasını sağlayabilen <code class="module"><a href="./mod/mod_vhost_alias.html">mod_vhost_alias</a></code> modülüyle
      gelen yönergeler de kullanılabilir.</p>

    <p><code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> yönergesi
      yapılandırma dosyanızda ana sunucu için bir tane ve muhtemelen
      oluşturduğunuz her <a href="vhosts/index.html">sanal konak</a> için de birer
      tanedir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="outside" id="outside">Belge Kök Dizini Dışındaki Dosyalar</a></h2>

    <p>Bazen dosya sisteminde doğrudan <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> altında bulunmayan dosyalara da erişim izni
      vermek gerekir. Apache’de bunu sağlamanın çeşitli yolları vardır. Unix
      sistemlerinde sembolik bağlar sayesinde dosya sisteminin farklı
      yerlerindeki dosyaları ve dizinleri <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> altındaymış gibi göstermek mümkündür.
      <code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergesine değer olarak
      <code>FollowSymLinks</code> veya <code>SymLinksIfOwnerMatch</code>
      atanmadıkça Apache olası güvenlik açıklarına karşı öntanımlı olarak
      sembolik bağları izlemez.</p>

    <p>Bundan başka, dosya sisteminin farklı parçalarını belge kök dizini
      altında göstermek için <code class="directive"><a href="./mod/mod_alias.html#alias">Alias</a></code>
      yönergesi de kullanılabilir. Örneğin,</p>

    <div class="example"><p><code>Alias /belgeler /var/http</code></p></div>

    <p>yapılandırması ile
      <code>http://mesela.dom/belgeler/dizin/dosya.html</code> URL’si için
      dosya sistemindeki <code>/var/http/dizin/dosya.html</code> dosyası
      sunulacaktır. Hedef dizindeki dosyaları birer <a class="glossarylink" href="./glossary.html#cgi" title="sözlüğe bakınız">CGI</a> betiği olarak imlemesi dışında <code class="directive"><a href="./mod/mod_alias.html#scriptalias">ScriptAlias</a></code> yönergesi de aynı şekilde
      çalışır.</p>

    <p>Biraz daha fazla esnekliğin gerektiği durumlarda  <a class="glossarylink" href="./glossary.html#regex" title="sözlüğe bakınız">düzenli ifadelere</a> dayalı eşleşmeler sağlamak
      üzere <code class="directive"><a href="./mod/mod_alias.html#aliasmatch">AliasMatch</a></code> ve <code class="directive"><a href="./mod/mod_alias.html#scriptaliasmatch">ScriptAliasMatch</a></code> yönergelerinin gücünden
      yararlanılabilir. Örneğin,</p>

    <div class="example"><p><code>ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+)
      /home/$1/cgi-bin/$2</code></p></div>

    <p>satırı sayesinde <code>http://mesela.dom/~user/cgi-bin/betik.cgi</code>
      URL’si <code>/home/user/cgi-bin/betik.cgi</code> dosyası ile
      eşleştirilir ve dosya bir CGI betiği olarak çalıştırılırdı.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="user" id="user">Kullanıcı Dizinleri</a></h2>

    <p>Geleneksel olarak Unix sistemlerinde belli bir kullanıcının (örn,
      <em>birisi</em>) ev dizinine <code>~birisi/</code> şeklinde atıfta
      bulunulabilir. <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> modülü bu özelliği site
      üzerinden kullanıcıların ev dizinlerindeki dosyaları kişisel sayfalar
      olarak sunmalarını sağlamak üzere kullanır. Örnek:</p>

    <div class="example"><p><code>http://mesela.dom/~birisi/dosya.html</code></p></div>

    <p>Güvenlik sebebiyle kullanıcıların ev dizinlerine doğrudan HTTP erişimi
      vermek uygun olmaz. Bu bakımdan, kullanıcının ev dizini altında HTTP
      erişimi verilecek dosyaların bulunduğu dizini belirtmek için <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi sağlanmıştır.
      Öntanımlı olan <code>Userdir public_html</code> yapılandırması ile
      yukarıdaki gibi bir URL kullanıcının ev dizini (<code>/etc/passwd</code>
      dosyasında belirtilir) <code>/home/birisi/</code> altında yer alan
      <code>/home/birisi/public_html/dosya.html</code> dosyası ile
      eşleşirdi.</p>

    <p>Ev dizininin yerinin <code>/etc/passwd</code> dosyasında belirtilmediği
      sistemlerde kullanılmak üzere <code>Userdir</code> yönergesinin başka
      kullanım şekilleri de vardır.</p>

    <p>Bazı kişiler (genellikle URL üzerinde <code>%7e</code> olarak
      kodlanması sebebiyle) "~" simgesini biçimsiz bulabilir ve kullanıcı
      dizinlerini imlemek için başka bir karakter kullanmayı tercih
      edebilirler. Bu işlevsellik <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> tarafından
      desteklenmemektedir. Ancak, kullanıcı dizinleri düzgün şekilde
      yapılandırılmışsa istenen etki <code class="directive"><a href="./mod/mod_alias.html#aliasmatch">AliasMatch</a></code> yönergesi ile sağlanabilir.
      Örneğin, <code>http://mesela.dom/sayfalar/birisi/dosya.html</code>
      URL’si ile <code>/home/birisi/public_html/dosya.html</code> dosyasını
      eşlemek için <code>AliasMatch</code> yönergesi şöyle
      kullanılabilirdi:</p>

    <div class="example"><p><code>AliasMatch ^/sayfalar/([a-zA-Z0-9]+)/?(.*)
          /home/$1/public_html/$2</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="redirect" id="redirect">URL Yönlendirme</a></h2>

    <p>Yukarıdaki bölümlerde açıklanan yapılandırma yönergeleri Apache’ye
      içeriği dosya sisteminin belli bir yerinden alıp istemciye göndermesini
      söyler. Bazen istemciye, istediği içeriğe farklı bir URL ile
      erişebileceğini ve bu URL için ayrı bir istek yapması gerektiğini
      bildirmek gerekir. Bu işleme <em>yönlendirme</em> adı verilir ve bu
      işlevsellik <code class="directive"><a href="./mod/mod_alias.html#redirect">Redirect</a></code> yönergesi
      ile sağlanır. Örneğin, <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code>
      altındaki <code>/foo/</code> dizininin içeriğinin <code>/bar/</code>
      adında yeni bir dizine taşınması halinde istemciye yeni konumun
      bildirilmesi şöyle sağlanabilirdi:</p>

    <div class="example"><p><code>Redirect permanent /foo/
      http://mesela.dom/bar/</code></p></div>

    <p>Bu atama sayesinde <code>/foo/</code> ile başlayan URL yolları
      <code>mesela.dom</code> sunucundaki <code>/bar/</code> dizini altındaki
      içeriğe yönlendirilmektedir. Yönlendirmeyi aynı sunucu üzerinde yapmak
      zorunda değilsiniz, bu yönerge ile başka bir sunucuya da yönlendirme
      yapabilirsiniz.</p>

    <p>Apache ayrıca, yeniden yazma ile ilgili daha karmaşık sorunlara çözüm
      olarak <code class="directive"><a href="./mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> diye bir
      yönerge daha sağlar. Örneğin bir sitenin baş sayfasını diğer isteklerden
      ayrı olarak farklı bir siteye yönlendirmek için yönergeyi şöyle
      kullanabilirsiniz:</p>

    <div class="example"><p><code>RedirectMatch permanent ^/$
      http://misal.dom/ilksayfa.html</code></p></div>

    <p>Bundan başka, bir sitedeki tüm sayfalara yapılan istekleri başka bir
      siteye geçici olarak yönlendirmek için şöyle bir şey yapabilirsiniz:</p>

    <div class="example"><p><code>RedirectMatch temp .*
      http://mesela.misal.dom/ilksayfa.html</code></p></div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxy" id="proxy">Karşı Vekil</a></h2>

    <p>Apache ayrıca, uzak sunuculardaki belgelerin yerel sunucunun URL
      alanına getirilmesini de mümkün kılar. Bu tekniğe HTTP sunucunun
      belgeleri uzak bir sunucudan alıp istemciye sunmasını sağlayarak bir
      vekil sunucu gibi davranması nedeniyle <em>ters vekalet</em> adı
      verilir. Belgelerin istemciye özkaynağın bulunduğu sunucudan
      geliyormuş gibi değilde doğrudan isteği yaptığı sunucudan geliyormuş
      gibi sunulması nedeniyle bu işlem normal vekaletten farklıdır.</p>

    <p>Aşağıdaki örnekte, istemci <code>/foo/</code> dizini altından bir belge
      istemekte, sunucu ise bu belgeyi <code>dahili.mesela.dom</code>
      üzerindeki <code>/bar/</code> dizininden alıp istemciye yerel sunucudan
      geliyormuş gibi sunmaktadır:</p>

    <div class="example"><p><code>
      ProxyPass /foo/ http://dahili.mesela.dom/bar/<br />
      ProxyPassReverse /foo/ http://dahili.mesela.dom/bar/<br />
      ProxyPassReverseCookieDomain dahili.mesela.dom harici.mesela.dom<br />
      ProxyPassReverseCookiePath /foo/ /bar/
    </code></p></div>

    <p><code class="directive"><a href="./mod/mod_proxy.html#proxypass">ProxyPass</a></code> sunucuyu uygun
      belgeleri alması için yapılandırırken <code class="directive"><a href="./mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> yönergesi <code>dahili.mesela.dom</code>
      sunucusundan kaynaklanan yönlendirmeleri yeniden yazar, böylece bunların
      yerel sunucudaki yerleri belirlenmiş olur. Benzer şekilde,  <code class="directive"><a href="./mod/mod_proxy.html#proxypassreversecookiedomain">ProxyPassReverseCookieDomain</a></code> ve
      <code class="directive"><a href="./mod/mod_proxy.html#proxypassreversecookiepath">ProxyPassReverseCookiePath</a></code>
      yönergeleri de arka sunucu tarafından atanan çerezleri yeniden yazar.</p>

    <p>Yalnız, belgelerin içindeki hiperbağların yeniden yazılmayacağına
      dikkat ediniz. Dolayısıyla, belge içinde
      <code>dahili.mesela.dom</code>’u ismiyle hedef alan mutlak hiperbağlar
      varsa bunlar istemci tarafından vekil sunucudan değil doğrudan
      <code>dahili.mesela.dom</code>’dan istenecektir. Üçüncü parti modüller
      arasında HTML ve XHTML’de hiperbağları yeniden yazabilen <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a>
      adında bir modül vardır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="rewrite" id="rewrite">Yeniden Yazma Motoru</a></h2>

    <p>Daha güçlü ikameler gerektiğinde <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> modülü
      tarafından sağlanan yeniden yazma motoru işe yarayabilir. Bu modüldeki
      yönergeler sunulacak içeriğin yerine karar vermek için kaynak IP adresi,
      tarayıcı türü gibi isteğe özgü özellikleri kullanırlar.
      <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> modülü buna ek olarak isteğin nasıl ele
      alınacağına karar vermek için harici yazılımları ve veritabanlarını
      kullanabilir. Yeniden yazma motoru yukarıda değinilen üç eşleşme türünü
      de uygulayabilecek yetenektedir: Dahili yönlendirmeler (rumuzlar),
      harici yönlendirmeler ve vekalet. <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> modülü
      tarafından sağlanan yeteneklerin ayrıntılı açıklamaları ve bunların
      kullanım örnekleri ayrıntılı olarak <a href="rewrite/index.html">mod_rewrite
      belgeleri</a>nde bulunmaktadır.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="notfound" id="notfound">Dosya orada yok</a></h2>

    <p>Kaçınılmaz olarak, dosya sisteminde mevcut olmayan dosyalar için de
      istek yapılacaktır. Bunun çeşitli sebepleri olabilir.  Bazı durumlarda
      bu, belgelerin yerlerininin değiştirilmesinin bir sonucu olabilir. Bu
      durumda yapılacak en iyi şey, istemciyi belgeyi yeni yerinden istemesi
      için bilgilendirmek amacıyla  <a href="#redirect">URL yönlendirmesi</a>
      kullanmaktır. Bu şekilde, içeriğin yeri değişse bile eski yer imlerinin
      ve hiperbağların çalışmaya devam edeceklerinden emin olabilirsiniz.</p>

    <p>"Dosya orada yok" ("File Not Found") hatalarının diğer bir bildik
      sebebi de URL’lerin hiperbağlarda veya doğrudan tarayıcıda kasıtlı ya da
      kasıtsız, yanlış yazılmasıdır. Bu tür sorunlarda yardımcı olması için
      Apache <code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code> (sic) adında bir modülle gelir. Bu
      modül etkin kılındığında Apache, "Dosya orada yok" ("File Not Found")
      hatalarının önünü kesip başka bir yerde benzer isimde bir dosya var mı
      diye bakar. Böyle bir dosya varsa, <code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code>
      istemciye dosyanın doğru yerini bildiren bir HTTP yönlendirmesi yollar.
      Benzer çok sayıda dosya varsa bunlar istemciye bir liste halinde
      sunulur.</p>

    <p><code class="module"><a href="./mod/mod_speling.html">mod_speling</a></code> modülünün en yararlı özelliklerinden biri
      de dosya isimlerini harf büyüklüğüne duyarsız olarak arayabilmesidir.
      Dosya isimlerinde harf büyüklüğünün önemli olduğu Unix benzeri sistemler
      hakkında bilgisi olmayan kullanıcılara sahip sistemlerin kullanıcılarına
      bu büyük yarar sağlar. Fakat modülün URL düzeltmekten başka şeyler için
      de kullanılması, istemcilerden gelen neredeyse her isteğin URL
      yönlendirmesine konu olmasına sebep olarak sunucunun yükünü
      arttırabilir.</p>

    <p>Yerinde bulunmayan içeriğin bulunması çabalarının tümü Apache’nin 404
      (Dosya orada yok) HTTP durum kodlu bir hata sayfası döndürmesine yol
      açar. Bu sayfanın içeriği <code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> yönergesi ile denetlenebilir ve <a href="custom-error.html">Hata Yanıtlarının Kişiselleştirilmesi</a>
      bölümünde anlatıldığı gibi oldukça esnek bir şekilde
      kişiselleştirilebilir.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="./mod/index.html">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/index.html">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        vhosts/details.html                                                                                 100644       0       0        51166 11256641270  12103  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Sanal Konak Eşlemenin Derinliğine İncelenmesi - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Sanal Konak Eşlemenin Derinliğine İncelenmesi</h1>



    <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.
      <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> 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>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configparsing">Yapılandırma Dosyasının Çözümlenmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#hostmatching">Sanal Konağın Belirlenmesi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#tips">İpuçları</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="configparsing" id="configparsing">Yapılandırma Dosyasının Çözümlenmesi</a></h2>

    <p>Bu belgede <code>&lt;VirtualHost&gt;</code> bölümleri dışında kalan
      tanımlardan bahsederken <em>ana_sunucu</em>, <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümlerindeki tanımlamalardan
      bahsederken <em>sankonlar</em> diyeceğiz.</p>

    <p><code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>,
      <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>,
      <code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code> ve
      <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> 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><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> 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><div class="example"><p><code>
  NameVirtualHost 111.22.33.44<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # sunucu A<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # sunucu B<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  <br />
  NameVirtualHost 111.22.33.55<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # sunucu C<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # sunucu D<br />
  ...<br />
  &lt;/VirtualHost&gt;
</code></p></div></td>
<td><div class="example"><p><code>
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # sunucu A<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # sunucu C<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.44&gt;<br />
  # sunucu B<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  &lt;VirtualHost 111.22.33.55&gt;<br />
  # sunucu D<br />
  ...<br />
  &lt;/VirtualHost&gt;<br />
  <br />
  NameVirtualHost 111.22.33.44<br />
  NameVirtualHost 111.22.33.55<br />
  <br />
</code></p></div></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 <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>
        yönergesi içermiyorsa,
        <code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code>,
        <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>,
        <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>,
        <code class="directive"><a href="../mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</a></code>,
        <code class="directive"><a href="../mod/core.html#receivebuffersize">ReceiveBufferSize</a></code> ve
        <code class="directive"><a href="../mod/core.html#sendbuffersize">SendBufferSize</a></code> 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 <code class="program"><a href="../programs/httpd.html">httpd</a></code> 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>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="hostmatching" id="hostmatching">Sanal Konağın Belirlenmesi</a></h2>

    <p>Sunucu bir istek durumunda hangi sankonun kullanılacağını şöyle
      belirler:</p>

    <h3><a name="hashtable" id="hashtable">Değer çiftleri tablosu aranır</a></h3>

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

    

    <h3><a name="ipbased" id="ipbased">IP’ye dayalı sankon</a></h3>

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

    

    <h3><a name="namebased" id="namebased">İsme dayalı sankon</a></h3>

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

    

    <h3><a name="persistent" id="persistent">Kalıcı bağlantılar</a></h3>

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

    

    <h3><a name="absoluteURI" id="absoluteURI">Mutlak URI</a></h3>

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


<h3><a name="observations" id="observations">İzlenimler</a></h3>

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

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="tips" id="tips">İpuçları</a></h2>

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

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                          vhosts/examples.html                                                                                100644       0       0        64147 11256641270  12277  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Sanal Konak Örnekleri - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Sanal Konak Örnekleri</h1>



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

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#purename">Tek bir IP ile çok sayıda isme dayalı site</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#twoips">IP adresleri farklı çok sayıda isme dayalı site</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#intraextra">Aynı içeriği farklı IP adresleriyle sunmak
    (örn., dahili ve harici ağlara)</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#port">Farklı portlarla farklı siteler</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ip">IP’ye dayalı sanal konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ipport">Hem IP’ye hem de porta dayalı sanal konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mixed">Hem isme hem de IP‘ye dayalı sanal konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxy"><code>Virtualhost</code> ve
    <code>mod_proxy</code>’nin birlikte kullanımı</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#default"><code>_default_</code> sanal konakları</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#migrate">Bir isme dayalı sanal konağı bir IP’ye dayalı
    sanal konakla yansılamak</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#serverpath"><code>ServerPath</code> yönergesinin kullanımı</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="purename" id="purename">Tek bir IP ile çok sayıda isme dayalı site</a></h2>
    

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

    <div class="note"><h3>Bilginize</h3><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>
    </div>

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    # 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 />
    &lt;VirtualHost *:80&gt;<br />
    <span class="indent">
      DocumentRoot /siteler/mesela<br />
      ServerName mesela.dom<br />
      <br />
      # Diğer yönergeler, burada ...<br />
      <br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost *:80&gt;<br />
    <span class="indent">
      DocumentRoot /siteler/faraza<br />
      ServerName faraza.dom<br />
      <br />
      # Diğer yönergeler, burada ...<br />
      <br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

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

    <div class="note"><h3>Bilginize</h3>
      <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>

      <div class="example"><p><code>
      NameVirtualHost 192.168.1.22<br />
      <br />
      &lt;VirtualHost 192.168.1.22&gt;<br />
        # vs. ...
      </code></p></div>

      <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>
    </div>

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

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="twoips" id="twoips">IP adresleri farklı çok sayıda isme dayalı site</a></h2>
    

    <div class="note"><h3>Bilginize</h3>
      <p>Burada açıklanan teknikler istendiği kadar çok IP adresine
        genişletilebilir.</p>
    </div>

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    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 />
    &lt;VirtualHost 192.168.2.2&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/mesela<br />
        ServerName mesela.dom<br />
        <br />
        # Diğer yönergeler, burada ...<br />
        <br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 192.168.2.2&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/falanca<br />
        ServerName falanca.dom<br />
        <br />
        # Diğer yönergeler, burada ...<br />
        <br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

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

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="intraextra" id="intraextra">Aynı içeriği farklı IP adresleriyle sunmak
    (örn., dahili ve harici ağlara)</a></h2>

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    NameVirtualHost 192.168.1.1<br />
    NameVirtualHost 172.20.30.40<br />
    <br />
    &lt;VirtualHost 192.168.1.1 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/sunucu<br />
        ServerName sunucu.mesela.dom<br />
        ServerAlias sunucu<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Artık, hem iç hem de dış ağdan gelen isteklere aynı
      <code>VirtualHost</code> bölümünden hizmet sunulacaktır.</p>

    <div class="note"><h3>Bilginize:</h3>
      <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>
    </div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="port" id="port">Farklı portlarla farklı siteler</a></h2>

    <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. <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>
      yönergesi ile port tanımlamak suretiyle bunu mümkün kılabilirsiniz.
      <code>NameVirtualHost&nbsp;<em>isim:port</em></code> tanımı yapmadan
      veya bunun yerine <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
      kullanarak <code>VirtualHost&nbsp;<em>isim:port</em></code> kullanmaya
      kalkışırsanız, yapılandırmanız çalışmayacaktır.</p>

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    Listen 80<br />
    Listen 8080<br />
    <br />
    NameVirtualHost 172.20.30.40:80<br />
    NameVirtualHost 172.20.30.40:8080<br />
    <br />
    &lt;VirtualHost 172.20.30.40:80&gt;<br />
    <span class="indent">
        ServerName mesela.dom<br />
        DocumentRoot /siteler/mesela-80<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40:8080&gt;<br />
    <span class="indent">
        ServerName mesela.dom<br />
        DocumentRoot /siteler/mesela-8080<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40:80&gt;<br />
    <span class="indent">
        ServerName faraza.dom<br />
        DocumentRoot /siteler/faraza-80<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40:8080&gt;<br />
    <span class="indent">
        ServerName faraza.dom<br />
        DocumentRoot /siteler/faraza-8080<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ip" id="ip">IP’ye dayalı sanal konaklar</a></h2>

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    Listen 80<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/mesela<br />
        ServerName mesela.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.50&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/faraza<br />
        ServerName faraza.dom<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    <p><code>&lt;VirtualHost&gt;</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>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ipport" id="ipport">Hem IP’ye hem de porta dayalı sanal konaklar</a></h2>
    

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    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 />
    &lt;VirtualHost 172.20.30.40:80&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/mesela-80<br />
        ServerName mesela.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40:8080&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/mesela-8080<br />
        ServerName mesela.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.50:80&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/faraza-80<br />
        ServerName faraza.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.50:8080&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/faraza-8080<br />
        ServerName faraza.dom<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mixed" id="mixed">Hem isme hem de IP‘ye dayalı sanal konaklar</a></h2>
    

    <p>Bazı adreslerde isme dayalı, bazılarında da IP’ye dayalı sanal konaklar
      çalışsın istersek...</p>

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>

    Listen 80<br />
    <br />
    NameVirtualHost 172.20.30.40<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/mesela<br />
        ServerName mesela.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/faraza<br />
        ServerName faraza.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/falanca<br />
        ServerName falanca.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    # IP-based<br />
    &lt;VirtualHost 172.20.30.50&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/filanca<br />
        ServerName filanca.dom<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.60&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/fesmekan<br />
        ServerName fesmekan.dom<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxy" id="proxy"><code>Virtualhost</code> ve
    <code>mod_proxy</code>’nin birlikte kullanımı</a></h2>

    <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 <code class="directive"><a href="../mod/mod_proxy.html#proxypreservehost on">ProxyPreserveHost On</a></code> yönergesini
      kullandık.</p>

    <div class="example"><p><code>
    &lt;VirtualHost *:*&gt;<br />
    <span class="indent">
        ProxyPreserveHost On<br />
        ProxyPass / http://192.168.111.2/<br />
        ProxyPassReverse / http://192.168.111.2/<br />
        ServerName konak.mesela.dom<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="default" id="default"><code>_default_</code> sanal konakları</a></h2>

    <h3><a name="defaultallports" id="defaultallports">Tüm portlar için <code>_default_</code></a></h3>
      

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>
    

    &lt;VirtualHost _default_:*&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/default<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    <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 <code class="directive"><a href="../mod/mod_alias.html#aliasmatch">AliasMatch</a></code> veya
      <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> yönergesini
      kullanabilirsiniz.</p>
    

    <h3><a name="defaultdifferentports" id="defaultdifferentports">Farklı portlardan <code>_default_</code></a></h3>
      

    <p>Önceki yapılandırmaya ek olarak 80. portta ayrı bir
      <code>_default_</code> sanal konağı kullanmak istersek...</p>

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>
    

    &lt;VirtualHost _default_:80&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/default80<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost _default_:*&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/default<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

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

    <h3><a name="defaultoneport" id="defaultoneport">Tek portluk <code>_default_</code></a></h3>
      

    <p><code>_default_</code> sanal konağının sadece 80. porttan hizmet
      sunmasını istersek...</p>

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>
    

    &lt;VirtualHost _default_:80&gt;<br />
    DocumentRoot /siteler/default<br />
    ...<br />
    &lt;/VirtualHost&gt;
    </code></p></div>

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

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="migrate" id="migrate">Bir isme dayalı sanal konağı bir IP’ye dayalı
    sanal konakla yansılamak</a></h2>

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>
    

    Listen 80<br />
    ServerName mesela.dom<br />
    DocumentRoot /siteler/mesela<br />
    <br />
    &lt;VirtualHost 192.168.1.2&gt;<br />
    <br />
    &lt;VirtualHost 192.168.1.2 192.168.2.2&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/falanca<br />
        ServerName falanca.dom<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 192.168.1.2&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/faraza<br />
        ServerName faraza.dom<br />
        ServerAlias *.faraza.dom<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

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

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="serverpath" id="serverpath"><code>ServerPath</code> yönergesinin kullanımı</a></h2>
    

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

    <div class="example"><h3>Sunucu yapılandırması</h3><p><code>
    

    NameVirtualHost 172.20.30.40<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        # ilk sanal konak<br />
        DocumentRoot /siteler/baska<br />
        RewriteEngine On<br />
        RewriteRule ^/.* /siteler/baska/index.html<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    DocumentRoot /siteler/baska/bir<br />
    <span class="indent">
        ServerName bir.baska.tld<br />
        ServerPath /bir/<br />
        RewriteEngine On<br />
        RewriteRule ^(/bir/.*) /siteler/baska$1<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost 172.20.30.40&gt;<br />
    <span class="indent">
        DocumentRoot /siteler/baska/iki<br />
        ServerName iki.baska.tld<br />
        ServerPath /iki/<br />
        RewriteEngine On<br />
        RewriteRule ^(/iki/.*) /siteler/baska$1<br />
        # ...<br />
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    <p><code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code> 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><code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> 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>

  </div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                         vhosts/fd-limits.html                                                                               100644       0       0        14156 11256641270  12344  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Dosya Tanıtıcı Sınırları - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Dosya Tanıtıcı Sınırları</h1>



    <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ç, <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> 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:

        <div class="example"><p><code>
          <code>#!/bin/sh<br />
           ulimit -S -n 100<br />
           exec httpd</code>
        </code></p></div>
      </li>
    </ul>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="splitlogs" id="splitlogs">Günlük kayıtlarının ayrıştırılması</a></h2>

    <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, <code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code> 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>

    <div class="example"><p><code>
    LogFormat "%v %h %l %u %t \"%r\" %&gt;s %b" vhost<br />
    CustomLog logs/multiple_vhost_log vhost
    </code></p></div>

    <p>Bu yapılandırma ile her günlük kaydının başında sanal konağın
      <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> 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>

    <div class="example"><p><code>
    split-logfile &lt; /logs/multiple_vhost_log
    </code></p></div>

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

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                  vhosts/index.html                                                                                   100644       0       0        13610 11256641270  11555  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache Sanal Konak Belgeleri - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="../index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a></div><div id="page-content"><div id="preamble"><h1>Apache Sanal Konak Belgeleri</h1>



    <p><cite>Sanal Konak</cite> (Virtual Host) terimi tek bir makine üzerinde
      birden fazla sitenin (www.sirket1.dom, www.sirket2.dom gibi) barındırılma
      uygulamasını betimler. Sanal konaklar, "<a href="ip-based.html">IP’ye
      dayalı</a>" veya "<a href="name-based.html">isme dayalı</a>" olabilir;
      birincisinde, her site ayrı bir IP adresinden sunulurken, ikincisinde her
      IP adresinde birden fazla site sunulur. Olayda aynı fiziksel sunucu
      kullanıldığı halde bu sunucu son kullanıcıya görünür değildir.</p>

    <p>Apache yazılımsal olarak IP’ye dayalı sanal konakları destekleyen ilk
      sunuculardan biridir. 1.1 sürümünden itibaren Apache hem IP’ye dayalı hem de
      isme dayalı sanal konakları desteklemektedir. İsme dayalı sanal konaklara
      bazen <em>konağa dayalı</em> sanal konaklar veya <em>IP’ye dayanmayan</em>
      sanal konaklar da denmektedir.</p>

    <p>Aşağıda, Apache’nin 1.3 sürümü ve sonrası için sanal konak desteğini bütün
      ayrıntıları ile açıklayan belgeler listelenmiştir.</p>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#support">Sanal Konak Desteği</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directives">Yapılandırma Yönergeleri</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code></li><li><a href="name-based.html">İsme Dayalı Sanal Konaklar</a></li><li><a href="ip-based.html">IP Adresine Dayalı Sanal Konaklar</a></li><li><a href="examples.html">Sanal Konak Örnekleri</a></li><li><a href="fd-limits.html">Dosya Tanıtıcı Sınırları</a></li><li><a href="mass.html">Kütlesel Sanal Konaklık</a></li><li><a href="details.html">Ayrıntılı olarak Konak Eşleme</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="support" id="support">Sanal Konak Desteği</a></h2>

    <ul>
      <li><a href="name-based.html">İsme Dayalı Sanal Konaklar</a> (Her IP
        adresinde birden fazla site)</li>
      <li><a href="ip-based.html">IP Adresine Dayalı Sanal Konaklar</a> (Her site
        için ayrı IP adresi)</li>
      <li><a href="examples.html">Çok kullanılan sanal konak yapılandırma
        örnekleri</a></li>
      <li><a href="fd-limits.html">Dosya Tanıtıcı Sınırları</a> (veya,
        <em>çok fazla günlük dosyası</em>)</li>
      <li><a href="mass.html">Devingen olarak Yapılandırılan Kütlesel Sanal
        Barındırma</a></li>
      <li><a href="details.html">Konak Eşlemenin Derinliğine İncelenmesi</a></li>
    </ul>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="directives" id="directives">Yapılandırma Yönergeleri</a></h2>

    <ul>
      <li><code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li>
      <li><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code></li>
      <li><code class="directive"><a href="../mod/core.html#servername">ServerName</a></code></li>
      <li><code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code></li>
      <li><code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code></li>
    </ul>

    <p>Sanal konak yapılandırmanız üzerinde hata ayıklamaya çalışıyorsanız
      Apache’nin <code>-S</code> komut satırı seçeneği şu şekilde çok işinize
      yarayabilir:</p>

    <div class="example"><p><code>
    /usr/local/apache2/bin/httpd -S
    </code></p></div>

    <p>Bu komut, yapılandırma dosyasının Apache yorumunu dökümler. IP
      adreslerinin ve sunucu isimlerinin dikkatli bir incelemesi, yapılandırma
      yanlışlarınızı keşfetmenize yardımcı olabilir. (Diğer komut satırı
      seçenekleri için <code class="program"><a href="../programs/httpd.html">httpd</a></code> programının belgelerine
      bakınız.)</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                        vhosts/ip-based.html                                                                                100644       0       0        23501 11256641270  12132  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Apache’de IP’ye Dayalı Sanal Konak Desteği - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Apache’de IP’ye Dayalı Sanal Konak Desteği</h1>

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#requirements">Sistem gereksinimleri</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#howto">Apache nasıl ayarlanır?</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#multiple">Çok sayıda sürecin yapılandırılması</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#single">Sanal konaklar tek bir sürecin yapılandırılması</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li>
<a href="name-based.html">İsme Dayalı Sanal Konak Desteği</a>
</li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="requirements" id="requirements">Sistem gereksinimleri</a></h2>

    <p><cite>IP’ye dayalı</cite> deyince, sunucunun <strong>her IP’ye dayalı
      sanal konak için ayrı bir IP adresi</strong>ne sahip olduğunu anlıyoruz.
      Bunun olması için, makine ya çok sayıda ağ bağlantısına sahiptir ya da
      makinede, günümüzde çoğu işletim sistemi tarafından desteklenen sanal
      arabirimler kullanılıyordur. (Sanal arabirimlerle ilgili ayrıntılar için
      sistem belgelerinize bakınız; bu konu genellikle IP rumuzları (ip aliases)
      olarak geçer ve ayarlamak için genellikle "ifconfig" komutu
      kullanılır.)</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="howto" id="howto">Apache nasıl ayarlanır?</a></h2>

    <p>Çok sayıda konağı desteklemek üzere Apache iki şekilde
      yapılandırılabilir. Ya her konak için ayrı bir <code class="program"><a href="../programs/httpd.html">httpd</a></code>
      süreci çalıştırırsınız ya da tüm sanal konakları destekleyen tek bir
      süreciniz olur.</p>

    <p>Çok sayıda süreç kullanıyorsanız:</p>

    <ul>
      <li>Güvenli bölgeler oluşturmanız gerekiyordur. Örneğin, şirket2’deki hiç
        kimse dosya sistemi üzerinden şirket1’e ait verileri okuyamasın, sadece
        herkes gibi tarayıcı kullanarak okuyabilsin istenebilir.  Bu durumda,
        <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>,
        <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code>,
        <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> ve
        <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> yönergeleri farklı
        değerlerle yapılandırılmış iki ayrı süreç çalıştırmanız gerekir.</li>

      <li>Makine üzerindeki her IP adresini dinlemek için gereken dosya tanıtıcı
        ve bellek miktarını makul bir seviyede tutabilirsiniz. Bu sadece belli
        adresleri dinleyerek veya çok sayıda adresle eşleşen adres kalıpları
        kullanarak mümükün olabilir. Zaten, bir sebeple belli bir adresi dinleme
        ihtiyacı duyarsanız, diğer tüm adresleri de ayrı ayrı dinlemeniz
        gerekir. (Bir <code class="program"><a href="../programs/httpd.html">httpd</a></code> programı N-1 adresi dinlerken
        diğerleri kalan adresleri dinleyebilir.)</li>
    </ul>

    <p>Tek bir süreç kullanıyorsanız:</p>

    <ul>
      <li><code class="program"><a href="../programs/httpd.html">httpd</a></code> yapılandırmasının sanal konaklar arasında
        paylaşılmasına izin veriliyor demektir.</li>

      <li>Makine çok büyük miktarda isteği karşılayabilir ve ayrı ayrı
        süreçlerin çalışmasından kaynaklanan önemli başarım kayıpları
        yaşanmaz.</li>
    </ul>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multiple" id="multiple">Çok sayıda sürecin yapılandırılması</a></h2>

    <p>Her sanal konak için ayrı bir <code class="program"><a href="../programs/httpd.html">httpd</a></code> yapılandırması
      oluşturulur. Her yapılandırmada, o süreç tarafından sunulacak IP adresi
      (veya sanal konak) için <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
      yönergesi kullanılır. Örnek:</p>

    <div class="example"><p><code>
    Listen www.birkobi.dom:80
    </code></p></div>

    <p>Burada konak ismi yerine IP adresi kullanmanız önerilir (ayrıntılar için
      <a href="../dns-caveats.html">DNS ile ilgili konular</a> belgesine
      bakınız).</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="single" id="single">Sanal konaklar tek bir sürecin yapılandırılması</a></h2>

    <p>Bu durum için, ana sunucu ve sanal konakların tümüne gelen istekler tek
      bir <code class="program"><a href="../programs/httpd.html">httpd</a></code> süreci tarafından karşılanır. Yapılandırma
      dosyasında, her sanal konak için, farklı değerlere sahip <code class="directive"><a href="../mod/core.html#serveradmin">ServerAdmin</a></code>, <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>, <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>, <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code>ve<code class="directive"><a href="../mod/mod_log_config.html#transferlog">TransferLog</a></code>
      veya <code class="directive"><a href="../mod/mod_log_config.html#customlog">CustomLog</a></code> yönergeleri
      içeren ayrı birer <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code> bölümü
      oluşturulur. Örnek:</p>

    <div class="example"><p><code>
    &lt;VirtualHost www.birkobi.dom&gt;
    <span class="indent">
      ServerAdmin bilgi@posta.birkobi.dom<br />
      DocumentRoot /gruplar/birkobi/belgeler<br />
      ServerName www.birkobi.dom<br />
      ErrorLog /gruplar/birkobi/günlükler/hatalar.log<br />
      TransferLog /gruplar/birkobi/günlükler/erisim.log
    </span>
    &lt;/VirtualHost&gt;<br />
    <br />
    &lt;VirtualHost www.digerkobi.dom&gt;
    <span class="indent">
      ServerAdmin bilgi@posta.digerkobi.dom<br />
      DocumentRoot /gruplar/digerkobi/belgeler<br />
      ServerName www.digerkobi.dom<br />
      ErrorLog /gruplar/digerkobi/günlükler/hatalar.log<br />
      TransferLog /gruplar/digerkobi/günlükler/erisim.log
    </span>
    &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Burada konak isimlerinin yerlerine IP adreslerini kullanmanız önerilir
      (ayrıntılar için <a href="../dns-caveats.html">DNS ile ilgili konular</a>
      belgesine bakınız).</p>

    <p>Süreç oluşturmayı denetleyen yönergeler ve bir kaç başka yönerge dışında
      hemen hemen tüm yapılandırma yönergeleri <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code> bölümleri içinde kullanılabilir. Bir
      yönergenin <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code> bölümlerinde
      kullanılıp kullanılmayacağını öğrenmek için <a href="../mod/directives.html">yönerge dizinini</a> kullanarak yönergenin <a href="../mod/directive-dict.html#Context">Bağlam</a>’ına bakınız.</p>

    <p><a href="../suexec.html">suEXEC sarmalayıcısı</a> kullanıldığı takdirde
      <code class="directive"><a href="../mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesi de
      bir <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code> bölümü içinde
      kullanılabilir.</p>

    <p><em>GÜVENLİK:</em>Günlük dosyalarının yazılacağı yeri belirlerken,
      Apache’yi başlatan kullanıcıdan başka kimsenin yazamayacağı bir yerin
      seçilmesi bazı güvenlik risklerini ortadan kaldırmak bakımından önemlidir.
      Ayrıntılar için <a href="../misc/security_tips.html">güvenlik ipuçları</a>
      belgesine bakınız.</p>
</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                               vhosts/mass.html                                                                                    100644       0       0        52724 11256641270  11422  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma</h1>



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

</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#motivation">Amaç</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#overview">Genel Bakış</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#simple">Basit Devingen Sanal Konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#homepages">Sanal Kişisel Sayfalar Sistemi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#oldversion">Apache’nin eski sürümlerini kullanmak</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#simple.rewrite"><code>mod_rewrite</code> ile Kurumsal Müşteriler Sistemi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#homepages.rewrite"><code>mod_rewrite</code> ile Kişisel Sayfalar Sistemi</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#xtra-conf">Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="motivation" id="motivation">Amaç</a></h2>

    <p>Burada açıklanan teknikler, <code>httpd.conf</code> dosyanızın
      örnekteki gibi, aslında hemen hemen birbirinin aynı çok sayıda
      <code>&lt;VirtualHost&gt;</code> bölümü içereceği zaman yapılacaklar ile
      ilgilidir.
    </p>

<div class="example"><p><code>
NameVirtualHost 111.22.33.44<br />
&lt;VirtualHost 111.22.33.44&gt;<br />
<span class="indent">
    ServerName                 musteri-1.dom<br />
    DocumentRoot        /siteler/musteri-1.dom/belgeler<br />
    ScriptAlias  /cgi-bin/  /siteler/musteri-1.dom/cgi-bin<br />
</span>
&lt;/VirtualHost&gt;<br />
&lt;VirtualHost 111.22.33.44&gt;<br />
<span class="indent">
    ServerName                 musteri-2.dom<br />
    DocumentRoot        /siteler/musteri-2.dom/belgeler<br />
    ScriptAlias  /cgi-bin/  /siteler/musteri-2.dom/cgi-bin<br />
</span>
&lt;/VirtualHost&gt;<br />
# blah blah blah<br />
&lt;VirtualHost 111.22.33.44&gt;<br />
<span class="indent">
    ServerName                 musteri-N.dom<br />
    DocumentRoot        /siteler/musteri-N.dom/belgeler<br />
    ScriptAlias  /cgi-bin/  /siteler/musteri-N.dom/cgi-bin<br />
</span>
&lt;/VirtualHost&gt;
</code></p></div>

    <p>Ana fikir, tüm durağan <code>&lt;VirtualHost&gt;</code>
      yapılandırmalarını devingen olarak çalışan tek bir
      <code>&lt;VirtualHost&gt;</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>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="overview" id="overview">Genel Bakış</a></h2>

    <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 <code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> kullanarak oldukça kolay
      yapılabileceği gibi <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> 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 <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> 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 <code class="module"><a href="../mod/core.html">core</a></code> 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>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="simple" id="simple">Basit Devingen Sanal Konaklar</a></h2>

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

<div class="example"><p><code>
# 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
</code></p></div>

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

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="homepages" id="homepages">Sanal Kişisel Sayfalar Sistemi</a></h2>

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

<div class="example"><p><code>
# 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 />
</code></p></div>

    <p><code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> belgesinde daha karmaşık
      <code>VirtualDocumentRoot</code> örnekleri vardır.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="combinations" id="combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></h2>

    <p>Daha karmaşık ayarlamalar yaparak Apache’inin normal
      <code>&lt;VirtualHost&gt;</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>

<div class="example"><p><code>
UseCanonicalName Off<br />
<br />
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon<br />
<br />
&lt;Directory /siteler/kurumsal&gt;<br />
<span class="indent">
    Options FollowSymLinks<br />
    AllowOverride All<br />
</span>
&lt;/Directory&gt;<br />
<br />
&lt;Directory /siteler/bireysel&gt;<br />
<span class="indent">
    Options FollowSymLinks<br />
    AllowOverride None<br />
</span>
&lt;/Directory&gt;<br />
<br />
&lt;VirtualHost 111.22.33.44&gt;<br />
<span class="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 />
</span>
&lt;/VirtualHost&gt;<br />
<br />
&lt;VirtualHost 111.22.33.45&gt;<br />
<span class="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 />
</span>
&lt;/VirtualHost&gt;
</code></p></div>

    <div class="note"><h3>Bilginize</h3>
      <p>Eğer ilk <code>&lt;VirtualHost&gt;</code> bölümü bir <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> 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>
    </div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ipbased" id="ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></h2>

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

<div class="example"><p><code>
# 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 />
</code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="oldversion" id="oldversion">Apache’nin eski sürümlerini kullanmak</a></h2>

    <p>Yukarıdaki örnekler 1.3.6 sürümünden itibaren
      <code>mod_vhost_alias</code> modülünü kullanarak çalışırlar.
      <code>mod_vhost_alias</code> modülü içermeyen bir Apache sürümü
      kullanıyorsanız bu tekniği <code>mod_rewrite</code> modülünü kullanarak
      sadece <code>Host:</code> başlığını kullanan sanal konaklar için aşağıda
      açıklandığı gibi gerçekleştirebilirsiniz.</p>

    <p>Buna ek olarak günlük kayıtları ile ilgili olarak dikkat edilmesi
      gereken şeyler vardır. Apache 1.3.6 <code>%V</code> günlük biçemi
      yönergesinin içeren ilk sürümdür; 1.3.0 - 1.3.3 sürümlerinde aynı işi
      <code>%v</code> yapardı. 1.3.4 sürümünde buna eşdeğer bir şey yoktu.
      Apache’nin bu sürümlerinin hepsinde, müşterilerin yaptıkları yanlışların
      günlük kaydına yazılmasını sağlamak üzere, <code>UseCanonicalName</code>
      yönergesi <code>.htaccess</code> dosyalarında bulunabiliyordu. Bu
      bakımdan yapılacak en iyi şey, <code>Host:</code> başlığını doğrudan
      günlük kaydına geçirmek için <code>%{Host}i</code> yönergesini
      kullanmaktır; böylece ardına <code>%V</code> ile sağlanmayan
      <code>:port</code> yönergesinin eklenebileceğine dikkat ediniz.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="simple.rewrite" id="simple.rewrite"><code>mod_rewrite</code> ile Kurumsal Müşteriler Sistemi</a></h2>

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

<div class="example"><p><code>
# 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 />
&lt;Directory /siteler/hosts&gt;<br />
<span class="indent">
    # ScriptAlias için yaptıklarımızla CGI betiklerini<br />
    # çalışmaya zorlayamayacağımızdan ExecCGI burada gerekli.<br />
    Options FollowSymLinks ExecCGI<br />
</span>
&lt;/Directory&gt;<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 MIME türü isteyelim.<br />
RewriteCond  %{REQUEST_URI}  ^/cgi-bin/<br />
RewriteRule  ^/(.*)$  /siteler/${lowercase:%{SERVER_NAME}}/cgi-bin/$1  [T=application/x-httpd-cgi]<br />
<br />
# Bu kadar!
</code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="homepages.rewrite" id="homepages.rewrite"><code>mod_rewrite</code> ile Kişisel Sayfalar Sistemi</a></h2>

    <p>Burada da <a href="#homepages">ikinci örnekte</a> yaptıklarımızı
      yapıyoruz.</p>

<div class="example"><p><code>
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/
</code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="xtra-conf" id="xtra-conf">Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak</a></h2>

    <p>Burada, sanal konak isimlerinden belge kök dizini elde ederken
      <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> 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>

<div class="example"><p><code>
musteri-1.dom  /siteler/kurumsal/1<br />
musteri-2.dom  /siteler/kurumsal/2<br />
# ...<br />
musteri-N.dom  /siteler/kurumsal/N<br />
</code></p></div>

    <p><code>httpd.conf</code> dosyamız da şunları içerecektir:</p>

<div class="example"><p><code>
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
</code></p></div>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                            vhosts/name-based.html                                                                              100644       0       0        41122 11256641270  12441  0                                                                                                    ustar                                                                        0       0                                                                                                                                                                         <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>İsme Dayalı Sanal Konaklar - Apache HTTP Sunucusu</title>
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.2</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../index.html">Sürüm 2.2</a> &gt; <a href="./index.html">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>İsme Dayalı Sanal Konaklar</h1>


    <p>Bu belgede isme dayalı sanal konakların ne zaman, nasıl kullanılacakları
      açıklanmıştır.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#namevip">İsme dayalı ve IP’ye dayalı Sanal Konaklar</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#using">İsme Dayalı Sanal Konakların Kullanımı</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#compat">Artık Tarihe Karışmış Tarayıcılarla Uyumluluk</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="ip-based.html">IP Adresine Dayalı Sanal Konaklar</a></li><li><a href="details.html">Konak Eşlemenin Derinliğine İncelenmesi</a>
</li><li><a href="mass.html">Devingen olarak Yapılandırılan Kütlesel Sanal
Barındırma</a></li><li><a href="examples.html">Çok kullanılan sanal konak yapılandırma
örnekleri</a></li><li><a href="examples.html#serverpath">ServerPath yapılandırma örneği</a>
</li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="namevip" id="namevip">İsme dayalı ve IP’ye dayalı Sanal Konaklar</a></h2>

    <p>IP’ye dayalı sanal konaklarda sunulacak sanal konağı doğru tespit
      edebilmek için bağlantının yapıldığı IP adresine bakılır. Bu bakımdan her
      konak için ayrı bir IP adresine gereksinim vardır. İsme dayalı sanal
      konaklarda ise sunucu, istemcinin HTTP başlığının bir parçası olarak
      gönderdiği konak adını kullanır. Bu teknikte aynı IP adresini çok sayıda
      farklı konak kullanabilir.</p>

    <p>İsme dayalı sanal barındırma nispeten daha kolaydır, çünkü her konak
      ismini doğru IP adresiyle eşlemek için DNS sunucunuzu yapılandırdıktan
      sonra Apache HTTP sunucusunu farklı konak isimlerini tanıyacak şekilde
      yapılandırmanız yeterli olur. İsme dayalı sanal barındırma ayrıca zaten
      kıt olan IP adreslerine talebi de azaltır. Bu nedenle, IP’ye dayalı sanal
      konakları kullanmanızı gerektirecek çok özel bir sebep olmadıkça isme
      dayalı sanal konaklar kullanmalısınız. IP’ye dayalı sanal konakların
      kullanımını gerektirebilecek bazı durumlar:</p>

    <ul>
        <li>Bazı tarihi istemciler isme dayalı sanal konaklarla uyumlu değildir.
          İsme dayalı sanal konakların çalışması için istemcinin HTTP Host
          başlığı göndermesi gerekir. Bu da HTTP/1.1 desteği gerektirir.
          Günümüzdeki HTTP/1.0 istemcileri bir eklenti olarak HTTP/1.1’i de
          desteklemektedir. Tarihi eser haline gelmiş HTTP/1.1 desteği
          bulurmayan eski istemcileri hala isme dayalı sanal konaklarla
          desteklemek isterseniz bu belgenin sonunda bunu mümkün kılabilecek bir
          tekniğe yer verilmiştir.</li>

        <li>İsme dayalı sanal konaklar SSL portokolünün doğası gereğince SSL’li
          güvenli sunucular için kullanılamazlar.</li>

        <li>Bazı işletim sistemlerinin ve ağ donanımlarının gerçekleştirdiği
          band genişliği yönetim teknikleri IP adresleri farklı olmadığı sürece
          konaklar arasında ayrım yapamazlar.</li>
    </ul>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="using" id="using">İsme Dayalı Sanal Konakların Kullanımı</a></h2>

<table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code></li><li><code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code></li><li><code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code></li><li><code class="directive"><a href="../mod/core.html#servername">ServerName</a></code></li><li><code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code></li><li><code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code></li></ul></td></tr></table>

    <p>İsme dayalı sanal konakları kullanmak için, bu konaklar için istekleri
      kabul edecek sunucuya IP adresini (ve muhtemelen portu da)
      belirtmelisiniz. Bu işlem <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> yönergesiyle yapılır. Normal
      şartlar altında sunucu üzerinde bütün IP adreslerinin kullanılması
      gerekir; bunun için <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>
      yönergesine argüman olarak <code>*</code> belirtebilirsiniz. Çok sayıda
      port kullanmayı planlıyorsanız (SSL çalıştırmak gibi), argümana
      <code>*:80</code> şeklinde port ekleyebilirsiniz. Yalnız, <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> yönergesinde bir IP adresi
      belirtmiş olmakla sunucunun kendiliğinden o IP adresini dinlemeyeceğine
      dikkat ediniz. Bu konuda ayrıntılı bilgi edinmek için <a href="../bind.html">Apache’nin kullanacağı adreslerin ve portların
      ayarlanması</a> belgesine bakınız. Ayrıca, sunucuda, burada belirttiğiniz
      IP adresine sahip bir ağ arabirimi olmalıdır.</p>

    <p>Sonraki adım sunacağınız her konak için ayrı bir <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü oluşturmaktır.
      <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
      yönergesinin argümanı ile eşleşen bir <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> yönergesi tanımlanmış olmalıdır
      (değer normalde "*:80" olacaktır). Her <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü içinde sunulan konağı
      belirtmek üzere en azından bir adet <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> yönergesine ve konak içeriğinin dosya
      sisteminde bulunduğu yeri gösteren bir <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> yönergesine
      ihtiyacınız olacaktır.</p>

    <div class="note"><h3>Ana konağı unutmayın</h3>
        <p>Mevcut sitenize sanal konaklar eklerseniz, mevcut siteniz için de bir
          <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü
          oluşturmalısınız. Bu sanal konak bölümü içinde kullanacağınız
          <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> ve <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> yönergelerinin argümanları, bu
          yönergelerin  sunucu geneli için belirttiğiniz değerlerini
          içermelidir. Bu sanal konağı yapılandırma dosyanızdaki ilk sanal konak
          yapın ki, öntanımlı konak olsun.</p>
    </div>

    <p>Örnek olarak, <code>www.biralan.tld</code> adresinden sitenizi sunmakta
      olduğunuzu ve bunun yanına aynı IP adresini kullanan
      <code>www.digeralan.tld</code> sanal konağını eklemek istediğinizi
      varsayalım. Bunun için <code>httpd.conf</code> dosyanıza basitçe şu
      satırları ekleyebilirsiniz:</p>

    <div class="example"><p><code>
        NameVirtualHost *:80<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <span class="indent">
            ServerName www.biralan.tld<br />
            ServerAlias biralan.tld *.biralan.tld<br />
            DocumentRoot /siteler/biralan<br />
        </span>
        &lt;/VirtualHost&gt;<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <span class="indent">ServerName www.digeralan.tld<br />
            DocumentRoot /siteler/digeralan<br />
        </span>
        &lt;/VirtualHost&gt;<br />
    </code></p></div>

    <p>İsterseniz, <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> ve
      <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
      yönergelerinde argüman olarak <code>*</code> yerine doğrudan bir IP adresi
      belirtebilirsiniz. Hatta, daha sonra, isme dayalı sanal konakları bir IP
      adresinden ve IP’ye dayalı olanları veya isme dayalı diğer bir sanal konak
      grubunu diğer IP adreslerinden sunmak isteyebilirsiniz.</p>

    <p>Çoğu sunucunun birden fazla isim ile erişilebilir olması istenir. Bu,
      <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü
      içine bir <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> yönergesi
      yerleştirmek suretiyle mümkün olur. Örneğin yukarıdaki örnekte,
      kullanıcıların aynı siteye farklı isimlerle erişmelerini mümkün kılmak
      için bölüm içine şu satırı ekleyebilirsiniz:</p>

    <div class="example"><p><code>
        ServerAlias biralan.tld *.biralan.tld
    </code></p></div>

    <p>Böylece <code>biralan.tld</code> alanındaki tüm konaklar için gelen
      isteklere <code>www.biralan.tld</code> sanal konağından hizmet sunulmuş
      olur. Konak isimleriyle eşleşmek üzere dosya ismi kalıp karakterleri
      <code>*</code> ve <code>?</code> kullanılabilir. Şüphesiz bu isimleri sırf
      <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> veya
      <code>ServerAlias</code> yönergesinde belirtmiş olmakla bu isimleri
      erişilebilir kılamazsınız. Öncelikle, bu isimleri sunucunuzdaki IP
      adresleriyle eşlemek üzere yapılandıracağınız bir DNS sunucunuz
      olmalıdır.</p>

    <p>Son olarak, sanal konak yapılandırmanıza, <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümlerinin içine başka yönergeler
      yerleştirerek ince ayar çekebilirsiniz. Çoğu yönerge bu bölümlere
      yerleştirilebilir ve sadece o sanal konakla ilgili yapılandırmayı
      değiştirmek için kullanılabilir. Belli bir yönergenin sanal konak
      bölümlerinde kullanılıp kullanılmayacağını yönergenin açıklamasında <a href="../mod/directive-dict.html#Context">Bağlam</a> satırına bakarak
      öğrenebilirsiniz. <em>Ana sunucu bağlamındaki</em> (<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümleri dışındaki)
      yapılandırma yönergelerinden sadece sanal konak bölümlerinde geçersiz
      kılınmamış olanlar kullanılacaktır.</p>

    <p>Sunucuya bir istek geldiğinde, sunucu önce IP adresiyle eşleşmesi olası
      <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> bölümleri var mı diye
      bakar. Varsa, IP adresini eşleştirmek için <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> bölümlerine tek tek bakar ve
      istenen konak ismi ile eşleşen bir <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> veya <code>ServerAlias</code> yönergesi bulmaya
      çalışır. Bir tane bulduğunda, sunucu için onun yapılandırmasını kullanır.
      İsimle eşleşen bir sanal konak bulamazsa IP adresiyle eşleşen <strong>ilk
      sanal konağın</strong> yapılandırmasını kullanır.</p>

    <p>Bir önkabul olarak yapılandırma dosyasında rastlanan ilk sanal konak
      <em>öntanımlı</em> sanal konaktır. IP adresi bir sanal konakla eşleştiği
      takdirde <em>ana sunucunun</em> <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> değeri <strong>asla</strong> kullanılmayacaktır.
      Sanal konaklardan hiçbiriyle eşleşmeyen istekler için özel bir
      yapılandırmanız olsun isterseniz, bu yapılandırmayı yapılandırma
      dosyanızdaki ilk <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümüne yerleştirmeniz
      yetecektir.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compat" id="compat">Artık Tarihe Karışmış Tarayıcılarla Uyumluluk</a></h2>

    <p>Evvelce de bahsedildiği gibi, isme dayalı sanal konakların gerektiği gibi
      çalışması için gerekli veriyi göndermeyen bazı istemciler vardır. Bu
      istemcilere daima o IP adresinin yapılandırma dosyasındaki ilk sanal
      konağının (isme dayalı <cite>başat</cite> sanal konak) sayfaları
      gönderilir.</p>

    <div class="note"><h3>Ne kadar eski?</h3>
    <p>Lütfen dikkat edin, eski deyince gerçekten de antika demek istiyoruz.
      Günümüzde bu tür tarayıcılara rastlamanız neredeyse imkansızdır. Günümüz
      tarayıcılarının hepsi isme dayalı sanal konakların gerektirdiği
      <code>Host</code> başlığını gönderirler.</p>
    </div>

    <p>Olayı fazla germeden <code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code>
      yönergesini kullanarak sorunun çevresinden dolanmak mümkündür:</p>

    <p>Örnek yapılandırma:</p>

    <div class="example"><p><code>
        NameVirtualHost 111.22.33.44<br />
        <br />
        &lt;VirtualHost 111.22.33.44&gt;<br />
        <span class="indent">
            ServerName www.biralan.tld<br />
            ServerPath /biralan<br />
            DocumentRoot /siteler/biralan<br />
        </span>
        &lt;/VirtualHost&gt;<br />
    </code></p></div>

    <p>Bu ne anlama geliyor? Anlamı, "<code>/biralan</code>" ile başlayan her
      URI isteği <code>www.biralan.tld</code> sanal konağı tarafından sunulacak,
      demektir. Yani, tüm istemcilerin
      <code>http://www.biralan.tld/biralan/</code> olarak eriştiği yere
      <code>Host:</code> başlığı gönderen istemciler
      <code>http://www.biralan.tld/</code> olarak erişirler.</p>

    <p>Bunu gerçekleştirebilmek için başat sanal konağın baş sayfasına
      <code>http://www.biralan.tld/biralan/</code> için bir bağ koyduktan sonra
      sanal konağın sayfalarında ya tamamen göreli bağlar
      ("<code>dosya.html</code>", "<code>../simgeler/resim.png</code>" gibi)
      veya <code>/biralan/</code> ile öncelenmiş bağlar
      ("<code>http://www.biralan.tld/biralan/muht/dosya.html</code>" veya
      "<code>/biralan/muht/dosya.html</code>" gibi) kullanın.</p>

    <p>Bu işlem biraz disiplin gerektirse de bu yazılanlara sıkı sıkıya bağlı
      kalarak hem eski hem de yeni tarayıcıların sayfalarınızı doğru
      görüntülemesini sağlamış olursunuz.</p>

</div></div>
<div id="footer">
<p class="apache">Copyright 2009 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
<p class="menu"><a href="../mod/index.html">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/index.html">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
</body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              uşturmalısınız. Bu sanal konak bölümü içinde kullanacağınız
          <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> ve <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> yönergelerinin argümanları, bu
          yönergelerin  sunucu geneli için belirttiğiniz değerlerini
          içermelidir. Bu sanal konağı yapılandırma dosyanızdaki ilk sanal konak
          yapın ki, öntanımlı konak olsun.</p>
    </div>

    <p>Örnek olarak, <code>www.biralan.tld</code> adresinden sitenizi sunmakta
      olduğunuzu ve bunun yanına aynı IP adresini kullanan
      <code>www.digeralan.tld</code> sanal konağını eklemek istediğinizi
      varsayalım. Bunun için <code>httpd.conf</code> dosyanıza basitçe şu
      satırları ekleyebilirsiniz:</p>

    <div class="example"><p><code>
        NameVirtualHost *:80<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <span class="indent">
            ServerName www.biralan.tld<br />
            ServerAlias biralan.tld *.biralan.tld<br />
            DocumentRoot /siteler/biralan<br />
        </span>
        &lt;/VirtualHost&gt;<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <span class="indent">ServerName www.digeralan.tld<br />
            DocumentRoot /siteler/digeralan<br />
        </span>
        &lt;/VirtualHost&gt;<br />
    </code></p></div>

    <p>İsterseniz, <code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code> ve
      <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
      yönergelerinde argüman olarak <code>*</code> yerine doğrudan bir IP adresi
      belirtebilirsiniz. Hatta, daha sonra, isme dayalı sanal konakları bir IP
      adresinden ve IP’ye dayalı olanları veya isme dayalı diğer bir sanal konak
      grubunu diğer IP adreslerinden sunmak isteyebilirsiniz.</p>

    <p>Çoğu sunucunun birden fazla isim ile erişilebilir olması istenir. Bu,
      <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> bölümü
      içine bir <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> yönergesi
      yerleştirmek suretiyle mümkün olur. Örneğin yukarıdaki örnekte,
      kullanıcıların aynı siteye farklı isimlerle erişmelerini mümkün kılmak
      için bölüm içine şu satırı ekleyebilirsiniz:</p>

    <div class="example"><p><code>
        ServerAlias biralan.tld *.biralan.tld
    </code></p></div>

    <p>Böylece <code>biralan.tld</code> alanındaki tüm konaklar için gelen
      isteklere <code>www.biralan.tld</code> sanal konağından hizmet sunulmuş
      olur. Konak isimleriyle eşleşmek üzere dosya ismi kalıp karakterleri
      <code>*</code> ve <code>?</code> kullanılabilir. Şüphesiz bu isimleri sırf
      <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> veya
      <code>ServerAlias</code> y