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" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
12 <script src="./style/scripts/prettify.js" type="text/javascript">
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="./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.5</p>
19 <img alt="" src="./images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
22 <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>
24 <p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
25 <a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
26 <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
27 <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
28 <a href="./tr/content-negotiation.html" title="Türkçe"> tr </a></p>
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>
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>
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>
50 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
52 <h2><a name="about" id="about">İçerik Uzlaşımı Hakkında</a></h2>
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>
65 <div class="example"><p><code>Accept-Language: tr</code></p></div>
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>
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>
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
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>
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>
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>
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ı
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ı
119 <h3><a name="type-map" id="type-map">Bir türeşlem dosyası kullanmak</a></h3>
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>
129 <div class="example"><p><code>AddHandler type-map .var</code></p></div>
131 <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
132 olmalı ve isim bir <code>.var</code> uzantısı içermelidir. Aşağıdaki
133 örneklerde özkaynak ismi <code>foo</code> olduğundan türeşlem dosyasının
134 ismi <code>foo.var</code>'dır.</p>
136 <p>Bu dosya her gösterim çeşidi için bir girdi içermelidir; bu girdiler
137 ardarda belirtilen HTTP biçem başlık satırlarından oluşur. Farklı
138 gösterimlerin girdileri bir boş satırla diğerlerinden ayrılır. Aynı
139 girdi içinde boş satır kullanılamaz. Bir eşlem dosyasını bir birleşik
140 öğenin tamamı için bir girdi ile başlatmak adet olmuştur (ise de, bu
141 gerekli değildir, hele yoksayılacaksa hiç gerekli değildir). Eşlem
142 dosyası için aşağıda bir örnek verilmiştir.</p>
144 <p>Bu dosyadaki URI'ler türeşlem dosyasının yerine görelidir. Dolayısıyla,
145 bu dosyaların aynı dizinde bulunması beklenirse de bu gerekli değildir.
146 Aynı sunucuda bulunan tüm dosyalar için türeşlem dosyasındaki gibi mutlak
147 veya göreli URI'ler belirtebilirsiniz.</p>
149 <div class="example"><p><code>
152 URI: misal.en.html<br />
153 Content-type: text/html<br />
154 Content-language: en<br />
156 URI: misal.fr.de.html<br />
157 Content-type: text/html;charset=iso-8859-2<br />
158 Content-language: fr, de<br />
161 <p>Ayrıca, <code>MultiViews</code> etkin olsa bile bir türeşlem dosyasının
162 dosya ismi uzantılarının taranmasına göre öncelik alacağına dikkat
163 ediniz. Eğer gösterimler bu örnekteki resim dosyasında olduğu gibi
164 farklı kaynak üstünlüklerine sahipseler, ortam türünün <code>qs</code>
165 parametresi kullanılarak kaynak üstünlükleri belirtilebilir: </p>
167 <div class="example"><p><code>
170 URI: misal.jpeg<br />
171 Content-type: image/jpeg; <strong>qs=0.8</strong><br />
174 Content-type: image/gif; <strong>qs=0.5</strong><br />
177 Content-type: text/plain; <strong>qs=0.01</strong><br />
180 <p><code>qs</code> değerleri 0.000-1.000 değer aralığı içinde
181 belirtilebilir. 0.000 <code>qs</code> değerine sahip gösterimin asla
182 seçilmeyeceğine dikkat ediniz. Bir <code>qs</code> değeri belirtilmeyen
183 gösterimlerin kaynak üstünlüğü 1.000 kabul edilir. <code>qs</code>
184 parametresinin belirttiği değer istemcinin yeteneklerinden bağımsız
185 olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
186 Örneğin bir fotoğraf sözkonusu olduğunda bir JPEG dosyasının kaynak
187 üstünlüğü bir ASCII çiziminkinden yüksek olacaktır. Diğer taraftan özgün
188 resim bir ASCII çizim olduğu takdirde, ASCII çizim, bir JPEG gösterimine
189 göre öncelikli olacaktır. Bu nedenle <code>qs</code> değeri özkaynağın
190 doğasına bakarak belirlenir.</p>
192 <p>Tanınan başlıkların tam listesini <a href="mod/mod_negotiation.html#typemaps">mod_negotiation</a> modülünün
193 belgesinde bulabilirsiniz.</p>
196 <h3><a name="multiviews" id="multiviews">Çoklu Görünümler</a></h3>
198 <p><code>MultiViews</code>, <code>httpd.conf</code> dosyasındaki veya
199 (<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesinin
200 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
201 <code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergeleri ile
202 belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
203 <code>Options All</code> yaparak <code>MultiViews</code> seçeneğini
204 etkin kılamazsınız; seçeneği ismiyle açıkça belirtmelisiniz.</p>
206 <p><code>MultiViews</code> şöyle etki eder: Sunucudan,
207 <code>MultiViews</code> seçeneğinin etkin olduğu <code>/bir/dizin</code>
208 dizininden <code>filanca</code> dosyası için bir istekte bulunulmuşsa
209 fakat dizinde bu dosya yoksa, sunucu dizin içeriğini
210 <code>filanca.*</code> dosyaları için tarar ve bu dosyalar için
211 istemcinin ismiyle talep ettiği ortam türlerini ve kodlamaları
212 kullanarak bir türeşlem dosyası uydurup bu gösterimler arasından
213 istemcinin gereksinimlerine en uygun gösterimi seçer.</p>
215 <p><code>MultiViews</code> ayrıca, sunucunun bir dizin içeriğini
216 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
217 arama tertipleyebilir. Eğer yapılandırma dosyalarında</p>
219 <div class="example"><p><code>DirectoryIndex index</code></p></div>
221 <p>şeklinde bir atama varsa ve dizinde <code>index.html</code> ve
222 <code>index.html3</code> dosyaları varsa sunucu bunlar arasından hakem
223 sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
224 <code>index.cgi</code> mevcutsa sunucu sadece bu dosyayı
227 <p>Okunan dizinde bulunan dosyalar arasında <code>mod_mime</code>
228 tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
229 başlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
230 sonuç <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>
231 yönergesiyle yapılan tanıma bağlı olur. Bu yönerge hangi diğer dosya
232 uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaşımla
233 ilintileneceğini belirler.</p>
235 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
236 <div class="section">
237 <h2><a name="methods" id="methods">Uzlaşım Yöntemleri</a></h2>
239 <p>httpd’nin, bir türeşlem dosyası veya dizin içindeki bir dosya
240 sayesinde belli bir özkaynağın gösterim çeşitlerinin bir listesini elde
241 ettikten sonra ‘en uygun’ gösterime karar vermek için kullanabileceği
242 iki yöntem vardır. httpd’nin içerik uzlaşım özelliklerinin kullanımı
243 sırasında uzlaşımın nasıl yerine getirileceği ile ilgili ayrıntıları
244 bilmek aslında gerekli değildir. Bununla birlikte belgenin kalanında bu
245 konu açıklanmaya çalışılmıştır.</p>
247 <p>İki uzlaşım yöntemi vardır:</p>
250 <li>Normal durumda <strong>sunucu yönetiminde httpd uzlaşım
251 algoritması</strong> kullanılır. Bu algoritma aşağıda ayrıntılı olarak
252 açıklanmıştır. Bu algoritma kullanıldığı zaman, httpd, en iyi sonuca
253 ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’.
254 httpd’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha
255 ayrıntılı açıklanmıştır.</li>
257 <li>İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın
258 kullanılmasını isterse <strong>şeffaf içerik uzlaşımı</strong>
259 kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi
260 konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç
261 tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır.
262 Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da
263 tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın
264 çalıştırılmasını httpd’den isteyebilir.</li>
267 <h3><a name="dimensions" id="dimensions">Uzlaşımın Boyutları</a></h3>
280 <td>Tarayıcı ortam türü tercihlerini <code>Accept</code> başlık alanı
281 ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
282 olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüğüne
283 (<code>qs</code> parametresi) sahip olabilir.</td>
289 <td>Tarayıcı dil tercihlerini <code>Accept-Language</code> başlık
290 alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
291 olabilir. Gösterimler bir kaç dilde olabileceği gibi hiç bir dille
292 ilişkilendirimemiş de olabilir.</td>
298 <td>Tarayıcı kodlama tercihlerini <code>Accept-Encoding</code> başlık
299 alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
304 <td>Karakter Kümesi</td>
306 <td>Tarayıcı karakter kümesi tercihlerini <code>Accept-Charset</code>
307 başlık alanı ile belirtir. Her öğenin kendine özgü bir üstünlük
308 katsayısı olabilir. Gösterim çeşitleri karakter kümesini ortam
309 türünün bir parametresi olarak belirtebilirler.</td>
314 <h3><a name="algorithm" id="algorithm">httpd Uzlaşım Algoritması</a></h3>
316 <p>httpd, tarayıcıya döndürülecek en uygun gösterim çeşidini (varsa)
317 seçmek için aşağıdaki algoritmayı kullanabilir. Bu algoritma pek de
318 yapılandırılabilir değildir. Şöyle çalışır:</p>
321 <li>Önce her uzlaşım boyutu için ilgili <em>Accept*</em> başlık alanına
322 bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer
323 boyutlardan bazıları için ilgili <em>Accept*</em> başlığı
324 uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim
325 çeşidi kalmasza 4. adıma atlanır.</li>
327 <li>‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç
328 sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan
329 geçemeyen bir gösterim çeşidi elenir. Sınamaların bir aşamasında tek
330 bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur
331 ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki
335 <li><code>Accept</code> başlığındaki üstünlük katsayısı ile
336 gösterimin ortam türünde belirtilen kaynak üstünlüğünün çarpımı en
337 büyük olan gösterim çeşidi seçilir.</li>
339 <li>En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir.
342 <li>En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için
343 önce varsa <code>Accept-Language</code> başlığındaki dil
344 sıralamasına bakılır, aksi takdirde <code>LanguagePriority</code>
345 yönergesi ile atanmışsa oradaki dil sıralamasına bakılır.</li>
347 <li>En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü
348 sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri
351 <li><code>Accept-Charset</code> başlık satırında belirtilene bakarak
352 en uygun karakter kümesine sahip gösterim çeşitleri seçilir.
353 Alenen dışlanmadıkça ISO-8859-1 kabul edilebilir karakter
354 kümesidir. <code>text/*</code> ortam türüne sahip gösterim
355 çeşitlerinden belli bir karakter kümesi ile ilişkilendirilmemiş
356 olanların karakter kümesinin ISO-8859-1 olduğu varsayılır.</li>
358 <li>ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim
359 çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler
362 <li>En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı
363 tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri
364 varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim
365 çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar
366 seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da
367 sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.</li>
369 <li>En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.</li>
371 <li>Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem
372 dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden
373 okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine
374 sahip gösterimdir.</li>
378 <li>Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu
379 artık yanıt olarak döndürülebilir. HTTP yanıt başlığı
380 <code>Vary</code>’ye uzlaşım boyutları atanır (tarayıcı ve
381 arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar)
382 ve algoritma sonlandırılır.</li>
384 <li>Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri
385 tarayıcı tarafından kabul edilebilir bulunmadığından dolayı).
386 Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406
387 durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’).
388 Ayrıca HTTP <code>Vary</code> başlığında gösterim çeşitliliğinin
389 boyutları belirtilir.</li>
392 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
393 <div class="section">
394 <h2><a name="better" id="better">Üstünlük Değerleriyle Oynamak</a></h2>
396 <p>httpd bazen yukarıdaki httpd uzlaşım algoritmasının kesin sonucunun
397 beklenenden farklı olması için üstünlük değerleriyle oynar. Bunu tam ve
398 doğru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
399 etmek amacıyla yapar. Bazen günümüzün en tanınmış tarayıcıları bile çoğu
400 durumda yanlış bir seçimle sonuçlanmayacaksa <code>Accept</code> başlık
401 bilgilerini göndermemektedir. Eğer tarayıcı eksiksiz ve doğru bilgi
402 gönderirse httpd bu değerlerle oynamayacaktır.</p>
404 <h3><a name="wildcards" id="wildcards">Ortam Türleri ve Dosyaismi Kalıpları</a></h3>
406 <p><code>Accept:</code> istek başlığı ortam türü tercihlerini yansıtır.
407 Ayrıca, * bir dizge ile eşleşmek üzere "image/*" veya "*/*" gibi ortam
408 türü kalıpları da içerebilir. Dolayısıyla şöyle bir istek,</p>
410 <div class="example"><p><code>Accept: image/*, */*</code></p></div>
412 <p>diğer türler gibi "image/" ile başlayan ortam türlerini kabul
413 edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak
414 elde etmek amacıyla hep bu tür kalıplar gönderirler. Örnek:</p>
416 <div class="example"><p><code>
417 Accept: text/html, text/plain, image/gif, image/jpeg, */*
420 <p>Bunun amacı, açıkça listelenmiş türlerin tercih edildiğini, fakat
421 farklı gösterimler varsa onların da kabul edilebileceğini belirtmektir.
422 Üstünlük değerlerini doğrudan kullanarak tarayıcılar gerçekte ne
423 istediklerini şuna benzer şekilde belirtebilirler:</p>
425 <div class="example"><p><code>
426 Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
429 <p>Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiştir,
430 dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduğu
431 varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düşük bir öncelik
432 belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden
433 hiçbirinin bulunmaması halinde diğer türler eşleşecektir.</p>
435 <p>Eğer <code>Accept:</code> başlığı <em>hiçbir</em> <code>q</code>
436 katsayısı içermiyorsa ve başlıkta "*/*" belirtilmişse, httpd istenen
437 davranışı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
438 "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
439 tercihli olur). Eğer <code>Accept:</code> alanındaki her ortam türü bir
440 <code>q</code> katsayısı içeriyorsa bu özel değerler uygulanmaz.
441 Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
442 istekler umulduğu gibi işlem görecektir.</p>
445 <h3><a name="exceptions" id="exceptions">Dil Uzlaşımında İstisnalar</a></h3>
447 <p>httpd 2.0’dan itibaren, uzlaşım algoritmasına, bir eşleşme bulmak
448 konusunda algoritma başarılı olamadığı takdirde hoş bir son çareye izin
449 vermek için bazı istisnalar eklenmiştir.</p>
451 <p>İstemci sunucudan bir sayfa istediğinde, sunucu, tarayıcı tarafından
452 gönderilen <code>Accept-language</code> başlığıyla eşleşen tek bir sayfa
453 bulamadığı takdirde istemciye ya “Kabul edilebilir bir gösterim çeşidi
454 yok” ya da “Çok sayıda seçim belirtilmiş” yanıtını döndürür. Bu hata
455 iletilerinden kaçınmak için bu gibi durumlarda httpd
456 <code>Accept-language</code> başlığını yoksaymaya ayarlanabilir. Böylece
457 istemcinin isteğine tam olarak uymasa da bir belge sağlanır. Bu hata
458 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
459 kullanılabilir ve sunucunun kararını <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> yönergesine
460 dayanarak vermesi sağlanabilir.</p>
462 <p>Sunucu ayrıca, tam bir eşleşme bulunmadığı zaman lehçelerle de eşleşme
463 arayabilir. Örneğin, bir istemci Britanya İngilizcesi
464 (<code>en-GB</code>) ile yazılmış belgeler için istekte bulunursa,
465 sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
466 <code>en</code> olarak imlenmesine izin vermez. (Bir okuyucu Britanya
467 İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
468 <code>Accept-Language</code> başlığında <code>en</code> değil de
469 <code>en-GB</code>’yi belirtmesinin hemen hemen daima bir yapılandırma
470 hatasına yol açacağına dikkat ediniz. Maalesef, mevcut istemcilerin çoğu
471 öntanımlı yapılandırmalarında buna benzer şeyler yapmaktadır.) Bununla
472 birlikte, başka bir dille eşleşme mümkün değilse ve sunucu “Kabul
473 edilebilir bir gösterim çeşidi yok” hatasını döndürmeye hazırsa veya
474 <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> son
475 çaresine ayarlanmışsa alt küme belirtimini yok sayacak ve
476 <code>en</code> belge isteklerine <code>en-GB</code> belgelerle yanıt
477 verecektir. httpd, lehçenin üyesi olduğu anadili, istemcinin kabul
478 edilebilir diller listesine örtük olarak düşük bir üstünlük değeri ile
479 ekler. Yalnız şuna dikkat edin, eğer istemci tercihini "en-GB; q=0.9,
480 fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
481 varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
482 uyumluluğu sağlamak ve düzgün yapılandırılmış istemcilerle gerektiği
483 gibi çalışabilmek için bu gereklidir.</p>
485 <p>Gelişmiş tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
486 sırasında, kullanıcının tercih ettiği dili saptamak için httpd 2.0.47
487 sürümünden beri <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü
488 <code>prefer-language</code> <a href="env.html">ortam değişkenini</a>
489 tanımaktadır. Değişken mevcutsa ve uygun bir dil yaftası içeriyorsa
490 <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> uygun gösterimi seçmeyi deneyecektir.
491 Böyle bir gösterim çeşidi mevcut değilse normal uzlaşım işlemi
494 <div class="example"><h3>Örnek</h3><p><code>
495 SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
496 Header append Vary cookie
499 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
500 <div class="section">
501 <h2><a name="extensions" id="extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></h2>
504 <p>httpd, şeffaf içerik uzlaşımı protokolünü (RFC 2295) şöyle genişletir:
505 Sadece içerik kodlamasına özgü olmak üzere gösterim çeşidi listelerinde
506 gösterim çeşitlerini imlemek için yeni bir <code>{encoding ..}</code>
507 elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
508 listedeki kodlanmış gösterim çeşitlerini tanımak ve onları
509 <code>Accept-Encoding</code> başlık alanıyla ilgili olarak kabul
510 edilebilir kodlamalara aday gösterim çeşitleri olarak kullanmak üzere
511 genişletilmiştir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeşidi
512 seçiminin öncesinde hesaplanmış üstünlük katsayısını virgülden sonra beş
513 haneye yuvarlamaz.</p>
514 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
515 <div class="section">
516 <h2><a name="naming" id="naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></h2>
518 <p>Eğer dil uzlaşımı kullanıyorsanız ve birden fazla dosya ismi uzantısına
519 sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz
520 düştüğü farklı isimlendirme yaklaşımlarında bulunabilirsiniz (ayrıntılar
521 için <a href="mod/mod_mime.html#multipleext">mod_mime</a> belgesine
524 <p>Bir MIME türü uzantısına sahip bir dosyanın (<code>html</code> gibi),
525 kodlanmış bir gösterimi (<code>gz</code> gibi) mevcut olabilir. Bu
526 dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
527 (<code>en</code> gibi) olabilir.</p>
532 <li>misal.en.html</li>
534 <li>misal.html.en</li>
536 <li>misal.en.html.gz</li>
539 <p>Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:</p>
541 <table class="bordered">
546 <th>Geçerli Hiperbağ</th>
548 <th>Geçersiz Hiperbağ</th>
552 <td><em>misal.html.en</em></td>
561 <td><em>misal.en.html</em></td>
569 <td><em>misal.html.en.gz</em></td>
579 <td><em>misal.en.html.gz</em></td>
589 <td><em>misal.gz.html.en</em></td>
599 <td><em>misal.html.gz.en</em></td>
609 <p>Yukarıdaki tabloya bakarak hiperbağlarda bir dosya ismini uzantısız
610 olarak (<code>misal</code> gibi) kullanmanın daima mümkün olduğunu
611 farkedeceksiniz. Böylece bir belgenin asıl türünü gizleyebilir ve
612 sonradan bir hiperbağ değişikliği yapmaksızın örneğin
613 <code>html</code>’den <code>shtml</code> veya <code>cgi</code>’ye
616 <p>Hiperbağlarda MIME türlerini (<code>misal.html</code> gibi) kullanmaya
617 devam etmek istiyorsanız dil uzantısı MIME türü uzantısının sağında
618 kalmalıdır (<code>misal.html.en</code> gibi).</p>
619 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
620 <div class="section">
621 <h2><a name="caching" id="caching">Arabellekler Hakkında</a></h2>
623 <p>Bir arabellek, bir gösterimi istek URL’si ile ilişkilendirerek saklar.
624 Böylece, sonradan aynı URL için bir istek yapıldığında kaydettiği
625 gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaşılan türdeyse
626 arabelleğe ilk istenen çeşit saklanmış olacağından isteğe yanlış
627 gösterimle yanıt verilmiş olacaktır. Bunun olmaması için httpd, normal
628 olarak içerik uzlaşımının sonucu olarak döndürülen tüm yanıtları
629 HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. httpd
630 ayrıca, uzlaşımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1
631 protokolünü de destekler.</p>
633 <p>HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
634 istekler için, uzlaşıma konu yanıtların arabelleklenmesini mümkün kılmak
635 üzere <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> yönergesi kullanılabilir. Bu yönerge
636 argümansızdır ve sunucu genelinde veya sanal konakların
637 yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
638 isteklere bir etkisi yoktur.</p>
640 <p>HTTP/1.1 istemciler için, httpd, yanıtın uzlaşım boyutlarını göstermek
641 üzere bir <code>Vary</code> HTTP yanıt başlığı gönderir. Arabellekler bu
642 bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
643 arabelleğin uzlaşım boyutlarına bakmaksızın yerel kopyasını kullanmaya
644 teşvik etmek için <code>force-no-vary</code> <a href="env.html#special">ortam değişkenini</a> etkin kılabilirsiniz.</p>
647 <div class="bottomlang">
648 <p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
649 <a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
650 <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
651 <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
652 <a href="./tr/content-negotiation.html" title="Türkçe"> tr </a></p>
653 </div><div id="footer">
654 <p class="apache">Copyright 2012 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>
655 <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><script type="text/javascript"><!--//--><![CDATA[//><!--
656 if (typeof(prettyPrint) !== undefined) {