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