]> granicus.if.org Git - apache/blob - docs/manual/content-negotiation.xml.tr
update for sync with English docs.
[apache] / docs / manual / content-negotiation.xml.tr
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
4 <!-- English Revision: 1029134 -->
5 <!-- =====================================================
6  Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7    Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
9
10 <!--
11  Licensed to the Apache Software Foundation (ASF) under one or more
12  contributor license agreements.  See the NOTICE file distributed with
13  this work for additional information regarding copyright ownership.
14  The ASF licenses this file to You under the Apache License, Version 2.0
15  (the "License"); you may not use this file except in compliance with
16  the License.  You may obtain a copy of the License at
17
18      http://www.apache.org/licenses/LICENSE-2.0
19
20  Unless required by applicable law or agreed to in writing, software
21  distributed under the License is distributed on an "AS IS" BASIS,
22  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  See the License for the specific language governing permissions and
24  limitations under the License.
25 -->
26
27 <manualpage metafile="content-negotiation.xml.meta">
28
29 <title>İçerik Uzlaşımı</title>
30
31 <summary>
32
33     <p>Apache HTTPD, içerik uzlaşımını HTTP/1.1 belirtiminde bahsedildiği şekliyle
34       destekler. Bir özkaynağın en iyi gösterimini, tarayıcının sağladığı
35       karakter kodlaması, karakter kümesi, dil, ortam türü gibi kullanıcı
36       tercihlerine bağlı olarak seçebilir. Ayrıca, tarayıcının kullanıcı
37       tercihlerini tam yansıtamadığı durumlarda istekleri daha akıllıca ele
38       alabilmeyi sağlayacak bir takım özelliklere de sahiptir.</p>
39
40     <p>İçerik uzlaşımı öntanımlı olarak derlenen
41       <module>mod_negotiation</module> modülü tarafından sağlanır.</p>
42 </summary>
43
44 <section id="about"><title>İçerik Uzlaşımı Hakkında</title>
45
46     <p>Bir özkaynağın bir çok farklı gösterimi olabilir. Örneğin, bir belgenin
47       farklı ortam türleri ve/veya farklı diller için gösterimleri olabilir.
48       En uygun seçimi yapmanın tek yolu kullanıcıya bir liste verip seçmesini
49       istemektir. Bununla birlikte sunucunun bu seçimi kendiliğinden yapması
50       da mümkündür. Tarayıcılar isteğin bir parçası olarak kullanıcı
51       tercihlerini de gönderdiğinden bu istendiği gibi çalışır. Örneğin bir
52       tarayıcı, kullanıcısınının mümkünse Fransızca içerik tercih ettiğini
53       yoksa İngilizce içeriğe de razı olabileceğini belirtebilirdi.
54       Tarayıcılar bu tercihleri başlıkta belirtirler. Tarayıcı sadece Türkçe
55       içerik istendiğini şöyle belirtebilirdi:</p>
56
57     <example>Accept-Language: tr</example>
58
59     <p>Bu tercihin yerine getirilebilmesininin sadece, desteklenen diller
60       arasında bu dilin varlığına ve istenen belgenin bu dilde bir
61       gösteriminin bulunmasına bağlı oluşuna dikkat ediniz.</p>
62
63     <p>Daha karmaşık bir istek örneği olarak, tarayıcının Fransızca ve
64       İngilizce içerik kabul etmeye ayarlandığını fakat Fransızcayı tercih
65       ettiğini ve çeşitli ortam türlerini kabul etmekle birlikte salt metin ve
66       diğer metin türlerinden ziyade HTML tercih ettiğini, ayrıca, diğer ortam
67       türleri üzerinde GIF veya JPEG tercih ettiğini fakat başka çare yoksa
68       her ortam türüne de izin verdiğini belirtiyor olsun:</p>
69
70     <example>
71       Accept-Language: fr; q=1.0, en; q=0.5<br />
72       Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg;
73       q=0.6, image/*; q=0.5, */*; q=0.1
74     </example>
75
76     <p>httpd, HTTP/1.1 belirtiminde tanımlanan şekliyle ‘sunucu yönetiminde’
77       içerik uzlaşımını destekler. <code>Accept</code>,
78       <code>Accept-Language</code>, <code>Accept-Charset</code> ve
79       <code>Accept-Encoding</code> istek başlıklarını tamamen destekler.
80       httpd ayrıca, RFC 2295 ve RFC 2296’da tanımlanan bir deneysel uzlaşım
81       olarak ‘şeffaf’ içerik uzlaşımını da destekler. Fakat ‘özellik
82       uzlaşımını’ bu RFC’lerde tanımlandığı gibi desteklemez.</p>
83
84     <p>Bir <strong>özkaynak</strong> bir URI (RFC 2396) tarafından betimlenen
85       kavramsal bir öğedir. Apache gibi bir HTTP sunucusu, ortam türü,
86       karakter kümesi, kodlama ve saire ile tanımlanmış bir bayt dizisi
87       şeklindeki her gösterimiyle, özkaynaklara kendi isim alanları dahilinde
88       erişim sağlar. Her özkaynağın aynı anda bir veya daha fazla gösterimi
89       mevcut olabileceği gibi hiç mevcut olmayabilir de. Eğer çok sayıda
90       gösterim mevcutsa, bu özkaynağın <strong>uzlaşılabilir</strong>
91       olduğundan ve her gösteriminin  bir <strong>çeşitlilik</strong>
92       oluşturduğundan bunun da uzlaşımın <strong>boyutlar</strong>ından
93       kaynaklandığından bahsedilebilir.</p>
94 </section>
95
96 <section id="negotiation"><title>httpd’de İçerik Uzlaşımı</title>
97
98     <p>Bir özkaynak üzerinde uzlaşılırken gösterim çeşitlerinin her biri
99       hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:</p>
100
101     <ul>
102       <li>Ya gösterim çeşitlerini içeren dosyaların isimleriyle eşleşmeyi
103         sağlayan bir tür eşlemi kullanılır (bir <code>*.var</code> dosyası
104         gibi).</li>
105
106       <li>Ya da sunucu örtük bir dosya ismi kalıbı eşleşmesinin ardından
107         sonuçlar arasından seçim yapar; buna ‘Çoklu Görünüm’ araması adı
108         verilir.</li>
109     </ul>
110
111    <section id="type-map"><title>Bir türeşlem dosyası kullanmak</title>
112
113     <p>Bir türeşlem dosyası, <code>type-map</code> eylemcisi ile ilişkili bir
114       belgedir (ya da eski httpd yapılandırmaları ile geriye uyumluluk için,
115       <code>application/x-type-map</code> <glossary>MIME türü</glossary>nde
116       bir belgedir). Bu özelliği kullanmak için, yapılandırmada bir tür
117       eşleyici olarak her dosya ismi uzantısı için bir <code>type-map</code>
118       eylemcisi tanımlamalısınız. Bu, sunucu yapılandırma dosyasında en iyi
119       şöyle yapılabilir:</p>
120
121     <example>AddHandler type-map .var</example>
122
123     <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
124       olmalı ve her gösterim çeşidi için bir girdi içermelidir; bu girdiler
125       ardarda belirtilen HTTP biçem başlık satırlarından oluşur. Farklı
126       gösterimlerin girdileri bir boş satırla diğerlerinden ayrılır. Aynı
127       girdi içinde boş satır kullanılamaz. Bir eşlem dosyasını bir birleşik
128       öğenin tamamı için bir girdi ile başlatmak adet olmuştur (ise de, bu
129       gerekli değildir, hele yoksayılacaksa hiç gerekli değildir). Eşlem
130       dosyası için aşağıda bir örnek verilmiştir. Dosya <code>misal</code>
131       isimli bir özkaynak hakkında olduğundan dosyaya <code>misal.var</code>
132       ismi verilebilir.</p>
133
134     <example>
135       URI: misal<br />
136     <br />
137       URI: misal.en.html<br />
138       Content-type: text/html<br />
139       Content-language: en<br />
140     <br />
141       URI: misal.fr.de.html<br />
142       Content-type: text/html;charset=iso-8859-2<br />
143       Content-language: fr, de<br />
144     </example>
145
146     <p>Ayrıca, <code>MultiViews</code> etkin olsa bile bir türeşlem dosyasının
147       dosya ismi uzantılarının taranmasına göre öncelik alacağına dikkat
148       ediniz. Eğer gösterimler bu örnekteki resim dosyasında olduğu gibi
149       farklı kaynak üstünlüklerine sahipseler, ortam türünün <code>qs</code>
150       parametresi kullanılarak kaynak üstünlükleri belirtilebilir: </p>
151
152     <example>
153       URI: misal<br />
154     <br />
155       URI: misal.jpeg<br />
156       Content-type: image/jpeg; <strong>qs=0.8</strong><br />
157     <br />
158       URI: misal.gif<br />
159       Content-type: image/gif; <strong>qs=0.5</strong><br />
160     <br />
161       URI: misal.txt<br />
162       Content-type: text/plain; <strong>qs=0.01</strong><br />
163     </example>
164
165     <p><code>qs</code> değerleri 0.000-1.000 değer aralığı içinde
166       belirtilebilir. 0.000 <code>qs</code> değerine sahip gösterimin asla
167       seçilmeyeceğine dikkat ediniz. Bir <code>qs</code> değeri belirtilmeyen
168       gösterimlerin kaynak üstünlüğü 1.000 kabul edilir. <code>qs</code>
169       parametresinin belirttiği değer istemcinin yeteneklerinden bağımsız
170       olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
171       Örneğin bir fotoğraf sözkonusu olduğunda bir JPEG dosyasının kaynak
172       üstünlüğü bir ASCII çiziminkinden yüksek olacaktır. Diğer taraftan özgün
173       resim bir ASCII çizim olduğu takdirde, ASCII çizim, bir JPEG gösterimine
174       göre öncelikli olacaktır. Bu nedenle <code>qs</code> değeri özkaynağın
175       doğasına bakarak belirlenir.</p>
176
177     <p>Tanınan başlıkların tam listesini <a
178       href="mod/mod_negotiation.html#typemaps" >mod_negotiation</a> modülünün
179       belgesinde bulabilirsiniz.</p>
180   </section>
181
182   <section id="multiviews"><title>Çoklu Görünümler</title>
183
184     <p><code>MultiViews</code>, <code>httpd.conf</code> dosyasındaki veya
185       (<directive module="core">AllowOverride</directive> yönergesinin
186       değerine bağlı olarak) <code>.htaccess</code> dosyalarındaki <directive
187       module="core" type="section">Directory</directive>, <directive
188       module="core" type="section">Location</directive> veya <directive
189       module="core" type="section">Files</directive> bölümleri içinde
190       <directive module="core">Options</directive> yönergeleri ile
191       belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
192       <code>Options All</code> yaparak <code>MultiViews</code> seçeneğini
193       etkin kılamazsınız; seçeneği ismiyle açıkça belirtmelisiniz.</p>
194
195     <p><code>MultiViews</code> şöyle etki eder: Sunucudan,
196       <code>MultiViews</code> seçeneğinin etkin olduğu <code>/bir/dizin</code>
197       dizininden <code>filanca</code> dosyası için bir istekte bulunulmuşsa
198       fakat dizinde bu dosya yoksa, sunucu dizin içeriğini
199       <code>filanca.*</code> dosyaları için tarar ve bu dosyalar için
200       istemcinin ismiyle talep ettiği ortam türlerini ve kodlamaları
201       kullanarak bir türeşlem dosyası uydurup bu gösterimler arasından
202       istemcinin gereksinimlerine en uygun gösterimi seçer.</p>
203
204     <p><code>MultiViews</code> ayrıca, sunucunun bir dizin içeriğini
205       listelemeye çalıştığı durumda <directive module="mod_dir"
206       >DirectoryIndex</directive> yönergesi ile belirtilen dosya için de bir
207       arama tertipleyebilir. Eğer yapılandırma dosyalarında</p>
208
209     <example>DirectoryIndex index</example>
210
211     <p>şeklinde bir atama varsa ve dizinde <code>index.html</code> ve
212       <code>index.html3</code> dosyaları varsa sunucu bunlar arasından hakem
213       sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
214       <code>index.cgi</code> mevcutsa sunucu sadece bu dosyayı
215       çalıştıracaktır.</p>
216
217     <p>Okunan dizinde bulunan dosyalar arasında <code>mod_mime</code>
218       tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
219       başlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
220       sonuç <directive module="mod_mime">MultiViewsMatch</directive>
221       yönergesiyle yapılan tanıma bağlı olur. Bu yönerge hangi diğer dosya
222       uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaşımla
223       ilintileneceğini belirler.</p>
224   </section>
225 </section>
226
227 <section id="methods"><title>Uzlaşım Yöntemleri</title>
228
229     <p>httpd’nin, bir türeşlem dosyası veya dizin içindeki bir dosya
230       sayesinde belli bir özkaynağın gösterim çeşitlerinin bir listesini elde
231       ettikten sonra ‘en uygun’ gösterime karar vermek için kullanabileceği
232       iki yöntem vardır. httpd’nin içerik uzlaşım özelliklerinin kullanımı
233       sırasında uzlaşımın nasıl yerine getirileceği ile ilgili ayrıntıları
234       bilmek aslında gerekli değildir. Bununla birlikte belgenin kalanında bu
235       konu açıklanmaya çalışılmıştır.</p>
236
237     <p>İki uzlaşım yöntemi vardır:</p>
238
239     <ol>
240       <li>Normal durumda <strong>sunucu yönetiminde httpd uzlaşım
241         algoritması</strong> kullanılır. Bu algoritma aşağıda ayrıntılı olarak
242         açıklanmıştır. Bu algoritma kullanıldığı zaman, httpd, en iyi sonuca
243         ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’.
244         httpd’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha
245         ayrıntılı açıklanmıştır.</li>
246
247       <li>İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın
248         kullanılmasını isterse <strong>şeffaf içerik uzlaşımı</strong>
249         kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi
250         konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç
251         tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır.
252         Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da
253         tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın
254         çalıştırılmasını httpd’den isteyebilir.</li>
255     </ol>
256
257   <section id="dimensions"><title>Uzlaşımın Boyutları</title>
258
259     <table>
260       <columnspec><column width=".15"/><column width=".85"/></columnspec>
261       <tr valign="top">
262         <th>Boyut</th>
263
264         <th>Açıklama</th>
265       </tr>
266
267       <tr valign="top">
268         <td>Ortam Türü</td>
269
270         <td>Tarayıcı ortam türü tercihlerini <code>Accept</code> başlık alanı
271           ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
272           olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüğüne
273           (<code>qs</code> parametresi) sahip olabilir.</td>
274       </tr>
275
276       <tr valign="top">
277         <td>Dil</td>
278
279         <td>Tarayıcı dil tercihlerini <code>Accept-Language</code> başlık
280           alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
281           olabilir. Gösterimler bir kaç dilde olabileceği gibi hiç bir dille
282           ilişkilendirimemiş de olabilir.</td>
283       </tr>
284
285       <tr valign="top">
286         <td>Kodlama</td>
287
288         <td>Tarayıcı kodlama tercihlerini <code>Accept-Encoding</code> başlık
289           alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
290           olabilir.</td>
291       </tr>
292
293       <tr valign="top">
294         <td>Karakter Kümesi</td>
295
296         <td>Tarayıcı karakter kümesi tercihlerini <code>Accept-Charset</code>
297           başlık alanı ile belirtir. Her öğenin kendine özgü bir üstünlük
298           katsayısı olabilir. Gösterim çeşitleri karakter kümesini ortam
299           türünün bir parametresi olarak belirtebilirler.</td>
300       </tr>
301     </table>
302   </section>
303
304   <section id="algorithm"><title>httpd Uzlaşım Algoritması</title>
305
306     <p>httpd, tarayıcıya döndürülecek en uygun gösterim çeşidini (varsa)
307       seçmek için aşağıdaki algoritmayı kullanabilir. Bu algoritma pek de
308       yapılandırılabilir değildir. Şöyle çalışır:</p>
309
310     <ol>
311       <li>Önce her uzlaşım boyutu için ilgili <em>Accept*</em> başlık alanına
312         bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer
313         boyutlardan bazıları için ilgili <em>Accept*</em> başlığı
314         uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim
315         çeşidi kalmasza 4. adıma atlanır.</li>
316
317       <li>‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç
318         sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan
319         geçemeyen bir gösterim çeşidi elenir.  Sınamaların bir aşamasında tek
320         bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur
321         ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki
322         sınamaya geçilir.
323
324         <ol>
325           <li><code>Accept</code> başlığındaki üstünlük katsayısı ile
326             gösterimin ortam türünde belirtilen kaynak üstünlüğünün çarpımı en
327             büyük olan gösterim çeşidi seçilir.</li>
328
329           <li>En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir.
330           </li>
331
332           <li>En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için
333             önce varsa <code>Accept-Language</code> başlığındaki dil
334             sıralamasına bakılır, aksi takdirde <code>LanguagePriority</code>
335             yönergesi ile atanmışsa oradaki dil sıralamasına bakılır.</li>
336
337           <li>En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü
338             sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri
339             seçilir.</li>
340
341           <li><code>Accept-Charset</code> başlık satırında belirtilene bakarak
342             en uygun karakter kümesine sahip gösterim çeşitleri seçilir.
343             Alenen dışlanmadıkça ISO-8859-1 kabul edilebilir karakter
344             kümesidir. <code>text/*</code> ortam türüne sahip gösterim
345             çeşitlerinden belli bir karakter kümesi ile ilişkilendirilmemiş
346             olanların karakter kümesinin ISO-8859-1 olduğu varsayılır.</li>
347
348           <li>ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim
349             çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler
350             seçilir.</li>
351
352           <li>En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı
353             tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri
354             varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim
355             çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar
356             seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da
357             sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.</li>
358
359           <li>En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.</li>
360
361           <li>Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem
362             dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden
363             okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine
364             sahip gösterimdir.</li>
365         </ol>
366       </li>
367
368       <li>Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu
369         artık yanıt olarak döndürülebilir. HTTP yanıt başlığı
370         <code>Vary</code>’ye uzlaşım boyutları atanır (tarayıcı ve
371         arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar)
372         ve algoritma sonlandırılır.</li>
373
374       <li>Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri
375         tarayıcı tarafından kabul edilebilir bulunmadığından dolayı).
376         Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406
377         durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’).
378         Ayrıca HTTP <code>Vary</code> başlığında gösterim çeşitliliğinin
379         boyutları belirtilir.</li>
380     </ol>
381   </section>
382 </section>
383
384 <section id="better"><title>Üstünlük Değerleriyle Oynamak</title>
385
386     <p>httpd bazen yukarıdaki httpd uzlaşım algoritmasının kesin sonucunun
387       beklenenden farklı olması için üstünlük değerleriyle oynar. Bunu tam ve
388       doğru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
389       etmek amacıyla yapar. Bazen günümüzün en tanınmış tarayıcıları bile çoğu
390       durumda yanlış bir seçimle sonuçlanmayacaksa <code>Accept</code> başlık
391       bilgilerini göndermemektedir. Eğer tarayıcı eksiksiz ve doğru bilgi
392       gönderirse httpd bu değerlerle oynamayacaktır.</p>
393
394   <section id="wildcards"><title>Ortam Türleri ve Dosyaismi Kalıpları</title>
395
396     <p><code>Accept:</code> istek başlığı ortam türü tercihlerini yansıtır.
397       Ayrıca, * bir dizge ile eşleşmek üzere "image/*" veya  "*/*" gibi ortam
398       türü kalıpları da içerebilir. Dolayısıyla şöyle bir istek,</p>
399
400     <example>Accept: image/*, */*</example>
401
402     <p>diğer türler gibi "image/" ile başlayan ortam türlerini kabul
403       edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak
404       elde etmek amacıyla hep bu tür kalıplar gönderirler. Örnek:</p>
405
406     <example>
407       Accept: text/html, text/plain, image/gif, image/jpeg, */*
408     </example>
409
410     <p>Bunun amacı, açıkça listelenmiş türlerin tercih edildiğini, fakat
411       farklı gösterimler varsa onların da kabul edilebileceğini belirtmektir.
412       Üstünlük değerlerini doğrudan kullanarak tarayıcılar gerçekte ne
413       istediklerini şuna benzer şekilde belirtebilirler:</p>
414
415     <example>
416       Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
417     </example>
418
419     <p>Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiştir,
420       dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduğu
421       varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düşük bir öncelik
422       belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden
423       hiçbirinin bulunmaması halinde diğer türler eşleşecektir.</p>
424
425     <p>Eğer <code>Accept:</code> başlığı <em>hiçbir</em> <code>q</code>
426       katsayısı içermiyorsa ve başlıkta "*/*" belirtilmişse, httpd istenen
427       davranışı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
428       "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
429       tercihli olur). Eğer  <code>Accept:</code> alanındaki her ortam türü bir
430       <code>q</code> katsayısı içeriyorsa bu özel değerler uygulanmaz.
431       Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
432       istekler umulduğu gibi işlem görecektir.</p>
433   </section>
434
435   <section id="exceptions"><title>Dil Uzlaşımında İstisnalar</title>
436
437     <p>httpd 2.0’dan itibaren, uzlaşım algoritmasına, bir eşleşme bulmak
438       konusunda algoritma başarılı olamadığı takdirde hoş bir son çareye izin
439       vermek için bazı istisnalar eklenmiştir.</p>
440
441     <p>İstemci sunucudan bir sayfa istediğinde, sunucu, tarayıcı tarafından
442       gönderilen <code>Accept-language</code> başlığıyla eşleşen tek bir sayfa
443       bulamadığı takdirde istemciye ya “Kabul edilebilir bir gösterim çeşidi
444       yok” ya da “Çok sayıda seçim belirtilmiş” yanıtını döndürür. Bu hata
445       iletilerinden kaçınmak için bu gibi durumlarda httpd
446       <code>Accept-language</code> başlığını yoksaymaya ayarlanabilir. Böylece
447       istemcinin isteğine tam olarak uymasa da bir belge sağlanır. Bu hata
448       iletilerinin birini veya her ikisini de geçersiz kılmak için <directive
449       module="mod_negotiation">ForceLanguagePriority</directive> yönergesi
450       kullanılabilir ve sunucunun kararını <directive
451       module="mod_negotiation">LanguagePriority</directive> yönergesine
452       dayanarak vermesi sağlanabilir.</p>
453
454     <p>Sunucu ayrıca, tam bir eşleşme bulunmadığı zaman lehçelerle de eşleşme
455       arayabilir. Örneğin, bir istemci Britanya İngilizcesi
456       (<code>en-GB</code>) ile yazılmış belgeler için istekte bulunursa,
457       sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
458       <code>en</code> olarak imlenmesine izin vermez. (Bir okuyucu Britanya
459       İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
460       <code>Accept-Language</code> başlığında <code>en</code>  değil de
461       <code>en-GB</code>’yi belirtmesinin hemen hemen daima bir yapılandırma
462       hatasına yol açacağına dikkat ediniz. Maalesef, mevcut istemcilerin çoğu
463       öntanımlı yapılandırmalarında buna benzer şeyler yapmaktadır.) Bununla
464       birlikte, başka bir dille eşleşme mümkün değilse ve sunucu “Kabul
465       edilebilir bir gösterim çeşidi yok” hatasını döndürmeye hazırsa veya
466       <directive module="mod_negotiation" >LanguagePriority</directive> son
467       çaresine ayarlanmışsa alt küme belirtimini yok sayacak ve
468       <code>en</code> belge isteklerine <code>en-GB</code> belgelerle yanıt
469       verecektir. httpd, lehçenin üyesi olduğu anadili, istemcinin kabul
470       edilebilir diller listesine örtük olarak düşük bir üstünlük değeri ile
471       ekler. Yalnız şuna dikkat edin, eğer istemci tercihini "en-GB; q=0.9,
472       fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
473       varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
474       uyumluluğu sağlamak ve düzgün yapılandırılmış istemcilerle gerektiği
475       gibi çalışabilmek için bu gereklidir.</p>
476
477     <p>Gelişmiş tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
478       sırasında, kullanıcının tercih ettiği dili saptamak için httpd 2.0.47
479       sürümünden beri <module>mod_negotiation</module> modülü
480       <code>prefer-language</code> <a href="env.html">ortam değişkenini</a>
481       tanımaktadır. Değişken mevcutsa ve uygun bir dil yaftası içeriyorsa
482       <module>mod_negotiation</module> uygun gösterimi seçmeyi deneyecektir.
483       Böyle bir gösterim çeşidi mevcut değilse normal uzlaşım işlemi
484       uygulanacaktır.</p>
485
486     <example><title>Örnek</title>
487       SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
488       Header append Vary cookie
489     </example>
490   </section>
491 </section>
492
493 <section id="extensions">
494   <title>Şeffaf İçerik Uzlaşımının Genişletilmesi</title>
495
496   <p>httpd, şeffaf içerik uzlaşımı protokolünü (RFC 2295) şöyle genişletir:
497     Sadece içerik kodlamasına özgü olmak üzere gösterim çeşidi listelerinde
498     gösterim çeşitlerini imlemek için yeni bir <code>{encoding ..}</code>
499     elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
500     listedeki kodlanmış gösterim çeşitlerini tanımak ve onları
501     <code>Accept-Encoding</code> başlık alanıyla ilgili olarak kabul
502     edilebilir kodlamalara aday gösterim çeşitleri olarak kullanmak üzere
503     genişletilmiştir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeşidi
504     seçiminin öncesinde hesaplanmış üstünlük katsayısını virgülden sonra beş
505     haneye yuvarlamaz.</p>
506 </section>
507
508 <section id="naming"><title>Hiperbağlar ve İsimlendirme Uzlaşımları</title>
509
510     <p>Eğer dil uzlaşımı kullanıyorsanız ve birden fazla dosya ismi uzantısına
511       sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz
512       düştüğü farklı isimlendirme yaklaşımlarında bulunabilirsiniz (ayrıntılar
513       için <a href="mod/mod_mime.html#multipleext">mod_mime</a> belgesine
514       bakınız).</p>
515
516     <p>Bir MIME türü uzantısına sahip bir dosyanın (<code>html</code> gibi),
517       kodlanmış bir gösterimi (<code>gz</code> gibi) mevcut olabilir. Bu
518       dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
519       (<code>en</code> gibi) olabilir.</p>
520
521     <p>Örnekler:</p>
522
523     <ul>
524       <li>misal.en.html</li>
525
526       <li>misal.html.en</li>
527
528       <li>misal.en.html.gz</li>
529     </ul>
530
531     <p>Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:</p>
532
533     <table border="1" cellpadding="8" cellspacing="0">
534       <columnspec><column width=".2"/><column width=".2"/>
535         <column width=".2"/></columnspec>
536       <tr>
537         <th>Dosya ismi</th>
538
539         <th>Geçerli Hiperbağ</th>
540
541         <th>Geçersiz Hiperbağ</th>
542       </tr>
543
544       <tr>
545         <td><em>misal.html.en</em></td>
546
547         <td>misal<br />
548          misal.html</td>
549
550         <td>-</td>
551       </tr>
552
553       <tr>
554         <td><em>misal.en.html</em></td>
555
556         <td>misal</td>
557
558         <td>misal.html</td>
559       </tr>
560
561       <tr>
562         <td><em>misal.html.en.gz</em></td>
563
564         <td>misal<br />
565          misal.html</td>
566
567         <td>misal.gz<br />
568          misal.html.gz</td>
569       </tr>
570
571       <tr>
572         <td><em>misal.en.html.gz</em></td>
573
574         <td>misal</td>
575
576         <td>misal.html<br />
577          misal.html.gz<br />
578          misal.gz</td>
579       </tr>
580
581       <tr>
582         <td><em>misal.gz.html.en</em></td>
583
584         <td>misal<br />
585          misal.gz<br />
586          misal.gz.html</td>
587
588         <td>misal.html</td>
589       </tr>
590
591       <tr>
592         <td><em>misal.html.gz.en</em></td>
593
594         <td>misal<br />
595          misal.html<br />
596          misal.html.gz</td>
597
598         <td>misal.gz</td>
599       </tr>
600     </table>
601
602     <p>Yukarıdaki tabloya bakarak hiperbağlarda bir dosya ismini uzantısız
603       olarak (<code>misal</code> gibi) kullanmanın daima mümkün olduğunu
604       farkedeceksiniz. Böylece bir belgenin asıl türünü gizleyebilir ve
605       sonradan bir hiperbağ değişikliği yapmaksızın örneğin
606       <code>html</code>’den <code>shtml</code> veya <code>cgi</code>’ye
607       geçebilirsiniz.</p>
608
609     <p>Hiperbağlarda MIME türlerini (<code>misal.html</code> gibi) kullanmaya
610       devam etmek istiyorsanız dil uzantısı MIME türü uzantısının sağında
611       kalmalıdır (<code>misal.html.en</code> gibi).</p>
612 </section>
613
614 <section id="caching"><title>Arabellekler Hakkında</title>
615
616     <p>Bir arabellek, bir gösterimi istek URL’si ile ilişkilendirerek saklar.
617       Böylece, sonradan aynı URL için bir istek yapıldığında kaydettiği
618       gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaşılan türdeyse
619       arabelleğe ilk istenen çeşit saklanmış olacağından isteğe yanlış
620       gösterimle yanıt verilmiş olacaktır. Bunun olmaması için httpd, normal
621       olarak içerik uzlaşımının sonucu olarak döndürülen tüm yanıtları
622       HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. httpd
623       ayrıca, uzlaşımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1
624       protokolünü de destekler.</p>
625
626     <p>HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
627       istekler için, uzlaşıma konu yanıtların arabelleklenmesini mümkün kılmak
628       üzere <directive module="mod_negotiation"
629       >CacheNegotiatedDocs</directive> yönergesi kullanılabilir. Bu yönerge
630       argümansızdır ve sunucu genelinde veya sanal konakların
631       yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
632       isteklere bir etkisi yoktur.</p>
633
634     <p>HTTP/1.1 istemciler için, httpd, yanıtın uzlaşım boyutlarını göstermek
635       üzere bir <code>Vary</code> HTTP yanıt başlığı gönderir. Arabellekler bu
636       bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
637       arabelleğin uzlaşım boyutlarına bakmaksızın yerel kopyasını kullanmaya
638       teşvik etmek için <code>force-no-vary</code> <a href="env.html#special"
639       >ortam değişkenini</a> etkin kılabilirsiniz.</p>
640
641 </section>
642 </manualpage>