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