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