1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
<?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: 1187986 -->
<!-- =====================================================
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>
<example>
ErrorDocument 500 "Pardon, galiba bizim betik hata verdi." <br />
ErrorDocument 500 /cgi-bin/hata-kurtarma<br />
ErrorDocument 500 http://error.example.com/server_error.html<br />
ErrorDocument 404 /ozuru_kabahatinden_buyuk/yok.html <br />
ErrorDocument 401 /Uyeler/NASIL_uye_olunur.html
</example>
<p><code>ErrorDocument</code> yönergesinin sözdizimi:</p>
<example>
ErrorDocument <3-rakamlı-kod> <eylem>
</example>
<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>
<example>
... <br />
print "Content-type: text/html\n"; <br />
printf "Status: %s durumu saptandı.\n", $ENV{"REDIRECT_STATUS"}; <br />
...
</example>
<p>Eğer betik, <code>404 Not 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 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>
<example>
# Multi-language error messages<br />
#Include conf/extra/httpd-multilang-errordoc.conf
</example>
<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>
|