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