<?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: 421174 -->
<!-- =====================================================
 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, 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>
  </summary>

  <section id="behavior">
    <title>Davranış</title>

    <section>
      <title>Eski Davranış</title>

      <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>
    </section>

    <section>
      <title>Yeni Davranış</title>

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

      <example>
        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
      </example>

      <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
        <directive module="core">ErrorDocument</directive> 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>
    </section>
  </section>

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

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

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

    <example>
      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
    </example>

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

    <example>
      ErrorDocument &lt;3-rakamlı-kod&gt; &lt;eylem&gt;
    </example>

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

    <ul>
      <li>Gösterilecek metin. Metnin başına bir tırnak imi (") konmalıdır. (<em>Bu tırnak öneki çıktıda gösterilmez.</em>)</li>

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

      <li>Yönlendirmenin yapılacağı dahili adres.</li>
    </ul>
  </section>

  <section id="custom">
    <title>Özel Hata Yanıtları ve Yönlendirme</title>

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

    <section>
      <title>Eski Davranış</title>

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

    <section>
      <title>Yeni Davranış</title>

      <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 <directive module="core">ErrorDocument</directive> 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>

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

      <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>
    </section>
  </section>
</manualpage>
