680 lines
37 KiB
XML
680 lines
37 KiB
XML
<?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="<-" 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.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"> 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 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">Yorumlar</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"><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>
|
||
|
||
<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"> 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 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">Yorumlar</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 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 Libera.chat, or sent to our <a href="https://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 2024 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> |