| <?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" /> |
| <meta content="noindex, nofollow" name="robots" /> |
| <!-- |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| This file is generated from xml source: DO NOT EDIT |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| --> |
| <title>İçerik Uzlaşımı - Apache HTTP Sunucusu</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 href="./images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/content-negotiation.html" rel="canonical" /></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="./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.0</p> |
| <img alt="" src="./images/feather.gif" /></div> |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> |
| <div id="path"> |
| <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.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4> |
| <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p> |
| <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/content-negotiation.html">this link</a> to go to the current version of this document.</p></div><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"> en </a> | |
| <a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="./tr/content-negotiation.html" title="Türkçe"> tr </a></p> |
| </div> |
| |
| |
| <p>Apache, 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"><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">Apache’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></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>Apache, 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. |
| Apache 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">Apache’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, <code>type-map</code> eylemcisi ile ilişkili bir belgedir |
| (ya da eski Apache yapılandırmaları ile geriye uyumluluk için, |
| <code>application/x-type-map</code> <span title="sözlüğe bakınız">→</span> <a href="./glossary.html#">MIME türü</a>nde |
| bir belgedir). Bu özelliği kullanmak için, yapılandırmada bir tür |
| eşleyici olarak bir 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> |
| |
| <div class="example"><p><code>AddHandler type-map .var</code></p></div> |
| |
| <p>Türeşlem dosyaları kendilerini tanımlayan özkaynak ile aynı isimde |
| olmalı ve 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. Dosya <code>misal</code> |
| isimli bir özkaynak hakkında olduğundan dosyaya <code>misal.var</code> |
| ismi verilebilir.</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, bir türeşlem dosyasının <code>MultiViews</code> etkin olsa bile |
| dosya ismi uzantısı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_negotation</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"><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 |
| <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> |
| |
| <div class="example"><p><code>DirectoryIndex index</code></p></div> |
| |
| <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>Apache’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. Apache’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 Apache 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, Apache, en iyi sonuca |
| ulaşmak için bazen belli boyutların üstünlük katsayılarıyla ‘oynar’. |
| Apache’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ı Apache’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">Apache Uzlaşım Algoritması</a></h3> |
| |
| <p>Apache, 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>Apache bazen yukarıdaki Apache 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 Apache 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, Apache 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>Apache 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 Apache |
| <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. Apache, 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 Apache 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><p><code> |
| SetEnvIf Cookie "language=en" prefer-language=en<br /> |
| SetEnvIf Cookie "language=fr" prefer-language=fr |
| </code></p></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>Apache, ş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 br 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 Apache, 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. Apache |
| 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> |
| |
| </div></div> |
| <div class="bottomlang"> |
| <p><span>Mevcut Diller: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="./fr/content-negotiation.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="./tr/content-negotiation.html" title="Türkçe"> tr </a></p> |
| </div><div id="footer"> |
| <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> |
| <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div> |
| </body></html> |