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="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
18 <p class="apache">Apache HTTP Sunucusu Sürüm 2.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>
30 <div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div>
33 <p>Apache HTTPD, içerik uzlaşımını HTTP/1.1 belirtiminde bahsedildiği şekliyle
34 destekler. Bir özkaynağın en iyi gösterimini, tarayıcının sağladığı
35 karakter kodlaması, karakter kümesi, dil, ortam türü gibi kullanıcı
36 tercihlerine bağlı olarak seçebilir. Ayrıca, tarayıcının kullanıcı
37 tercihlerini tam yansıtamadığı durumlarda istekleri daha akıllıca ele
38 alabilmeyi sağlayacak bir takım özelliklere de sahiptir.</p>
40 <p>İçerik uzlaşımı öntanımlı olarak derlenen
41 <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü tarafından sağlanır.</p>
43 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#about">İçerik Uzlaşımı Hakkında</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#negotiation">httpd’de İçerik Uzlaşımı</a></li>
45 <li><img alt="" src="./images/down.gif" /> <a href="#methods">Uzlaşım Yöntemleri</a></li>
46 <li><img alt="" src="./images/down.gif" /> <a href="#better">Üstünlük Değerleriyle Oynamak</a></li>
47 <li><img alt="" src="./images/down.gif" /> <a href="#extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></li>
48 <li><img alt="" src="./images/down.gif" /> <a href="#naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></li>
49 <li><img alt="" src="./images/down.gif" /> <a href="#caching">Arabellekler Hakkında</a></li>
50 </ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div>
51 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
53 <h2><a name="about" id="about">İçerik Uzlaşımı Hakkında</a></h2>
55 <p>Bir özkaynağın bir çok farklı gösterimi olabilir. Örneğin, bir belgenin
56 farklı ortam türleri ve/veya farklı diller için gösterimleri olabilir.
57 En uygun seçimi yapmanın tek yolu kullanıcıya bir liste verip seçmesini
58 istemektir. Bununla birlikte sunucunun bu seçimi kendiliğinden yapması
59 da mümkündür. Tarayıcılar isteğin bir parçası olarak kullanıcı
60 tercihlerini de gönderdiğinden bu istendiği gibi çalışır. Örneğin bir
61 tarayıcı, kullanıcısınının mümkünse Fransızca içerik tercih ettiğini
62 yoksa İngilizce içeriğe de razı olabileceğini belirtebilirdi.
63 Tarayıcılar bu tercihleri başlıkta belirtirler. Tarayıcı sadece Türkçe
64 içerik istendiğini şöyle belirtebilirdi:</p>
66 <div class="example"><p><code>Accept-Language: tr</code></p></div>
68 <p>Bu tercihin yerine getirilebilmesininin sadece, desteklenen diller
69 arasında bu dilin varlığına ve istenen belgenin bu dilde bir
70 gösteriminin bulunmasına bağlı oluşuna dikkat ediniz.</p>
72 <p>Daha karmaşık bir istek örneği olarak, tarayıcının Fransızca ve
73 İngilizce içerik kabul etmeye ayarlandığını fakat Fransızcayı tercih
74 ettiğini ve çeşitli ortam türlerini kabul etmekle birlikte salt metin ve
75 diğer metin türlerinden ziyade HTML tercih ettiğini, ayrıca, diğer ortam
76 türleri üzerinde GIF veya JPEG tercih ettiğini fakat başka çare yoksa
77 her ortam türüne de izin verdiğini belirtiyor olsun:</p>
79 <div class="example"><p><code>
80 Accept-Language: fr; q=1.0, en; q=0.5<br />
81 Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg;
82 q=0.6, image/*; q=0.5, */*; q=0.1
85 <p>httpd, HTTP/1.1 belirtiminde tanımlanan şekliyle ‘sunucu yönetiminde’
86 içerik uzlaşımını destekler. <code>Accept</code>,
87 <code>Accept-Language</code>, <code>Accept-Charset</code> ve
88 <code>Accept-Encoding</code> istek başlıklarını tamamen destekler.
89 httpd ayrıca, RFC 2295 ve RFC 2296’da tanımlanan bir deneysel uzlaşım
90 olarak ‘şeffaf’ içerik uzlaşımını da destekler. Fakat ‘özellik
91 uzlaşımını’ bu RFC’lerde tanımlandığı gibi desteklemez.</p>
93 <p>Bir <strong>özkaynak</strong> bir URI (RFC 2396) tarafından betimlenen
94 kavramsal bir öğedir. Apache gibi bir HTTP sunucusu, ortam türü,
95 karakter kümesi, kodlama ve saire ile tanımlanmış bir bayt dizisi
96 şeklindeki her gösterimiyle, özkaynaklara kendi isim alanları dahilinde
97 erişim sağlar. Her özkaynağın aynı anda bir veya daha fazla gösterimi
98 mevcut olabileceği gibi hiç mevcut olmayabilir de. Eğer çok sayıda
99 gösterim mevcutsa, bu özkaynağın <strong>uzlaşılabilir</strong>
100 olduğundan ve her gösteriminin bir <strong>çeşitlilik</strong>
101 oluşturduğundan bunun da uzlaşımın <strong>boyutlar</strong>ından
102 kaynaklandığından bahsedilebilir.</p>
103 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
104 <div class="section">
105 <h2><a name="negotiation" id="negotiation">httpd’de İçerik Uzlaşımı</a></h2>
107 <p>Bir özkaynak üzerinde uzlaşılırken gösterim çeşitlerinin her biri
108 hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:</p>
111 <li>Ya gösterim çeşitlerini içeren dosyaların isimleriyle eşleşmeyi
112 sağlayan bir tür eşlemi kullanılır (bir <code>*.var</code> dosyası
115 <li>Ya da sunucu örtük bir dosya ismi kalıbı eşleşmesinin ardından
116 sonuçlar arasından seçim yapar; buna ‘Çoklu Görünüm’ araması adı
120 <h3><a name="type-map" id="type-map">Bir türeşlem dosyası kullanmak</a></h3>
122 <p>Bir türeşlem dosyası, <code>type-map</code> eylemcisi ile ilişkili bir
123 belgedir (ya da eski httpd yapılandırmaları ile geriye uyumluluk için,
124 <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
125 bir belgedir). Bu özelliği kullanmak için, yapılandırmada bir tür
126 eşleyici olarak her dosya ismi uzantısı için bir <code>type-map</code>
127 eylemcisi tanımlamalısınız. Bu, sunucu yapılandırma dosyasında en iyi
128 şöyle yapılabilir:</p>
130 <div class="example"><p><code>AddHandler type-map .var</code></p></div>
132 <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
133 olmalı ve isim bir <code>.var</code> uzantısı içermelidir. Aşağıdaki
134 örneklerde özkaynak ismi <code>foo</code> olduğundan türeşlem dosyasının
135 ismi <code>foo.var</code>'dır.</p>
137 <p>Bu dosya her gösterim çeşidi için bir girdi içermelidir; bu girdiler
138 ardarda belirtilen HTTP biçem başlık satırlarından oluşur. Farklı
139 gösterimlerin girdileri bir boş satırla diğerlerinden ayrılır. Aynı
140 girdi içinde boş satır kullanılamaz. Bir eşlem dosyasını bir birleşik
141 öğenin tamamı için bir girdi ile başlatmak adet olmuştur (ise de, bu
142 gerekli değildir, hele yoksayılacaksa hiç gerekli değildir). Eşlem
143 dosyası için aşağıda bir örnek verilmiştir.</p>
145 <p>Bu dosyadaki URI'ler türeşlem dosyasının yerine görelidir. Dolayısıyla,
146 bu dosyaların aynı dizinde bulunması beklenirse de bu gerekli değildir.
147 Aynı sunucuda bulunan tüm dosyalar için türeşlem dosyasındaki gibi mutlak
148 veya göreli URI'ler belirtebilirsiniz.</p>
150 <div class="example"><p><code>
153 URI: misal.en.html<br />
154 Content-type: text/html<br />
155 Content-language: en<br />
157 URI: misal.fr.de.html<br />
158 Content-type: text/html;charset=iso-8859-2<br />
159 Content-language: fr, de<br />
162 <p>Ayrıca, <code>MultiViews</code> etkin olsa bile bir türeşlem dosyasının
163 dosya ismi uzantılarının taranmasına göre öncelik alacağına dikkat
164 ediniz. Eğer gösterimler bu örnekteki resim dosyasında olduğu gibi
165 farklı kaynak üstünlüklerine sahipseler, ortam türünün <code>qs</code>
166 parametresi kullanılarak kaynak üstünlükleri belirtilebilir: </p>
168 <div class="example"><p><code>
171 URI: misal.jpeg<br />
172 Content-type: image/jpeg; <strong>qs=0.8</strong><br />
175 Content-type: image/gif; <strong>qs=0.5</strong><br />
178 Content-type: text/plain; <strong>qs=0.01</strong><br />
181 <p><code>qs</code> değerleri 0.000-1.000 değer aralığı içinde
182 belirtilebilir. 0.000 <code>qs</code> değerine sahip gösterimin asla
183 seçilmeyeceğine dikkat ediniz. Bir <code>qs</code> değeri belirtilmeyen
184 gösterimlerin kaynak üstünlüğü 1.000 kabul edilir. <code>qs</code>
185 parametresinin belirttiği değer istemcinin yeteneklerinden bağımsız
186 olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
187 Örneğin bir fotoğraf sözkonusu olduğunda bir JPEG dosyasının kaynak
188 üstünlüğü bir ASCII çiziminkinden yüksek olacaktır. Diğer taraftan özgün
189 resim bir ASCII çizim olduğu takdirde, ASCII çizim, bir JPEG gösterimine
190 göre öncelikli olacaktır. Bu nedenle <code>qs</code> değeri özkaynağın
191 doğasına bakarak belirlenir.</p>
193 <p>Tanınan başlıkların tam listesini <a href="mod/mod_negotiation.html#typemaps">mod_negotiation</a> modülünün
194 belgesinde bulabilirsiniz.</p>
197 <h3><a name="multiviews" id="multiviews">Çoklu Görünümler</a></h3>
199 <p><code>MultiViews</code>, <code>httpd.conf</code> dosyasındaki veya
200 (<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesinin
201 değerine bağlı olarak) <code>.htaccess</code> dosyalarındaki <code class="directive"><a href="./mod/core.html#directory"><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
202 <code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergeleri ile
203 belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
204 <code>Options All</code> yaparak <code>MultiViews</code> seçeneğini
205 etkin kılamazsınız; seçeneği ismiyle açıkça belirtmelisiniz.</p>
207 <p><code>MultiViews</code> şöyle etki eder: Sunucudan,
208 <code>MultiViews</code> seçeneğinin etkin olduğu <code>/bir/dizin</code>
209 dizininden <code>filanca</code> dosyası için bir istekte bulunulmuşsa
210 fakat dizinde bu dosya yoksa, sunucu dizin içeriğini
211 <code>filanca.*</code> dosyaları için tarar ve bu dosyalar için
212 istemcinin ismiyle talep ettiği ortam türlerini ve kodlamaları
213 kullanarak bir türeşlem dosyası uydurup bu gösterimler arasından
214 istemcinin gereksinimlerine en uygun gösterimi seçer.</p>
216 <p><code>MultiViews</code> ayrıca, sunucunun bir dizin içeriğini
217 listelemeye çalıştığı durumda <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> yönergesi ile belirtilen dosya için de bir
218 arama tertipleyebilir. Eğer yapılandırma dosyalarında</p>
220 <div class="example"><p><code>DirectoryIndex index</code></p></div>
222 <p>şeklinde bir atama varsa ve dizinde <code>index.html</code> ve
223 <code>index.html3</code> dosyaları varsa sunucu bunlar arasından hakem
224 sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
225 <code>index.cgi</code> mevcutsa sunucu sadece bu dosyayı
228 <p>Okunan dizinde bulunan dosyalar arasında <code>mod_mime</code>
229 tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
230 başlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
231 sonuç <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>
232 yönergesiyle yapılan tanıma bağlı olur. Bu yönerge hangi diğer dosya
233 uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaşımla
234 ilintileneceğini belirler.</p>
236 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
237 <div class="section">
238 <h2><a name="methods" id="methods">Uzlaşım Yöntemleri</a></h2>
240 <p>httpd’nin, bir türeşlem dosyası veya dizin içindeki bir dosya
241 sayesinde belli bir özkaynağın gösterim çeşitlerinin bir listesini elde
242 ettikten sonra ‘en uygun’ gösterime karar vermek için kullanabileceği
243 iki yöntem vardır. httpd’nin içerik uzlaşım özelliklerinin kullanımı
244 sırasında uzlaşımın nasıl yerine getirileceği ile ilgili ayrıntıları
245 bilmek aslında gerekli değildir. Bununla birlikte belgenin kalanında bu
246 konu açıklanmaya çalışılmıştır.</p>
248 <p>İki uzlaşım yöntemi vardır:</p>
251 <li>Normal durumda <strong>sunucu yönetiminde httpd uzlaşım
252 algoritması</strong> kullanılır. Bu algoritma aşağıda ayrıntılı olarak
253 açıklanmıştır. Bu algoritma kullanıldığı zaman, httpd, en iyi sonuca
254 ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’.
255 httpd’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha
256 ayrıntılı açıklanmıştır.</li>
258 <li>İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın
259 kullanılmasını isterse <strong>şeffaf içerik uzlaşımı</strong>
260 kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi
261 konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç
262 tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır.
263 Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da
264 tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın
265 çalıştırılmasını httpd’den isteyebilir.</li>
268 <h3><a name="dimensions" id="dimensions">Uzlaşımın Boyutları</a></h3>
281 <td>Tarayıcı ortam türü tercihlerini <code>Accept</code> başlık alanı
282 ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
283 olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüğüne
284 (<code>qs</code> parametresi) sahip olabilir.</td>
290 <td>Tarayıcı dil tercihlerini <code>Accept-Language</code> başlık
291 alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
292 olabilir. Gösterimler bir kaç dilde olabileceği gibi hiç bir dille
293 ilişkilendirimemiş de olabilir.</td>
299 <td>Tarayıcı kodlama tercihlerini <code>Accept-Encoding</code> başlık
300 alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
305 <td>Karakter Kümesi</td>
307 <td>Tarayıcı karakter kümesi tercihlerini <code>Accept-Charset</code>
308 başlık alanı ile belirtir. Her öğenin kendine özgü bir üstünlük
309 katsayısı olabilir. Gösterim çeşitleri karakter kümesini ortam
310 türünün bir parametresi olarak belirtebilirler.</td>
315 <h3><a name="algorithm" id="algorithm">httpd Uzlaşım Algoritması</a></h3>
317 <p>httpd, tarayıcıya döndürülecek en uygun gösterim çeşidini (varsa)
318 seçmek için aşağıdaki algoritmayı kullanabilir. Bu algoritma pek de
319 yapılandırılabilir değildir. Şöyle çalışır:</p>
322 <li>Önce her uzlaşım boyutu için ilgili <em>Accept*</em> başlık alanına
323 bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer
324 boyutlardan bazıları için ilgili <em>Accept*</em> başlığı
325 uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim
326 çeşidi kalmasza 4. adıma atlanır.</li>
328 <li>‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç
329 sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan
330 geçemeyen bir gösterim çeşidi elenir. Sınamaların bir aşamasında tek
331 bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur
332 ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki
336 <li><code>Accept</code> başlığındaki üstünlük katsayısı ile
337 gösterimin ortam türünde belirtilen kaynak üstünlüğünün çarpımı en
338 büyük olan gösterim çeşidi seçilir.</li>
340 <li>En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir.
343 <li>En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için
344 önce varsa <code>Accept-Language</code> başlığındaki dil
345 sıralamasına bakılır, aksi takdirde <code>LanguagePriority</code>
346 yönergesi ile atanmışsa oradaki dil sıralamasına bakılır.</li>
348 <li>En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü
349 sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri
352 <li><code>Accept-Charset</code> başlık satırında belirtilene bakarak
353 en uygun karakter kümesine sahip gösterim çeşitleri seçilir.
354 Alenen dışlanmadıkça ISO-8859-1 kabul edilebilir karakter
355 kümesidir. <code>text/*</code> ortam türüne sahip gösterim
356 çeşitlerinden belli bir karakter kümesi ile ilişkilendirilmemiş
357 olanların karakter kümesinin ISO-8859-1 olduğu varsayılır.</li>
359 <li>ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim
360 çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler
363 <li>En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı
364 tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri
365 varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim
366 çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar
367 seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da
368 sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.</li>
370 <li>En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.</li>
372 <li>Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem
373 dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden
374 okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine
375 sahip gösterimdir.</li>
379 <li>Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu
380 artık yanıt olarak döndürülebilir. HTTP yanıt başlığı
381 <code>Vary</code>’ye uzlaşım boyutları atanır (tarayıcı ve
382 arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar)
383 ve algoritma sonlandırılır.</li>
385 <li>Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri
386 tarayıcı tarafından kabul edilebilir bulunmadığından dolayı).
387 Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406
388 durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’).
389 Ayrıca HTTP <code>Vary</code> başlığında gösterim çeşitliliğinin
390 boyutları belirtilir.</li>
393 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
394 <div class="section">
395 <h2><a name="better" id="better">Üstünlük Değerleriyle Oynamak</a></h2>
397 <p>httpd bazen yukarıdaki httpd uzlaşım algoritmasının kesin sonucunun
398 beklenenden farklı olması için üstünlük değerleriyle oynar. Bunu tam ve
399 doğru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
400 etmek amacıyla yapar. Bazen günümüzün en tanınmış tarayıcıları bile çoğu
401 durumda yanlış bir seçimle sonuçlanmayacaksa <code>Accept</code> başlık
402 bilgilerini göndermemektedir. Eğer tarayıcı eksiksiz ve doğru bilgi
403 gönderirse httpd bu değerlerle oynamayacaktır.</p>
405 <h3><a name="wildcards" id="wildcards">Ortam Türleri ve Dosyaismi Kalıpları</a></h3>
407 <p><code>Accept:</code> istek başlığı ortam türü tercihlerini yansıtır.
408 Ayrıca, * bir dizge ile eşleşmek üzere "image/*" veya "*/*" gibi ortam
409 türü kalıpları da içerebilir. Dolayısıyla şöyle bir istek,</p>
411 <div class="example"><p><code>Accept: image/*, */*</code></p></div>
413 <p>diğer türler gibi "image/" ile başlayan ortam türlerini kabul
414 edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak
415 elde etmek amacıyla hep bu tür kalıplar gönderirler. Örnek:</p>
417 <div class="example"><p><code>
418 Accept: text/html, text/plain, image/gif, image/jpeg, */*
421 <p>Bunun amacı, açıkça listelenmiş türlerin tercih edildiğini, fakat
422 farklı gösterimler varsa onların da kabul edilebileceğini belirtmektir.
423 Üstünlük değerlerini doğrudan kullanarak tarayıcılar gerçekte ne
424 istediklerini şuna benzer şekilde belirtebilirler:</p>
426 <div class="example"><p><code>
427 Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
430 <p>Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiştir,
431 dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduğu
432 varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düşük bir öncelik
433 belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden
434 hiçbirinin bulunmaması halinde diğer türler eşleşecektir.</p>
436 <p>Eğer <code>Accept:</code> başlığı <em>hiçbir</em> <code>q</code>
437 katsayısı içermiyorsa ve başlıkta "*/*" belirtilmişse, httpd istenen
438 davranışı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
439 "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
440 tercihli olur). Eğer <code>Accept:</code> alanındaki her ortam türü bir
441 <code>q</code> katsayısı içeriyorsa bu özel değerler uygulanmaz.
442 Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
443 istekler umulduğu gibi işlem görecektir.</p>
446 <h3><a name="exceptions" id="exceptions">Dil Uzlaşımında İstisnalar</a></h3>
448 <p>httpd 2.0’dan itibaren, uzlaşım algoritmasına, bir eşleşme bulmak
449 konusunda algoritma başarılı olamadığı takdirde hoş bir son çareye izin
450 vermek için bazı istisnalar eklenmiştir.</p>
452 <p>İstemci sunucudan bir sayfa istediğinde, sunucu, tarayıcı tarafından
453 gönderilen <code>Accept-language</code> başlığıyla eşleşen tek bir sayfa
454 bulamadığı takdirde istemciye ya “Kabul edilebilir bir gösterim çeşidi
455 yok” ya da “Çok sayıda seçim belirtilmiş” yanıtını döndürür. Bu hata
456 iletilerinden kaçınmak için bu gibi durumlarda httpd
457 <code>Accept-language</code> başlığını yoksaymaya ayarlanabilir. Böylece
458 istemcinin isteğine tam olarak uymasa da bir belge sağlanır. Bu hata
459 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
460 kullanılabilir ve sunucunun kararını <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> yönergesine
461 dayanarak vermesi sağlanabilir.</p>
463 <p>Sunucu ayrıca, tam bir eşleşme bulunmadığı zaman lehçelerle de eşleşme
464 arayabilir. Örneğin, bir istemci Britanya İngilizcesi
465 (<code>en-GB</code>) ile yazılmış belgeler için istekte bulunursa,
466 sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
467 <code>en</code> olarak imlenmesine izin vermez. (Bir okuyucu Britanya
468 İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
469 <code>Accept-Language</code> başlığında <code>en</code> değil de
470 <code>en-GB</code>’yi belirtmesinin hemen hemen daima bir yapılandırma
471 hatasına yol açacağına dikkat ediniz. Maalesef, mevcut istemcilerin çoğu
472 öntanımlı yapılandırmalarında buna benzer şeyler yapmaktadır.) Bununla
473 birlikte, başka bir dille eşleşme mümkün değilse ve sunucu “Kabul
474 edilebilir bir gösterim çeşidi yok” hatasını döndürmeye hazırsa veya
475 <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> son
476 çaresine ayarlanmışsa alt küme belirtimini yok sayacak ve
477 <code>en</code> belge isteklerine <code>en-GB</code> belgelerle yanıt
478 verecektir. httpd, lehçenin üyesi olduğu anadili, istemcinin kabul
479 edilebilir diller listesine örtük olarak düşük bir üstünlük değeri ile
480 ekler. Yalnız şuna dikkat edin, eğer istemci tercihini "en-GB; q=0.9,
481 fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
482 varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
483 uyumluluğu sağlamak ve düzgün yapılandırılmış istemcilerle gerektiği
484 gibi çalışabilmek için bu gereklidir.</p>
486 <p>Gelişmiş tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
487 sırasında, kullanıcının tercih ettiği dili saptamak için httpd 2.0.47
488 sürümünden beri <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü
489 <code>prefer-language</code> <a href="env.html">ortam değişkenini</a>
490 tanımaktadır. Değişken mevcutsa ve uygun bir dil yaftası içeriyorsa
491 <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> uygun gösterimi seçmeyi deneyecektir.
492 Böyle bir gösterim çeşidi mevcut değilse normal uzlaşım işlemi
495 <div class="example"><h3>Örnek</h3><p><code>
496 SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
497 Header append Vary cookie
500 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
501 <div class="section">
502 <h2><a name="extensions" id="extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></h2>
505 <p>httpd, şeffaf içerik uzlaşımı protokolünü (RFC 2295) şöyle genişletir:
506 Sadece içerik kodlamasına özgü olmak üzere gösterim çeşidi listelerinde
507 gösterim çeşitlerini imlemek için yeni bir <code>{encoding ..}</code>
508 elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
509 listedeki kodlanmış gösterim çeşitlerini tanımak ve onları
510 <code>Accept-Encoding</code> başlık alanıyla ilgili olarak kabul
511 edilebilir kodlamalara aday gösterim çeşitleri olarak kullanmak üzere
512 genişletilmiştir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeşidi
513 seçiminin öncesinde hesaplanmış üstünlük katsayısını virgülden sonra beş
514 haneye yuvarlamaz.</p>
515 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
516 <div class="section">
517 <h2><a name="naming" id="naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></h2>
519 <p>Eğer dil uzlaşımı kullanıyorsanız ve birden fazla dosya ismi uzantısına
520 sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz
521 düştüğü farklı isimlendirme yaklaşımlarında bulunabilirsiniz (ayrıntılar
522 için <a href="mod/mod_mime.html#multipleext">mod_mime</a> belgesine
525 <p>Bir MIME türü uzantısına sahip bir dosyanın (<code>html</code> gibi),
526 kodlanmış bir gösterimi (<code>gz</code> gibi) mevcut olabilir. Bu
527 dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
528 (<code>en</code> gibi) olabilir.</p>
533 <li>misal.en.html</li>
535 <li>misal.html.en</li>
537 <li>misal.en.html.gz</li>
540 <p>Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:</p>
542 <table class="bordered">
547 <th>Geçerli Hiperbağ</th>
549 <th>Geçersiz Hiperbağ</th>
553 <td><em>misal.html.en</em></td>
562 <td><em>misal.en.html</em></td>
570 <td><em>misal.html.en.gz</em></td>
580 <td><em>misal.en.html.gz</em></td>
590 <td><em>misal.gz.html.en</em></td>
600 <td><em>misal.html.gz.en</em></td>
610 <p>Yukarıdaki tabloya bakarak hiperbağlarda bir dosya ismini uzantısız
611 olarak (<code>misal</code> gibi) kullanmanın daima mümkün olduğunu
612 farkedeceksiniz. Böylece bir belgenin asıl türünü gizleyebilir ve
613 sonradan bir hiperbağ değişikliği yapmaksızın örneğin
614 <code>html</code>’den <code>shtml</code> veya <code>cgi</code>’ye
617 <p>Hiperbağlarda MIME türlerini (<code>misal.html</code> gibi) kullanmaya
618 devam etmek istiyorsanız dil uzantısı MIME türü uzantısının sağında
619 kalmalıdır (<code>misal.html.en</code> gibi).</p>
620 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
621 <div class="section">
622 <h2><a name="caching" id="caching">Arabellekler Hakkında</a></h2>
624 <p>Bir arabellek, bir gösterimi istek URL’si ile ilişkilendirerek saklar.
625 Böylece, sonradan aynı URL için bir istek yapıldığında kaydettiği
626 gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaşılan türdeyse
627 arabelleğe ilk istenen çeşit saklanmış olacağından isteğe yanlış
628 gösterimle yanıt verilmiş olacaktır. Bunun olmaması için httpd, normal
629 olarak içerik uzlaşımının sonucu olarak döndürülen tüm yanıtları
630 HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. httpd
631 ayrıca, uzlaşımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1
632 protokolünü de destekler.</p>
634 <p>HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
635 istekler için, uzlaşıma konu yanıtların arabelleklenmesini mümkün kılmak
636 üzere <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> yönergesi kullanılabilir. Bu yönerge
637 argümansızdır ve sunucu genelinde veya sanal konakların
638 yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
639 isteklere bir etkisi yoktur.</p>
641 <p>HTTP/1.1 istemciler için, httpd, yanıtın uzlaşım boyutlarını göstermek
642 üzere bir <code>Vary</code> HTTP yanıt başlığı gönderir. Arabellekler bu
643 bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
644 arabelleğin uzlaşım boyutlarına bakmaksızın yerel kopyasını kullanmaya
645 teşvik etmek için <code>force-no-vary</code> <a href="env.html#special">ortam değişkenini</a> etkin kılabilirsiniz.</p>
648 <div class="bottomlang">
649 <p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
650 <a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
651 <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
652 <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
653 <a href="./tr/content-negotiation.html" title="Türkçe"> tr </a></p>
654 </div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>This section is experimental!</strong><br />Comments placed here should not be expected
655 to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
656 <div id="disqus_thread">
657 </div><script type="text/javascript"><!--//--><![CDATA[//><!--
659 var disqus_shortname = 'httpd';
660 var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
661 if (disqus_identifier.indexOf("httpd.apache.org") != -1) {
663 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
664 dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
665 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
668 var text = document.createTextNode("Comments have been disabled for offline viewing.");
669 document.getElementById('disqus_thread').appendChild(text);
671 //--><!]]></script></div><div id="footer">
672 <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>
673 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
674 if (typeof(prettyPrint) !== undefined) {