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