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