content-negotiation.html.tr.utf8 37.1 KB
Newer Older
powelld's avatar
powelld committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>İçerik Uzlaşımı - Apache HTTP Sunucusu Sürüm 2.4</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<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>
<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="./">Sürüm 2.4</a></div><div id="page-content"><div id="preamble"><h1>İçerik Uzlaşımı</h1>
<div class="toplang">
<p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/content-negotiation.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>


    <p>Apache HTTPD, içerik uzlaşımını HTTP/1.1 belirtiminde bahsedildiği şekliyle
      destekler. Bir özkaynağın en iyi gösterimini, tarayıcının sağladığı
      karakter kodlaması, karakter kümesi, dil, ortam türü gibi kullanıcı
      tercihlerine bağlı olarak seçebilir. Ayrıca, tarayıcının kullanıcı
      tercihlerini tam yansıtamadığı durumlarda istekleri daha akıllıca ele
      alabilmeyi sağlayacak bir takım özelliklere de sahiptir.</p>

    <p>İçerik uzlaşımı öntanımlı olarak derlenen
      <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü tarafından sağlanır.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#about">İçerik Uzlaşımı Hakkında</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#negotiation">httpd’de İçerik Uzlaşımı</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#methods">Uzlaşım Yöntemleri</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#better">Üstünlük Değerleriyle Oynamak</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#caching">Arabellekler Hakkında</a></li>
