<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
<!-- English Revision: 1741841 -->
<!-- =====================================================
 Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
   Reviewed by: Orhan Berent <berent belgeler.org>
========================================================== -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="custom-error.xml.meta">

  <title>Hata Yanıtlarının Kişiselleştirilmesi</title>

  <summary>

    <p>Apache HTTP Sunucusu 4xx veya 5xx HTTP durum kodları ile ilgili
      olaylarda soysal hata yanıtları üretse de bu yanıtlar site
      kullanıcılarına aşırı sade, bilgi vermez ve hatta korkutucu gelebilir.
      Daha dostça yazılmış, İngilizce değil de kendi dilinizde ve belki
      sayfalarınızın yerleşimine uygun daha hoş satırlarda özel hata yanıtları
      üretmek isteyebilirsiniz.</p>

    <p>Kişiselleştirilmiş hata yanıtları, bir hata durumuna göre tasarlanmış
      herhangi bir HTTP durum kodu (yani 4xx ve 5xx kodlarından biri) için
      tanımlanabilir.</p>

    <p>Ek olarak bir değer kümesi de sağlanmıştır. Böylece hata belgeleri, <a
      href="howto/ssi.html">Sunucu taraflı İçerik Yerleştirme</a> kullanılarak
      bu değişkenlerin değerlerine göre özelleştirilebilir. İsterseniz bunun
      yerine bir CGI programı veya devingen bir eylemci (PHP, mod_perl, vs.)
      kullanarak da bu değişkenlerin değerlerine göre hata sayfalarınızı
      üretebilirsiniz.</p>

  </summary>

  <section id="configuration"><title>Yapılandırma</title>

    <p>Kişiselleştirilmiş hata belgeleri <directive module="core"
      >ErrorDocument</directive> yönergesi kullanılarak yapılandırılabilir. Bu
      yönerge küresel bağlamda olabileceği gibi sanal konak ve dizin
      bağlamlarında da kullanılabilir. <directive
      module="core">AllowOverride</directive> yönergesine <code>FileInfo</code>
      atanarak <code>.htaccess</code> dosyalarında da kullanılabilir.</p>

    <highlight language="config">
ErrorDocument 500 "Pardon, galiba bizim betik hata verdi."
ErrorDocument 500 /cgi-bin/hata-kurtarma
ErrorDocument 500 http://error.example.com/server_error.html
ErrorDocument 404 /ozuru_kabahatinden_buyuk/yok.html
ErrorDocument 401 /Uyeler/NASIL_uye_olunur.html
    </highlight>

    <p><code>ErrorDocument</code> yönergesinin sözdizimi:</p>

    <highlight language="config">
