Apache HTTP Sunucusu Sürüm 2.2

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.
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.
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.
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ü.
Sunucudan NCSA kodlu iletiler yerine
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.
Apache, buna olanak vermek için CGI benzeri yeni ortam değişkenleri tanımlamıştır:
        REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap,
            image/jpeg
        REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05
            9000/712)
        REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
        REDIRECT_QUERY_STRING=
        REDIRECT_REMOTE_ADDR=121.345.78.123
        REDIRECT_REMOTE_HOST=ooh.ahhh.dom
        REDIRECT_SERVER_NAME=batti.balik.yan.gider.edu
        REDIRECT_SERVER_PORT=80
        REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
        REDIRECT_URL=/cgi-bin/hatalar.pl
      
REDIRECT_ önekine dikkat edin.
Yeni adrese (hedefin bir CGI betiği veya SSI sayfası olduğu
        kabulüyle) en azından REDIRECT_URL ve
        REDIRECT_QUERY_STRING 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 harici yönlendirmeyi
        ErrorDocument yönergesi
        üzerinden yapıyorsanız bunlara None değeri
        atanacaktır. (Yönlendirme adresi http: ile başlıyorsa
        adres aynı sunucuya ait olsa bile bu bir harici yönlendirme olarak
        ele alınır.)
ErrorDocument yönergesinin
      .htaccess dosyalarında kullanılması sadece AllowOverride yönergesine uygun bir değer
      atanmışsa mümkündür.
Bazı örnekler:
      ErrorDocument 500 /cgi-bin/hata-kurtarma 
      ErrorDocument 500 "Pardon, galiba bizim betik hata verdi." 
      ErrorDocument 500 http://xxx/ 
      ErrorDocument 404 /ozuru_kabahatinden_buyuk/yok.html 
      ErrorDocument 401 /Uyeler/NASIL_uye_olunur.html
    
Burada sözdizimi şöyledir:
      ErrorDocument <3-rakamlı-kod> <eylem>
    
eylem şunlardan biri olabilir:
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.
Yönlendirme yapılan betikte standart CGI değişkenleri kullanılırdı. Yönlendirmenin kaynağı ile ilgili bir belirtiye rastlanmazdı.
Yönlendirme yapılan betikte kullanılmak üzere özel olarak
        tanımlanmış ortam değişkenleri vardır. Her değişkenin ismi
        REDIRECT_ ile başlar. REDIRECT_ ortam
        değişkenleri, yönlendirme öncesinde tanımlanmış CGI ortam
        değişkenlerinin isimlerinin başına REDIRECT_ öneki
        getirilerek oluşturulur. Yani, HTTP_USER_AGENT değişkeni
        REDIRECT_HTTP_USER_AGENT haline gelir. Bunlara ek
        olarak, betiğe olayın izini sürmekte yardımcı olması için
        REDIRECT_URL ve REDIRECT_STATUS
        değişkenleri tanımlanmıştır. Erişim günlüğüne özgün adresle birlikte
        yönlendirme adresi de kaydedilir.
Eğer ErrorDocument 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
        "Status:" başlık alanına yer verilmesi önerilir.
        Örneğin, bir Perl betiği şunları içerebilirdi:
        ... 
        print  "Content-type: text/html; charset=UTF-8\n"; 
        printf "Status: %s durumu saptandı.\n", $ENV{"REDIRECT_STATUS"}; 
        ...
      
Eğer betik,  404 Not Found gibi, belli bir
        hata durumunu ele almaya adanmışsa duruma özel kod ve hata metni
        kullanılabilir.
Eğer yanıt, (istemci taraflı yönlendirme yapılırken) bir
        Location: başlığı da içeriyorsa betiğin çıktıya uygun
        bir Status: başlığı (302 Found gibi)
        eklemesinin gerekli oluşuna dikkat ediniz. Aksi takdirde,
        Location: başlığı etkisiz olabilir.