</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="about" id="about">İçerik Uzlaşımı Hakkında</a></h2>

    <p>Bir özkaynağın bir çok farklı gösterimi olabilir. Örneğin, bir belgenin
      farklı ortam türleri ve/veya farklı diller için gösterimleri olabilir.
      En uygun seçimi yapmanın tek yolu kullanıcıya bir liste verip seçmesini
      istemektir. Bununla birlikte sunucunun bu seçimi kendiliğinden yapması
      da mümkündür. Tarayıcılar isteğin bir parçası olarak kullanıcı
      tercihlerini de gönderdiğinden bu istendiği gibi çalışır. Örneğin bir
      tarayıcı, kullanıcısınının mümkünse Fransızca içerik tercih ettiğini
      yoksa İngilizce içeriğe de razı olabileceğini belirtebilirdi.
      Tarayıcılar bu tercihleri başlıkta belirtirler. Tarayıcı sadece Türkçe
      içerik istendiğini şöyle belirtebilirdi:</p>

    <div class="example"><p><code>Accept-Language: tr</code></p></div>

    <p>Bu tercihin yerine getirilebilmesininin sadece, desteklenen diller
      arasında bu dilin varlığına ve istenen belgenin bu dilde bir
      gösteriminin bulunmasına bağlı oluşuna dikkat ediniz.</p>

    <p>Daha karmaşık bir istek örneği olarak, tarayıcının Fransızca ve
      İngilizce içerik kabul etmeye ayarlandığını fakat Fransızcayı tercih
      ettiğini ve çeşitli ortam türlerini kabul etmekle birlikte salt metin ve
      diğer metin türlerinden ziyade HTML tercih ettiğini, ayrıca, diğer ortam
      türleri üzerinde GIF veya JPEG tercih ettiğini fakat başka çare yoksa
      her ortam türüne de izin verdiğini belirtiyor olsun:</p>

    <div class="example"><p><code>
      Accept-Language: fr; q=1.0, en; q=0.5<br />
      Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg;
      q=0.6, image/*; q=0.5, */*; q=0.1
    </code></p></div>

    <p>httpd, HTTP/1.1 belirtiminde tanımlanan şekliyle ‘sunucu yönetiminde’
      içerik uzlaşımını destekler. <code>Accept</code>,
      <code>Accept-Language</code>, <code>Accept-Charset</code> ve
      <code>Accept-Encoding</code> istek başlıklarını tamamen destekler.
      httpd ayrıca, RFC 2295 ve RFC 2296’da tanımlanan bir deneysel uzlaşım
      olarak ‘şeffaf’ içerik uzlaşımını da destekler. Fakat ‘özellik
      uzlaşımını’ bu RFC’lerde tanımlandığı gibi desteklemez.</p>

    <p>Bir <strong>özkaynak</strong> bir URI (RFC 2396) tarafından betimlenen
      kavramsal bir öğedir. Apache gibi bir HTTP sunucusu, ortam türü,
      karakter kümesi, kodlama ve saire ile tanımlanmış bir bayt dizisi
      şeklindeki her gösterimiyle, özkaynaklara kendi isim alanları dahilinde
      erişim sağlar. Her özkaynağın aynı anda bir veya daha fazla gösterimi
      mevcut olabileceği gibi hiç mevcut olmayabilir de. Eğer çok sayıda
      gösterim mevcutsa, bu özkaynağın <strong>uzlaşılabilir</strong>
      olduğundan ve her gösteriminin  bir <strong>çeşitlilik</strong>
      oluşturduğundan bunun da uzlaşımın <strong>boyutlar</strong>ından
      kaynaklandığından bahsedilebilir.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="negotiation" id="negotiation">httpd’de İçerik Uzlaşımı</a></h2>

    <p>Bir özkaynak üzerinde uzlaşılırken gösterim çeşitlerinin her biri
      hakkında sunucuya bilgi verilmesi gerekir. Bu iki yolla yapılabilir:</p>

    <ul>
      <li>Ya gösterim çeşitlerini içeren dosyaların isimleriyle eşleşmeyi
        sağlayan bir tür eşlemi kullanılır (bir <code>*.var</code> dosyası
        gibi).</li>

      <li>Ya da sunucu örtük bir dosya ismi kalıbı eşleşmesinin ardından
        sonuçlar arasından seçim yapar; buna ‘Çoklu Görünüm’ araması adı
        verilir.</li>
    </ul>

   <h3><a name="type-map" id="type-map">Bir türeşlem dosyası kullanmak</a></h3>

    <p>Bir türeşlem dosyası, <code>type-map</code> eylemcisi ile ilişkili bir
      belgedir (ya da eski httpd yapılandırmaları ile geriye uyumluluk için,
      <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
      bir belgedir). Bu özelliği kullanmak için, yapılandırmada bir tür
      eşleyici olarak her dosya ismi uzantısı için bir <code>type-map</code>
      eylemcisi tanımlamalısınız. Bu, sunucu yapılandırma dosyasında en iyi
      şöyle yapılabilir:</p>

    <pre class="prettyprint lang-config">AddHandler type-map .var</pre>


    <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde
      olmalı ve isim bir <code>.var</code> uzantısı içermelidir. Aşağıdaki
      örneklerde özkaynak ismi <code>foo</code> olduğundan türeşlem dosyasının
      ismi <code>foo.var</code>'dır.</p>

    <p>Bu dosya her gösterim çeşidi için bir girdi içermelidir; bu girdiler
      ardarda belirtilen HTTP biçem başlık satırlarından oluşur. Farklı
      gösterimlerin girdileri bir boş satırla diğerlerinden ayrılır. Aynı
      girdi içinde boş satır kullanılamaz. Bir eşlem dosyasını bir birleşik
      öğenin tamamı için bir girdi ile başlatmak adet olmuştur (ise de, bu
      gerekli değildir, hele yoksayılacaksa hiç gerekli değildir). Eşlem
      dosyası için aşağıda bir örnek verilmiştir.</p>

   <p>Bu dosyadaki URI'ler türeşlem dosyasının yerine görelidir. Dolayısıyla,
     bu dosyaların aynı dizinde bulunması beklenirse de bu gerekli değildir.
     Aynı sunucuda bulunan tüm dosyalar için türeşlem dosyasındaki gibi mutlak
     veya göreli URI'ler belirtebilirsiniz.</p>

    <div class="example"><p><code>
      URI: misal<br />
    <br />
      URI: misal.en.html<br />
      Content-type: text/html<br />
      Content-language: en<br />
    <br />
      URI: misal.fr.de.html<br />
      Content-type: text/html;charset=iso-8859-2<br />
      Content-language: fr, de<br />
    </code></p></div>

    <p>Ayrıca, <code>MultiViews</code> etkin olsa bile bir türeşlem dosyasının
      dosya ismi uzantılarının taranmasına göre öncelik alacağına dikkat
      ediniz. Eğer gösterimler bu örnekteki resim dosyasında olduğu gibi
      farklı kaynak üstünlüklerine sahipseler, ortam türünün <code>qs</code>
      parametresi kullanılarak kaynak üstünlükleri belirtilebilir: </p>

    <div class="example"><p><code>
      URI: misal<br />
    <br />
      URI: misal.jpeg<br />
      Content-type: image/jpeg; <strong>qs=0.8</strong><br />
    <br />
      URI: misal.gif<br />
      Content-type: image/gif; <strong>qs=0.5</strong><br />
    <br />
      URI: misal.txt<br />
      Content-type: text/plain; <strong>qs=0.01</strong><br />
    </code></p></div>

    <p><code>qs</code> değerleri 0.000-1.000 değer aralığı içinde
      belirtilebilir. 0.000 <code>qs</code> değerine sahip gösterimin asla
      seçilmeyeceğine dikkat ediniz. Bir <code>qs</code> değeri belirtilmeyen
      gösterimlerin kaynak üstünlüğü 1.000 kabul edilir. <code>qs</code>
      parametresinin belirttiği değer istemcinin yeteneklerinden bağımsız
      olarak olası gösterimler arasında göreli bir üstünlük ifade eder.
      Örneğin bir fotoğraf sözkonusu olduğunda bir JPEG dosyasının kaynak
      üstünlüğü bir ASCII çiziminkinden yüksek olacaktır. Diğer taraftan özgün
      resim bir ASCII çizim olduğu takdirde, ASCII çizim, bir JPEG gösterimine
      göre öncelikli olacaktır. Bu nedenle <code>qs</code> değeri özkaynağın
      doğasına bakarak belirlenir.</p>

    <p>Tanınan başlıkların tam listesini <a href="mod/mod_negotiation.html#typemaps">mod_negotiation</a> modülünün
      belgesinde bulabilirsiniz.</p>
  

  <h3><a name="multiviews" id="multiviews">Çoklu Görünümler</a></h3>

    <p><code>MultiViews</code>, <code>httpd.conf</code> dosyasındaki veya
      (<code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> yönergesinin
      değerine bağlı olarak) <code>.htaccess</code> dosyalarındaki <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="./mod/core.html#location">&lt;Location&gt;</a></code> veya <code class="directive"><a href="./mod/core.html#files">&lt;Files&gt;</a></code> bölümleri içinde
      <code class="directive"><a href="./mod/core.html#options">Options</a></code> yönergeleri ile
      belirtilebilen, dizine özgü bir seçenektir. Yalnız, dikkatli olun,
      <code>Options All</code> yaparak <code>MultiViews</code> seçeneğini
      etkin kılamazsınız; seçeneği ismiyle açıkça belirtmelisiniz.</p>

    <p><code>MultiViews</code> şöyle etki eder: Sunucudan,
      <code>MultiViews</code> seçeneğinin etkin olduğu <code>/bir/dizin</code>
      dizininden <code>filanca</code> dosyası için bir istekte bulunulmuşsa
      fakat dizinde bu dosya yoksa, sunucu dizin içeriğini
      <code>filanca.*</code> dosyaları için tarar ve bu dosyalar için
      istemcinin ismiyle talep ettiği ortam türlerini ve kodlamaları
      kullanarak bir türeşlem dosyası uydurup bu gösterimler arasından
      istemcinin gereksinimlerine en uygun gösterimi seçer.</p>

    <p><code>MultiViews</code> ayrıca, sunucunun bir dizin içeriğini
      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
      arama tertipleyebilir. Eğer yapılandırma dosyalarında</p>

    <pre class="prettyprint lang-config">DirectoryIndex index</pre>


    <p>şeklinde bir atama varsa ve dizinde <code>index.html</code> ve
      <code>index.html3</code> dosyaları varsa sunucu bunlar arasından hakem
      sıfatıyla bir seçim yapacaktır; ama bu ikisi yerine dizinde sadece
      <code>index.cgi</code> mevcutsa sunucu sadece bu dosyayı
      çalıştıracaktır.</p>

    <p>Okunan dizinde bulunan dosyalar arasında <code>mod_mime</code>
      tarafından tanınan karakter kümesi, içerik türü, dil ve kodlama
      başlıklarına uygun gösterim uzantılarından birine sahip bir dosya yoksa
      sonuç <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>
      yönergesiyle yapılan tanıma bağlı olur. Bu yönerge hangi diğer dosya
      uzantılarının, eylemcilerin veya süzgeçlerin çok gösterimli uzlaşımla
      ilintileneceğini belirler.</p>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="methods" id="methods">Uzlaşım Yöntemleri</a></h2>

    <p>httpd’nin, bir türeşlem dosyası veya dizin içindeki bir dosya
      sayesinde belli bir özkaynağın gösterim çeşitlerinin bir listesini elde
      ettikten sonra ‘en uygun’ gösterime karar vermek için kullanabileceği
      iki yöntem vardır. httpd’nin içerik uzlaşım özelliklerinin kullanımı
      sırasında uzlaşımın nasıl yerine getirileceği ile ilgili ayrıntıları
      bilmek aslında gerekli değildir. Bununla birlikte belgenin kalanında bu
      konu açıklanmaya çalışılmıştır.</p>

    <p>İki uzlaşım yöntemi vardır:</p>

    <ol>
      <li>Normal durumda <strong>sunucu yönetiminde httpd uzlaşım
        algoritması</strong> kullanılır. Bu algoritma aşağıda ayrıntılı olarak
        açıklanmıştır. Bu algoritma kullanıldığı zaman, httpd, en iyi sonuca
        ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’.
        httpd’nin bu katsayılarla oynama işini nasıl yaptığı aşağıda daha
        ayrıntılı açıklanmıştır.</li>

      <li>İstemci bu işlem için özellikle RFC 2295’te tanımlanan mekanizmanın
        kullanılmasını isterse <strong>şeffaf içerik uzlaşımı</strong>
        kullanılır. Bu uzlaşım yöntemi, en uygun gösterimin seçilmesi
        konusunda tarayıcıya tam denetim imkanı verir; dolayısıyla sonuç
        tarayıcının bu işlem için kullandığı algoritmanın başarısına bağlıdır.
        Şeffaf uzlaşım sürecinin bir parçası olarak, tarayıcı, RFC 2296’da
        tanımlanan ‘gösterim çeşidini uzaktan seçme algoritması’nın
        çalıştırılmasını httpd’den isteyebilir.</li>
    </ol>

  <h3><a name="dimensions" id="dimensions">Uzlaşımın Boyutları</a></h3>

    <table>
      
      <tr valign="top">
        <th>Boyut</th>

        <th>Açıklama</th>
      </tr>

      <tr valign="top">
        <td>Ortam Türü</td>

        <td>Tarayıcı ortam türü tercihlerini <code>Accept</code> başlık alanı
          ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir. Gösterimin açıklaması da ayrıca bir kaynak üstünlüğüne
          (<code>qs</code> parametresi) sahip olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Dil</td>

        <td>Tarayıcı dil tercihlerini <code>Accept-Language</code> başlık
          alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir. Gösterimler bir kaç dilde olabileceği gibi hiç bir dille
          ilişkilendirimemiş de olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Kodlama</td>

        <td>Tarayıcı kodlama tercihlerini <code>Accept-Encoding</code> başlık
          alanı ile belirtir. Her öğenin kendine özgü bir üstünlük katsayısı
          olabilir.</td>
      </tr>

      <tr valign="top">
        <td>Karakter Kümesi</td>

        <td>Tarayıcı karakter kümesi tercihlerini <code>Accept-Charset</code>
          başlık alanı ile belirtir. Her öğenin kendine özgü bir üstünlük
          katsayısı olabilir. Gösterim çeşitleri karakter kümesini ortam
          türünün bir parametresi olarak belirtebilirler.</td>
      </tr>
    </table>
  

  <h3><a name="algorithm" id="algorithm">httpd Uzlaşım Algoritması</a></h3>

    <p>httpd, tarayıcıya döndürülecek en uygun gösterim çeşidini (varsa)
      seçmek için aşağıdaki algoritmayı kullanabilir. Bu algoritma pek de
      yapılandırılabilir değildir. Şöyle çalışır:</p>

    <ol>
      <li>Önce her uzlaşım boyutu için ilgili <em>Accept*</em> başlık alanına
        bakılıp her gösterim çeşidine bir üstünlük katsayısı atanır. Eğer
        boyutlardan bazıları için ilgili <em>Accept*</em> başlığı
        uygulanabilir değilse bu boyut elenir ve sonuçta hiçbir gösterim
        çeşidi kalmasza 4. adıma atlanır.</li>

      <li>‘En uygun’ gösterim çeşidi bir eleme süreciyle seçilir. Bu süreç
        sırasında aşağıdaki sınamalar sırayla uygulanır. Sınamalardan
        geçemeyen bir gösterim çeşidi elenir.  Sınamaların bir aşamasında tek
        bir gösterim çeşidi kalırsa bu en uygun eşleşme olarak seçilmiş olur
        ve 3. adıma atlanır. Eğer birden fazla gösterim çeşidi kalırsa sonraki
        sınamaya geçilir.

        <ol>
          <li><code>Accept</code> başlığındaki üstünlük katsayısı ile
            gösterimin ortam türünde belirtilen kaynak üstünlüğünün çarpımı en
            büyük olan gösterim çeşidi seçilir.</li>

          <li>En yüksek dil üstünlük katsayısına sahip gösterim çeşidi seçilir.
          </li>

          <li>En uygun dil eşleşmesine sahip gösterim çeşidini seçmek için
            önce varsa <code>Accept-Language</code> başlığındaki dil
            sıralamasına bakılır, aksi takdirde <code>LanguagePriority</code>
            yönergesi ile atanmışsa oradaki dil sıralamasına bakılır.</li>

          <li>En yüksek ‘seviyeden’ ortam parametresine (text/html ortam türü
            sürümünü belirtmekte kullanılır) sahip gösterim çeşitleri
            seçilir.</li>

          <li><code>Accept-Charset</code> başlık satırında belirtilene bakarak
            en uygun karakter kümesine sahip gösterim çeşitleri seçilir.
            Alenen dışlanmadıkça ISO-8859-1 kabul edilebilir karakter
            kümesidir. <code>text/*</code> ortam türüne sahip gösterim
            çeşitlerinden belli bir karakter kümesi ile ilişkilendirilmemiş
            olanların karakter kümesinin ISO-8859-1 olduğu varsayılır.</li>

          <li>ISO-8859-1 karakter kümesi ile ilişkilendirilmemiş gösterim
            çeşitleri seçilir. Böyle hiçbir gösterim yoksa bütün gösterimler
            seçilir.</li>

          <li>En uygun kodlamaya sahip gösterim çeşitleri seçilir. Tarayıcı
            tarafından kabul edilebilir kodlamaya sahip gösterim çeşitleri
            varsa bunlar seçilir. Yoksa kodlanmış ve kodlanmamış gösterim
            çeşitleri karışık olarak mevcutsa sadece kodlanmamış olanlar
            seçilir. Eğer bütün gösterim çeşitlerinin sadece kodlanmış ya da
            sadece kodlanmamış gösterimleri mevcutsa hepsi seçilir.</li>

          <li>En küçük içerik uzunluğuna sahip gösterim çeşitleri seçilir.</li>

          <li>Kalan gösterim çeşitlerinin ilki seçilir. Bu ilk, ya türeşlem
            dosyasında listelenen ilk çeşittir ya da gösterimler bir dizinden
            okunuyorsa ASCII kod sıralamasına göre ilk sıradaki dosya ismine
            sahip gösterimdir.</li>
        </ol>
      </li>

      <li>Algoritma, artık seçilmiş en uygun gösterim çeşidine sahipse bu
        artık yanıt olarak döndürülebilir. HTTP yanıt başlığı
        <code>Vary</code>’ye uzlaşım boyutları atanır (tarayıcı ve
        arabellekler özkaynağı kaydederken bu bilgiyi kullanırlar)
        ve algoritma sonlandırılır.</li>

      <li>Buraya gelinmişse hiçbir gösterim seçilmemiş demektir (hiçbiri
        tarayıcı tarafından kabul edilebilir bulunmadığından dolayı).
        Gövdesinde mevcut gösterim çeşitlerini listeleyen bir HTML belgesi 406
        durum koduyla döndürülür (406: ‘kabul edilebilir bir gösterim yok’).
        Ayrıca HTTP <code>Vary</code> başlığında gösterim çeşitliliğinin
        boyutları belirtilir.</li>
    </ol>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="better" id="better">Üstünlük Değerleriyle Oynamak</a></h2>

    <p>httpd bazen yukarıdaki httpd uzlaşım algoritmasının kesin sonucunun
      beklenenden farklı olması için üstünlük değerleriyle oynar. Bunu tam ve
      doğru bilgi göndermeyen tarayıcılar için algoritmadan en iyi sonucu elde
      etmek amacıyla yapar. Bazen günümüzün en tanınmış tarayıcıları bile çoğu
      durumda yanlış bir seçimle sonuçlanmayacaksa <code>Accept</code> başlık
      bilgilerini göndermemektedir. Eğer tarayıcı eksiksiz ve doğru bilgi
      gönderirse httpd bu değerlerle oynamayacaktır.</p>

  <h3><a name="wildcards" id="wildcards">Ortam Türleri ve Dosyaismi Kalıpları</a></h3>

    <p><code>Accept:</code> istek başlığı ortam türü tercihlerini yansıtır.
      Ayrıca, * bir dizge ile eşleşmek üzere "image/*" veya  "*/*" gibi ortam
      türü kalıpları da içerebilir. Dolayısıyla şöyle bir istek,</p>

    <div class="example"><p><code>Accept: image/*, */*</code></p></div>

    <p>diğer türler gibi "image/" ile başlayan ortam türlerini kabul
      edilebilir kılacaktır. Bazı tarayıcılar ortam türlerini örtük olarak
      elde etmek amacıyla hep bu tür kalıplar gönderirler. Örnek:</p>

    <div class="example"><p><code>
      Accept: text/html, text/plain, image/gif, image/jpeg, */*
    </code></p></div>

    <p>Bunun amacı, açıkça listelenmiş türlerin tercih edildiğini, fakat
      farklı gösterimler varsa onların da kabul edilebileceğini belirtmektir.
      Üstünlük değerlerini doğrudan kullanarak tarayıcılar gerçekte ne
      istediklerini şuna benzer şekilde belirtebilirler:</p>

    <div class="example"><p><code>
      Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
    </code></p></div>

    <p>Açıkça belirtilen türler için üstünlük katsayısı belirtilmemiştir,
      dolayısıyla üstünlük katsayılarının 1.0 (en yüksek) olduğu
      varsayılmaktadır. */* kalıbı 0.01 gibi çok daha düşük bir öncelik
      belirtmektedir. Bu bakımdan, ancak, açıkça belirtilen türlerden
      hiçbirinin bulunmaması halinde diğer türler eşleşecektir.</p>

    <p>Eğer <code>Accept:</code> başlığı <em>hiçbir</em> <code>q</code>
      katsayısı içermiyorsa ve başlıkta "*/*" belirtilmişse, httpd istenen
      davranışı taklit etmek için bu kalıba 0.01 katsayısını atar. Keza
      "type/*" kalıbına da 0.02 katsayısını atar (yani, */* kalıbına göre
      tercihli olur). Eğer  <code>Accept:</code> alanındaki her ortam türü bir
      <code>q</code> katsayısı içeriyorsa bu özel değerler uygulanmaz.
      Dolayısıyla gerekli bilgiyi açıkça bildiren tarayıcılardan gelen
      istekler umulduğu gibi işlem görecektir.</p>
  

  <h3><a name="exceptions" id="exceptions">Dil Uzlaşımında İstisnalar</a></h3>

    <p>httpd 2.0’dan itibaren, uzlaşım algoritmasına, bir eşleşme bulmak
      konusunda algoritma başarılı olamadığı takdirde hoş bir son çareye izin
      vermek için bazı istisnalar eklenmiştir.</p>

    <p>İstemci sunucudan bir sayfa istediğinde, sunucu, tarayıcı tarafından
      gönderilen <code>Accept-language</code> başlığıyla eşleşen tek bir sayfa
      bulamadığı takdirde istemciye ya “Kabul edilebilir bir gösterim çeşidi
      yok” ya da “Çok sayıda seçim belirtilmiş” yanıtını döndürür. Bu hata
      iletilerinden kaçınmak için bu gibi durumlarda httpd
      <code>Accept-language</code> başlığını yoksaymaya ayarlanabilir. Böylece
      istemcinin isteğine tam olarak uymasa da bir belge sağlanır. Bu hata
      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
      kullanılabilir ve sunucunun kararını <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> yönergesine
      dayanarak vermesi sağlanabilir.</p>

    <p>Sunucu ayrıca, tam bir eşleşme bulunmadığı zaman lehçelerle de eşleşme
      arayabilir. Örneğin, bir istemci Britanya İngilizcesi
      (<code>en-GB</code>) ile yazılmış belgeler için istekte bulunursa,
      sunucu normalde HTTP/1.1 standardına göre bir belgenin basitçe
      <code>en</code> olarak imlenmesine izin vermez. (Bir okuyucu Britanya
      İngilizcesini anlıyor ama genel İngilizceyi anlamıyor diye
      <code>Accept-Language</code> başlığında <code>en</code>  değil de
      <code>en-GB</code>’yi belirtmesinin hemen hemen daima bir yapılandırma
      hatasına yol açacağına dikkat ediniz. Maalesef, mevcut istemcilerin çoğu
      öntanımlı yapılandırmalarında buna benzer şeyler yapmaktadır.) Bununla
      birlikte, başka bir dille eşleşme mümkün değilse ve sunucu “Kabul
      edilebilir bir gösterim çeşidi yok” hatasını döndürmeye hazırsa veya
      <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code> son
      çaresine ayarlanmışsa alt küme belirtimini yok sayacak ve
      <code>en</code> belge isteklerine <code>en-GB</code> belgelerle yanıt
      verecektir. httpd, lehçenin üyesi olduğu anadili, istemcinin kabul
      edilebilir diller listesine örtük olarak düşük bir üstünlük değeri ile
      ekler. Yalnız şuna dikkat edin, eğer istemci tercihini "en-GB; q=0.9,
      fr; q=0.8" olarak belirtirse ve sunucuda sadece "en" ve "fr" belgeleri
      varsa sunucu "fr" belge ile yanıt verecektir. HTTP/1.1 belirtimi ile
      uyumluluğu sağlamak ve düzgün yapılandırılmış istemcilerle gerektiği
      gibi çalışabilmek için bu gereklidir.</p>

    <p>Gelişmiş tekniklerin (çerezler, özel URL yolları gibi) desteklenmesi
      sırasında, kullanıcının tercih ettiği dili saptamak için httpd 2.0.47
      sürümünden beri <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> modülü
      <code>prefer-language</code> <a href="env.html">ortam değişkenini</a>
      tanımaktadır. Değişken mevcutsa ve uygun bir dil yaftası içeriyorsa
      <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> uygun gösterimi seçmeyi deneyecektir.
      Böyle bir gösterim çeşidi mevcut değilse normal uzlaşım işlemi
      uygulanacaktır.</p>

    <div class="example"><h3>Örnek</h3><pre class="prettyprint lang-config">SetEnvIf Cookie "language=(.+)" prefer-language=$1
Header append Vary cookie</pre>
</div>
  
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="extensions" id="extensions">Şeffaf İçerik Uzlaşımının Genişletilmesi</a></h2>
  

  <p>httpd, şeffaf içerik uzlaşımı protokolünü (RFC 2295) şöyle genişletir:
    Sadece içerik kodlamasına özgü olmak üzere gösterim çeşidi listelerinde
    gösterim çeşitlerini imlemek için yeni bir <code>{encoding ..}</code>
    elemanı kullanılır. RVSA/1.0 algoritmasının (RFC 2296) gerçeklenimi,
    listedeki kodlanmış gösterim çeşitlerini tanımak ve onları
    <code>Accept-Encoding</code> başlık alanıyla ilgili olarak kabul
    edilebilir kodlamalara aday gösterim çeşitleri olarak kullanmak üzere
    genişletilmiştir. RVSA/1.0 gerçeklenimi, en uygun gösterim çeşidi
    seçiminin öncesinde hesaplanmış üstünlük katsayısını virgülden sonra beş
    haneye yuvarlamaz.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="naming" id="naming">Hiperbağlar ve İsimlendirme Uzlaşımları</a></h2>

    <p>Eğer dil uzlaşımı kullanıyorsanız ve birden fazla dosya ismi uzantısına
      sahip dosyalarınız varsa uzantıların sıralamasının normalde uygunsuz
      düştüğü farklı isimlendirme yaklaşımlarında bulunabilirsiniz (ayrıntılar
      için <a href="mod/mod_mime.html#multipleext">mod_mime</a> belgesine
      bakınız).</p>

    <p>Bir MIME türü uzantısına sahip bir dosyanın (<code>html</code> gibi),
      kodlanmış bir gösterimi (<code>gz</code> gibi) mevcut olabilir. Bu
      dosyanın ayrıca farklı dillerdeki gösterimleri için de bir uzantısı
      (<code>en</code> gibi) olabilir.</p>

    <p>Örnekler:</p>

    <ul>
      <li>misal.en.html</li>

      <li>misal.html.en</li>

      <li>misal.en.html.gz</li>
    </ul>

    <p>Hiperbağ olarak geçerli ve geçersiz bazı dosya ismi örnekleri:</p>

    <table class="bordered">
      
      <tr>
        <th>Dosya ismi</th>

        <th>Geçerli Hiperbağ</th>

        <th>Geçersiz Hiperbağ</th>
      </tr>

      <tr>
        <td><em>misal.html.en</em></td>

        <td>misal<br />
         misal.html</td>

        <td>-</td>
      </tr>

      <tr>
        <td><em>misal.en.html</em></td>

        <td>misal</td>

        <td>misal.html</td>
      </tr>

      <tr>
        <td><em>misal.html.en.gz</em></td>

        <td>misal<br />
         misal.html</td>

        <td>misal.gz<br />
         misal.html.gz</td>
      </tr>

      <tr>
        <td><em>misal.en.html.gz</em></td>

        <td>misal</td>

        <td>misal.html<br />
         misal.html.gz<br />
         misal.gz</td>
      </tr>

      <tr>
        <td><em>misal.gz.html.en</em></td>

        <td>misal<br />
         misal.gz<br />
         misal.gz.html</td>

        <td>misal.html</td>
      </tr>

      <tr>
        <td><em>misal.html.gz.en</em></td>

        <td>misal<br />
         misal.html<br />
         misal.html.gz</td>

        <td>misal.gz</td>
      </tr>
    </table>

    <p>Yukarıdaki tabloya bakarak hiperbağlarda bir dosya ismini uzantısız
      olarak (<code>misal</code> gibi) kullanmanın daima mümkün olduğunu
      farkedeceksiniz. Böylece bir belgenin asıl türünü gizleyebilir ve
      sonradan bir hiperbağ değişikliği yapmaksızın örneğin
      <code>html</code>’den <code>shtml</code> veya <code>cgi</code>’ye
      geçebilirsiniz.</p>

    <p>Hiperbağlarda MIME türlerini (<code>misal.html</code> gibi) kullanmaya
      devam etmek istiyorsanız dil uzantısı MIME türü uzantısının sağında
      kalmalıdır (<code>misal.html.en</code> gibi).</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="caching" id="caching">Arabellekler Hakkında</a></h2>

    <p>Bir arabellek, bir gösterimi istek URL’si ile ilişkilendirerek saklar.
      Böylece, sonradan aynı URL için bir istek yapıldığında kaydettiği
      gösterimi kullanabilir. Fakat özkaynak sunucuyla uzlaşılan türdeyse
      arabelleğe ilk istenen çeşit saklanmış olacağından isteğe yanlış
      gösterimle yanıt verilmiş olacaktır. Bunun olmaması için httpd, normal
      olarak içerik uzlaşımının sonucu olarak döndürülen tüm yanıtları
      HTTP/1.0 istemciler tarafından arabelleklenemez olarak imler. httpd
      ayrıca, uzlaşımlı yanıtların arabelleklenmesini mümkün kılan HTTP/1.1
      protokolünü de destekler.</p>

    <p>HTTP/1.0 uyumlu istemcilerden (bir tarayıcı veya arabellek) gelen
      istekler için, uzlaşıma konu yanıtların arabelleklenmesini mümkün kılmak
      üzere <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> yönergesi kullanılabilir. Bu yönerge
      argümansızdır ve sunucu genelinde veya sanal konakların
      yapılandırılmasında kullanılabilir. Bunun HTTP/1.1 istemcilerinden gelen
      isteklere bir etkisi yoktur.</p>

    <p>HTTP/1.1 istemciler için, httpd, yanıtın uzlaşım boyutlarını göstermek
      üzere bir <code>Vary</code> HTTP yanıt başlığı gönderir. Arabellekler bu
      bilgiyi sonraki istekleri yerel kopyadan sunarken kullanabilirler. Bir
      arabelleğin uzlaşım boyutlarına bakmaksızın yerel kopyasını kullanmaya
      teşvik etmek için <code>force-no-vary</code> <a href="env.html#special">ortam değişkenini</a> etkin kılabilirsiniz.</p>

</div></div>
<div class="bottomlang">
<p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/content-negotiation.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</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&amp;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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/content-negotiation.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2017 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>
<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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>