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