ErrorDocument &lt;3-rakamlı-kod&gt; &lt;eylem&gt;
    </highlight>

    <p><var>eylem</var> şunlardan biri olabilir:</p>

    <ol>
      <li>Yönlendirmenin yapılacağı dahili adres (<var>eylem</var> bir "/" ile
        başlıyorsa).</li>
      <li>Yönlendirmenin yapılacağı harici adres (<var>eylem</var> geçerli bir
        URL ise).</li>
      <li>Gösterilecek metin (yukardakilerin hiçbiri yoksa). Birden fazla
        sözcük içeriyorsa tırnak (") içine alınmalıdır.</li>
    </ol>

    <p>Yerel bir adrese yönlendirme yapılırken ek ortam değişkenleri de
      atanarak yanıt daha da özelleştirilebilir. Bunlar harici URL'lere
      gönderilmez.</p>

  </section>

  <section id="variables"><title>Kullanılabilen Değişkenler</title>

      <p>Hata durumunu açıklayacak veya hata günlüğüne daha açıkça
        kaydedilebilecek bazı bilgilerin aktarılması koşuluyla, başka bir
        adrese yönlendirme kullanışlı olabilir</p>

      <p>Hata yönlendirmesi yapılırken bunu sağlamak için ek ortam değişkenleri
        tanımlanır. Bu değişkenlerin isimleri, özgün istekle sağlanan
        başlık isimlerinin  önüne 'REDIRECT_' dizgesi getirilerek üretilir.
        Böylece özgün istek bağlamından hata belgesi üretilebilir.</p>

      <p>Örneğin, aşağıdaki gibi, daha yararlı olacak ek ortam değişkenleri
        alabilirsiniz.</p>

      <example>
        REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png<br />
        REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8<br />
        REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin<br />
        REDIRECT_QUERY_STRING=<br />
        REDIRECT_REMOTE_ADDR=121.345.78.123<br />
        REDIRECT_REMOTE_HOST=client.example.com<br />
        REDIRECT_SERVER_NAME=www.example.edu<br />
        REDIRECT_SERVER_PORT=80<br />
        REDIRECT_SERVER_SOFTWARE=Apache/2.2.15<br />
        REDIRECT_URL=/cgi-bin/buggy.pl
      </example>

      <p><code>REDIRECT_</code> ortam değişkenleri, yönlendirme öncesi varolan
        ortam değişkenlerinden üretilir. Bunlar önlerine <code>REDIRECT_</code>
        getirilerek yeniden isimlendirilir. Örneğin,
        <code>HTTP_USER_AGENT</code> değişkeni
        <code>REDIRECT_HTTP_USER_AGENT</code> haline gelir.</p>

      <p><code>REDIRECT_URL</code>, <code>REDIRECT_STATUS</code> ve
        <code>REDIRECT_QUERY_STRING</code> mutlaka atanır. Diğer başlıklarla
        ilgili olanlar ise hata durumu öncesinde mevcut oldukları takdirde
        üretilirler.</p>

      <p>Eğer <directive module="core">ErrorDocument</directive> hedefi bir
        <em>harici</em> yönlendirme ise bunların <strong>hiçbiri</strong>
        üretilmez (sunucunun bulunduğu konağı hedeflese bile <code>http:</code>
        ile başlayan herşey harici yönlendirme sayılır).</p>
  </section>

  <section id="custom"><title>Özel Hata Yanıtları</title>

      <p>Hata yanıtınızı üretmek için sunucu taraflı içerik yerleştirme, bir
        CGI betiği veya başka bir eylemciyi devingen eylemci olarak
        kullanıyorsanız, bu yanıtı özelleştirmek için bu kullanıma özel
        üretilmiş ortam değişkenlerini kullanmak isteyebilirsiniz.</p>

      <p><directive module="core">ErrorDocument</directive> yönergesi bir CGI
        betiğine bir yerel 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 verilmelidir. Örneğin, bir
        Perl betiği şunları içerebilirdi:</p>

      <highlight language="perl">
...
print  "Content-type: text/html\n";
printf "Status: %s durumu saptandı.\n", $ENV{"REDIRECT_STATUS"};
...
      </highlight>

      <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>) eklemesinin
        gerekli oluşuna dikkat ediniz. Aksi takdirde, <code>Location:</code>
        başlığı etkisiz olabilir.</p>

  </section>

  <section id="multi-lang"><title>Çok Dilli Özel Hata Belgeleri</title>

    <p>Apache HTTP Sunucusunun kurulumunda, 16 dile çevrilmiş özel hata
      iletileri belgeleri içeren bir dizin bulunmaktadır. Ayrıca,
      <code>conf/extra</code> yaplandırma dizininde bu özelliği etkin kılmak
      için yapılandırmaya dahil edilebilecek bir yapılandırma dosyası
      vardır.</p>

    <p>Sunucu yapılandırma dosyanızda şöyle satırlar görebilirsiniz:</p>

    <highlight language="config">
# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf
    </highlight>

    <p>Bu <code>Include</code> satırını açıklama olmaktan çıkarırsanız
      bu özelliği etkinleştirmiş olursunuz. Böylece, istemcinin tarayıcısında
      belirtilmiş dil tercihine uygun dil uzlaşımlı hata iletileri
      sağlanır.</p>

    <p>Ek olarak, bu belgeler çeşitli <code>REDIRECT_</code> değişkenleri
      içerir. Böylece, son kullanıcıya neler olduğu ve şimdi ne yapması
      beklendiği hakkında ek bilgiler sağlanabilir.</p>

    <p>Bu belgeleri istediğiniz kadar özelleştirebilir, kullanıcıya siteniz
      hakkında ve orada bulabilecekleri şeylere dair faydalı bilgiler de
      sağlayabilirsiniz.</p>

    <p>Bu özelliği kullanmak için <module>mod_include</module> ve
      <module>mod_negotiation</module> etkin kılınmalıdır.</p>

 </section>

</manualpage>
