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