472309252b522ae1fd62e4eb745abea2067769b3yoshiki<?xml-stylesheet type="text/xsl" href="/style/manual.ja.xsl"?>
5d01f40ffd657dd2ac567aacd93cabd162ddfa79coar<!-- English Revision: 675610:1673932 (outdated) -->
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding Licensed to the Apache Software Foundation (ASF) under one or more
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding contributor license agreements. See the NOTICE file distributed with
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding this work for additional information regarding copyright ownership.
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding The ASF licenses this file to You under the Apache License, Version 2.0
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding (the "License"); you may not use this file except in compliance with
db479b48bd4d75423ed4a45e15b75089d1a8ad72fielding the License. You may obtain a copy of the License at
acc36ab93565d2880447d535da6ca6e5feac7a70nd Unless required by applicable law or agreed to in writing, software
acc36ab93565d2880447d535da6ca6e5feac7a70nd distributed under the License is distributed on an "AS IS" BASIS,
acc36ab93565d2880447d535da6ca6e5feac7a70nd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
acc36ab93565d2880447d535da6ca6e5feac7a70nd See the License for the specific language governing permissions and
acc36ab93565d2880447d535da6ca6e5feac7a70nd limitations under the License.
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザにより提供されたメディアタイプ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 言語、文字セット、エンコーディングの優先傾向に基づいて、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 最適なリソースの表現を選択できます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi また、不完全なネゴシエーション情報を送ってくるブラウザからのリクエストを
208651a016b098f4fa1f6279559f104d70f1632dtakashi もっと賢く取り扱えるよう、いくつか機能も実装してあります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>コンテントネゴシエーションは
208651a016b098f4fa1f6279559f104d70f1632dtakashi モジュールによって提供されていて、デフォルトで組み込まれています。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>リソースは、幾つか異なった表現で利用できる場合があります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 例えば、異なる言語や異なるメディアタイプ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi またはそれらの組み合わせで利用できるかも知れません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi もっとも適した選択をする方法の一つには、インデックスページを
208651a016b098f4fa1f6279559f104d70f1632dtakashi ユーザに見せて、ユーザに選んでもらう方法があります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi しかし、サーバが自動的に選ぶことができる場合が多くあります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これは、ブラウザがリクエスト毎に、
208651a016b098f4fa1f6279559f104d70f1632dtakashi どの表現を嗜好するかという情報を送ることで動作しています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 例えばブラウザは、可能ならフランス語で情報を見たい、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 不可能ならその代わりに英語でもよいと、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 自分の嗜好を知らせることができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザはリクエストのヘッダで自分の優先傾向を知らせます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi フランス語のみの表現を要求する場合は、ブラウザは次を送ります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>この優先傾向は、選択可能な表現が存在して、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 言語によって様々な表現がある場合にのみ適用される
208651a016b098f4fa1f6279559f104d70f1632dtakashi ということに注意してください。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>もっと複雑なリクエストの例を挙げましょう。
208651a016b098f4fa1f6279559f104d70f1632dtakashi このブラウザはフランス語と英語を受け付ける、しかしフランス語を好む、
208651a016b098f4fa1f6279559f104d70f1632dtakashi そして様々なメディアタイプを受け付けるが、
208651a016b098f4fa1f6279559f104d70f1632dtakashi プレインテキストや他のタイプよりは HTML を好む、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 他のメディアタイプよりは GIF や JPEG を好む、しかし最終手段として
208651a016b098f4fa1f6279559f104d70f1632dtakashi 他のメディアタイプも受け付ける、と設定されています。</p>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki Accept-Language: fr; q=1.0, en; q=0.5<br />
472309252b522ae1fd62e4eb745abea2067769b3yoshiki 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
208651a016b098f4fa1f6279559f104d70f1632dtakashi driven' コンテントネゴシエーションをサポートしています。
57fbfdce466d9a43dd4c161c901360f8f2ad2757yoshiki <code>Accept-Charset</code>, <code>Accept-Encoding</code>
208651a016b098f4fa1f6279559f104d70f1632dtakashi リクエストヘッダを完全にサポートしています。Apache は
208651a016b098f4fa1f6279559f104d70f1632dtakashi 'transparent' コンテントネゴシエーションもサポートしていますが、
208651a016b098f4fa1f6279559f104d70f1632dtakashi これは RFC 2295 と RFC 2296 で定義されている試験的な
208651a016b098f4fa1f6279559f104d70f1632dtakashi ネゴシエーションプロトコルです。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これらの RFCで定義されている 'feature negotiation'
208651a016b098f4fa1f6279559f104d70f1632dtakashi はサポートしていません。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi で特定される概念上のもののことです (RFC 2396)。 Apache
208651a016b098f4fa1f6279559f104d70f1632dtakashi のような HTTP サーバは、その名前空間の中での
208651a016b098f4fa1f6279559f104d70f1632dtakashi 定義されたメディアタイプ、文字セット、エンコーディング等の
208651a016b098f4fa1f6279559f104d70f1632dtakashi 付属した、バイト列の形式です。
208651a016b098f4fa1f6279559f104d70f1632dtakashi それぞれのリソースはある時点で 0 個、1 個、それ以上の表現と
208651a016b098f4fa1f6279559f104d70f1632dtakashi 関連付けられる可能性があります。複数の表現が利用できる場合は、
208651a016b098f4fa1f6279559f104d70f1632dtakashi ネゴシエーション可能なリソースの variant が異なる、
208651a016b098f4fa1f6279559f104d70f1632dtakashi<section id="negotiation"><title>Apache におけるネゴシエーション</title>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>リソースをネゴシエーションするためには、
208651a016b098f4fa1f6279559f104d70f1632dtakashi サーバは variant それぞれについての情報を知っておく必要があります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これは以下の二つの方法のどちらかで行われます。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi を使う方法。 これは variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi を明示的に挙げているファイルを指定します。</li>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <li>'Multiviews'
208651a016b098f4fa1f6279559f104d70f1632dtakashi を使って、サーバが暗黙の内にファイル名にパターン照合を
208651a016b098f4fa1f6279559f104d70f1632dtakashi 行なってその結果から選択する方法。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <section id="type-map"><title>type-map ファイルを使う</title>
208651a016b098f4fa1f6279559f104d70f1632dtakashi (もしくは、古い Apache
208651a016b098f4fa1f6279559f104d70f1632dtakashi の設定と下位互換である <glossary ref="mime-type">MIME タイプ</glossary>
208651a016b098f4fa1f6279559f104d70f1632dtakashi に関連付けられたドキュメントです。
208651a016b098f4fa1f6279559f104d70f1632dtakashi この機能を使うためには、あるファイルの拡張子を
208651a016b098f4fa1f6279559f104d70f1632dtakashi として定義するようなハンドラを、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 設定ファイル中に置く必要があることに注意してください。
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>タイプマップファイルは記述するリソースと同じ名前を持っていて、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 利用可能な variant それぞれのエントリを持っている必要があります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi そして、このエントリは連続した HTTP のヘッダ行で構成されます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 異なる variant のためのエントリは空行で区切られています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi エントリ中に空行が複数あってはいけません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 習慣的には、マップファイルは全体を結合したもののエントリから始まります
208651a016b098f4fa1f6279559f104d70f1632dtakashi (しかしこれは必須ではなく、あったとしても無視されるものです)。
472309252b522ae1fd62e4eb745abea2067769b3yoshiki URI: foo<br />
472309252b522ae1fd62e4eb745abea2067769b3yoshiki Content-language: en<br />
472309252b522ae1fd62e4eb745abea2067769b3yoshiki Content-language: fr, de<br />
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>たとえ MultiViews を使用するようになっていたとしても、
208651a016b098f4fa1f6279559f104d70f1632dtakashi ファイル名の拡張子よりタイプマップの方が優先権を持つということにも
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant の品質が違うときは、この画像のように (JPEG, GIF, ASCII
208651a016b098f4fa1f6279559f104d70f1632dtakashi アートがあります) メディアタイプの "qs"
208651a016b098f4fa1f6279559f104d70f1632dtakashi パラメータで指定されます。</p>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki URI: foo<br />
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>qs 値の範囲は 0.000 から 1.000 です。qs 値が
208651a016b098f4fa1f6279559f104d70f1632dtakashi 0.000 の variant は決して
208651a016b098f4fa1f6279559f104d70f1632dtakashi 選択されないことに注意してください。'qs' 値のない variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi は qs 値 1.0 を 与えられます。qs
208651a016b098f4fa1f6279559f104d70f1632dtakashi パラメータはクライアントの能力に関係無く、他の variant と
208651a016b098f4fa1f6279559f104d70f1632dtakashi 比較したときの variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi の相対的な「品質」を示します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 例えば、写真を表現しようとしているときは JPEG
208651a016b098f4fa1f6279559f104d70f1632dtakashi ファイルの方が普通は ASCII
208651a016b098f4fa1f6279559f104d70f1632dtakashi ファイルよりも高い品質になります。しかし、リソースが元々
208651a016b098f4fa1f6279559f104d70f1632dtakashi ASCII アートで表現されているときは、ASCII ファイルの
208651a016b098f4fa1f6279559f104d70f1632dtakashi 方が JPEG ファイルよりも高い品質になります。このように、qs
208651a016b098f4fa1f6279559f104d70f1632dtakashi は 表現されるリソースの性質によって variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi 毎に特有の値を取ります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>認識されるヘッダの一覧は
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <a href="mod/mod_negotiation.html#typemaps">mod_negotiation</a>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ドキュメントにあります。</p>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="core" type="section">Directory</directive>,
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="core" type="section">Location</directive>,
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="core" type="section">Files</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi セクション中や、(<directive module="core">AllowOverride</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブによって設定することができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi をセットしないことに注意してください。明示的に
208651a016b098f4fa1f6279559f104d70f1632dtakashi その名前を書く必要があります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi にあてはまる全てのファイルを探し、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 事実上それらのファイルをマップするタイプマップを作ります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi そのとき、メディアタイプとコンテントエンコーディングは、そのファイル名を
208651a016b098f4fa1f6279559f104d70f1632dtakashi 直接指定したときと同じものが割り当てられます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi それからクライアントの要求に一番合うものを選びます。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>サーバがディレクトリの索引を作ろうとしている場合、
208651a016b098f4fa1f6279559f104d70f1632dtakashi は <directive module="mod_dir">DirectoryIndex</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブで指定されたファイルを探す過程にも
208651a016b098f4fa1f6279559f104d70f1632dtakashi 適用されます。設定ファイルに</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi 両方存在していると、サーバはその中からどちらかを適当に選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi が存在していると、 サーバはそれを実行します。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>もしディレクトリを読んでいる際に、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 文字セット、コンテントタイプ、言語、エンコーディングを
208651a016b098f4fa1f6279559f104d70f1632dtakashi で認識できる拡張子を持たないファイルが見つかると、結果は
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_mime">MultiViewsMatch</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブの設定に依存します。このディレクティブは
208651a016b098f4fa1f6279559f104d70f1632dtakashi ハンドラ、フィルタ、他のファイル拡張子タイプのどれが
208651a016b098f4fa1f6279559f104d70f1632dtakashi MultiViews ネゴシエーションで使用できるかを決定します。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>Apache はリソースの variant の一覧を、タイプマップファイルか
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクトリ内のファイル名からかで取得した後、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 「最適な」 variant を決定するために二つの方法の
208651a016b098f4fa1f6279559f104d70f1632dtakashi どちらかを起動します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi Apache のコンテントネゴシエーションの機能を使うために、
208651a016b098f4fa1f6279559f104d70f1632dtakashi どのようにしてこの調停が行われるか詳細を知る必要はありません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi しかしながら、この文書の残りでは関心のある人のために、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 使用されている方法について説明しています。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi driven negotiation</strong> が使用されます。Apache
208651a016b098f4fa1f6279559f104d70f1632dtakashi のアルゴリズムは後に詳細に説明されています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi このアルゴリズムが使用された場合、Apache
208651a016b098f4fa1f6279559f104d70f1632dtakashi はより良い結果になるように、特定の次元において品質の値を
208651a016b098f4fa1f6279559f104d70f1632dtakashi 「変える」ことができます。Apache
208651a016b098f4fa1f6279559f104d70f1632dtakashi が品質の値を変える方法は後で詳細に説明されています。</li>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <li>RFC 2295
208651a016b098f4fa1f6279559f104d70f1632dtakashi で定義されている機構を用いてブラウザが特に指定した場合、
208651a016b098f4fa1f6279559f104d70f1632dtakashi が使用されます。このネゴシエーション方法では、「最適な」
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant の決定をブラウザが完全に制御することができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ですから、結果はブラウザが使用しているアルゴリズムに依存します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi Transparent negotiation の処理の過程で、ブラウザは RFC 2296
208651a016b098f4fa1f6279559f104d70f1632dtakashi で 定義されている 'remote variant selection algorithm'
208651a016b098f4fa1f6279559f104d70f1632dtakashi を実行するように頼むことができます。</li>
2175a6e3ca8869e81c4fb9a169fecc4f5d578867yoshiki <columnspec><column width=".15"/><column width=".85"/></columnspec>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダフィールドで優先傾向を指定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi アイテムそれぞれは、関連した品質数値を持つことができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant の説明も品質数値を持つことができます
208651a016b098f4fa1f6279559f104d70f1632dtakashi ("qs" パラメータをご覧下さい)。</td>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダフィールドで優先傾向を指定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 要素それぞれに品質数値を持たせることができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi variants は 0 か 1 つかそれ以上の言語と
208651a016b098f4fa1f6279559f104d70f1632dtakashi 関連づけることができます。</td>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダフィールドで優先傾向を指定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 要素それぞれに品質数値を持たせることができます。</td>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダフィールドで優先傾向を指定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 要素それぞれに品質数値を持たせることができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant はメディアタイプのパラメータとして文字セットを
208651a016b098f4fa1f6279559f104d70f1632dtakashi 指定することもできます。</td>
208651a016b098f4fa1f6279559f104d70f1632dtakashi<section id="algorithm"><title>Apache ネゴシエーションアルゴリズム</title>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>ブラウザに返す「最適な」variant を (もしあれば) 選択するように
208651a016b098f4fa1f6279559f104d70f1632dtakashi Apache は次のアルゴリズムを使うことができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi このアルゴリズムを設定により変更することはできません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 次のように動作します:</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>まずはじめに、ネゴシエーションの次元それぞれについて適切な
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant それぞれに品質を割り当てます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi が許容できないことが示されていれば、それを削除します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant が一つも残っていなければ、ステップ 4 に行きます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi 消去法で「最適な」 variant を選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 次のテストが順番に適用されます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi テストで選択されなかった variant は削除されていきます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi テスト後 variant が一つだけ残っていれば、それを最適なものとして
208651a016b098f4fa1f6279559f104d70f1632dtakashi ステップ 3 に進みます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 複数 variant が残っていれば、次のテストに進みます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダの品質数値との積を計算して、最高値の variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi を選びます。</li>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_negotiation">LanguagePriority</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブの言語順で最適な言語の variant を選びます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>最高「レベル」のメディアパラメータ
208651a016b098f4fa1f6279559f104d70f1632dtakashi を持つ variant を選びます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li><code>Accept-Charset</code> ヘッダ行で与えられている最高の文字セット
208651a016b098f4fa1f6279559f104d70f1632dtakashi メディアパラメータを持つ variant を選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 明示的に除外されていない限り、ISO-8859-1
208651a016b098f4fa1f6279559f104d70f1632dtakashi が許容されるようになっています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 特定の文字セットに明示的に関連づけられているわけではない
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant は ISO-8859-1 であると仮定されます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi 関連づけられている variant を選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi そのような variant がない場合は、代わりに全ての
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant を選びます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>最適なエンコーディングの variant を選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi もし user-agent が許容するエンコーディングがあれば、
208651a016b098f4fa1f6279559f104d70f1632dtakashi その variant のみを選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi そうではなく、もしエンコードされたものとそうでない
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant が混ざって存在していたらエンコードされていない
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant のみを選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant が全部エンコードされているか
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant が全部エンコードされていないという場合は、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 全ての variant を選びます。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>残っている variant の最初のものを選びます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi タイプマップファイルの最初にリストされているか、
208651a016b098f4fa1f6279559f104d70f1632dtakashi variant がディレクトリから最初に読み込まれる時に
208651a016b098f4fa1f6279559f104d70f1632dtakashi ASCII順でソートしてファイル名が先頭になったか、のどちらかです。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>アルゴリズムを使って一つの「最適な」variant を選びましたので、
208651a016b098f4fa1f6279559f104d70f1632dtakashi それを応答として返します。ネゴシエーションの次元を指定するために
208651a016b098f4fa1f6279559f104d70f1632dtakashi (リソースのキャッシュをする時に、
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザやキャッシュはこの情報を使うことができます)。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 以上で終わり。</li>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <li>ここに来たということは、variant が一つも選択されなかった
208651a016b098f4fa1f6279559f104d70f1632dtakashi (ブラウザが許容するものがなかったため) ということです。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 406 ステータス ("No Acceptable representation" を意味する)
208651a016b098f4fa1f6279559f104d70f1632dtakashi が、利用可能な variant のリストのついた HTML
208651a016b098f4fa1f6279559f104d70f1632dtakashi ドキュメントとともに返されます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>上記の Apache ネゴシエーションアルゴリズムの厳格な解釈で
208651a016b098f4fa1f6279559f104d70f1632dtakashi 得られるであろう値から、Apache は品質数値を時々変えます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これは、このアルゴリズムで完全ではない、あるいは正確でない情報を送る
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザ向けによりよい結果を得るために行われます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi かなりポピュラーなブラウザで、もしないと間違った variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi ヘッダ情報を送るものもあります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザが完全で正しい情報を送っていれば、
208651a016b098f4fa1f6279559f104d70f1632dtakashi この数値変化は適用されません。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi<section id="wildcards"><title>メディアタイプとワイルドカード</title>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p><code>Accept:</code> リクエストヘッダはメディアタイプの優先傾向を指定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これはまた、"image/*" や "*/*"
208651a016b098f4fa1f6279559f104d70f1632dtakashi といった「ワイルドカード」メディアタイプを含むことができます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ここで * は任意の文字列にマッチします。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ですから、次の:</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>を含むリクエストは、"image/" ではじまるタイプ全てが許容できる、
208651a016b098f4fa1f6279559f104d70f1632dtakashi そして他のどんなタイプも許容できる
208651a016b098f4fa1f6279559f104d70f1632dtakashi (この場合はじめの "image/*" は冗長になります)
208651a016b098f4fa1f6279559f104d70f1632dtakashi 扱うことのできる明示的なタイプに加えて、機械的に
208651a016b098f4fa1f6279559f104d70f1632dtakashi ワイルドカードを送るブラウザもあります。例えば:</p>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki Accept: text/html, text/plain, image/gif, image/jpeg, */*
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>こうすることの狙いは、明示的にリストしているタイプが優先されるけれども、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 異なる表現が利用可能であればそれでも良い、ということです。
208651a016b098f4fa1f6279559f104d70f1632dtakashi しかしながら、上の基本的なアルゴリズムでは、
208651a016b098f4fa1f6279559f104d70f1632dtakashi */* ワイルドカードは他の全てのタイプと全く同等なので優先されません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザは */* にもっと低い品質 (優先)
208651a016b098f4fa1f6279559f104d70f1632dtakashi 値を付けてリクエストを送るべきなのです。例えば:</p>
472309252b522ae1fd62e4eb745abea2067769b3yoshiki Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>明示的なタイプには品質数値が付けられていませんので、
208651a016b098f4fa1f6279559f104d70f1632dtakashi デフォルトの 1.0 (最高値) の優先になります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ワイルドカード */* は低い優先度 0.01 を与えられているので、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 明示的にリストされているタイプに合致する variant がない場合にのみ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 他のタイプが返されます。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>もし <code>Accept:</code> ヘッダが q 値を全く含んで<em>いなければ</em>、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 望みの挙動をするために、
208651a016b098f4fa1f6279559f104d70f1632dtakashi Apache は "*/*" があれば 0.01 の q 値を設定します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi また、"type/*" の形のワイルドカードには 0.02 の q 値を設定します
208651a016b098f4fa1f6279559f104d70f1632dtakashi (ですからこれらは "*/*" のマッチよりも優先されます)。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 正しい情報を送るブラウザからのリクエストは期待通りに
208651a016b098f4fa1f6279559f104d70f1632dtakashi 動作するようになります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi<section id="exceptions"><title>言語ネゴシエーションの例外処理</title>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>Apache 2.0 では新たに、言語ネゴシエーションが適合するものを
208651a016b098f4fa1f6279559f104d70f1632dtakashi 見つけるのに失敗した時に、優雅にフォールバックできるような
208651a016b098f4fa1f6279559f104d70f1632dtakashi ネゴシエーションアルゴリズムが幾つか追加されました。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>サーバのページをクライアントがリクエストしたけれども、
208651a016b098f4fa1f6279559f104d70f1632dtakashi ブラウザの送ってきた <code>Accept-Language</code> に合致するページが一つも
208651a016b098f4fa1f6279559f104d70f1632dtakashi 見つからなかった場合に、サーバは "No Acceptable Variant"
208651a016b098f4fa1f6279559f104d70f1632dtakashi か "Multiple Choices" レスポンスをクライアントに返します。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これらのエラーメッセージを返さないように、
208651a016b098f4fa1f6279559f104d70f1632dtakashi このような場合には Apache が <code>Accept-Language</code> を無視して、
208651a016b098f4fa1f6279559f104d70f1632dtakashi クライアントのリクエストに明示的には合致しないドキュメントを
208651a016b098f4fa1f6279559f104d70f1632dtakashi 提供するように設定できます。
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_negotiation">ForceLanguagePriority</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブは、これらのエラーの一つか両方をオーバーライドするために
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_negotiation">LanguagePriority</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブの内容を使ってサーバの判断を代行するようにできます。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>サーバは他に適合するものが見つからなければ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 言語サブセットで適合するものを試そうともします。
208651a016b098f4fa1f6279559f104d70f1632dtakashi マッチするものとすることは通常は許されていません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi (英国英語は理解できるけど一般的な英語は理解できないという読み手は
208651a016b098f4fa1f6279559f104d70f1632dtakashi ということに注意してください。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ですが不幸なことに、多くのクライアントではデフォルトで
208651a016b098f4fa1f6279559f104d70f1632dtakashi このような設定になっています。)
208651a016b098f4fa1f6279559f104d70f1632dtakashi しかしながら、他の言語にはマッチせず、"No Acceptable Variants"
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_negotiation">LanguagePriority</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi にフォールバックしようとしているときは、
208651a016b098f4fa1f6279559f104d70f1632dtakashi Apache はクライアントの許容言語リストに暗黙に
208651a016b098f4fa1f6279559f104d70f1632dtakashi 非常に低い品質値の親言語を加えることになります。
208651a016b098f4fa1f6279559f104d70f1632dtakashi しかし、クライアントが "en-GB; q=0.9, fr; q=0.8" とリクエストして、
208651a016b098f4fa1f6279559f104d70f1632dtakashi サーバが "en" と "fr" と設計されたドキュメントを持っている場合は、
208651a016b098f4fa1f6279559f104d70f1632dtakashi "fr" ドキュメントが返されることに注意してください。
208651a016b098f4fa1f6279559f104d70f1632dtakashi このような処理は、HTTP 1.1 規格との整合性を維持して、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 適切に設定されたクライアントともきちんと動作するために
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>より高度なテクニック (Cookie や特殊な URL パス等)
208651a016b098f4fa1f6279559f104d70f1632dtakashi においてもユーザの言語選択をサポートするため、
208651a016b098f4fa1f6279559f104d70f1632dtakashi が<a href="env.html">環境変数</a> <code>prefer-language</code>
208651a016b098f4fa1f6279559f104d70f1632dtakashi を認識するようになりました。
208651a016b098f4fa1f6279559f104d70f1632dtakashi この変数が存在して、適切な言語タグが代入されているのであれば、
208651a016b098f4fa1f6279559f104d70f1632dtakashi を選択しようとします。合致するものが無ければ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 通常のネゴシエーション手順が適用されます。</p>
555f6905b7c237b9a17ce1140260dc709cb3e2ackawai SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
555f6905b7c237b9a17ce1140260dc709cb3e2ackawai Header append Vary cookie
472309252b522ae1fd62e4eb745abea2067769b3yoshiki<section id="extensions"><title>Transparent Content Negotiation
208651a016b098f4fa1f6279559f104d70f1632dtakashi<p>Apache は transparent content negotiation プロトコル
208651a016b098f4fa1f6279559f104d70f1632dtakashi(RFC 2295) を次のように拡張しています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi特定のコンテントエンコーディングのみが利用可能である variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi要素を variant リスト中に使っています。
208651a016b098f4fa1f6279559f104d70f1632dtakashiリスト中のエンコードされた variant を認識し、
208651a016b098f4fa1f6279559f104d70f1632dtakashiエンコードをもった variant は、どれでも候補 variant
208651a016b098f4fa1f6279559f104d70f1632dtakashi計算した品質数値は小数点以下 5 桁まで丸めません。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>言語ネゴシエーションを使っている場合は、
208651a016b098f4fa1f6279559f104d70f1632dtakashi ファイルが一つ以上の拡張子を持てて、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 拡張子の順番は通常は考慮されない
208651a016b098f4fa1f6279559f104d70f1632dtakashi (詳細は <a href="mod/mod_mime.html#multipleext">mod_mime</a>
208651a016b098f4fa1f6279559f104d70f1632dtakashi 幾つかの異なる名前の変換を選べることになります。</p>
208651a016b098f4fa1f6279559f104d70f1632dtakashi このファイルに異なる言語 variant を用意していれば、
208651a016b098f4fa1f6279559f104d70f1632dtakashi を持っているでしょう。</p>
2175a6e3ca8869e81c4fb9a169fecc4f5d578867yoshiki <columnspec><column width=".2"/><column width=".2"/>
208651a016b098f4fa1f6279559f104d70f1632dtakashi がいつでも使えることに気が付くでしょう。
208651a016b098f4fa1f6279559f104d70f1632dtakashi この利点は、ドキュメントとして応答するファイルの
208651a016b098f4fa1f6279559f104d70f1632dtakashi 実際のファイルタイプを隠蔽して、リンクの参照を変更することなく
208651a016b098f4fa1f6279559f104d70f1632dtakashi 後からファイルを変更できる、
208651a016b098f4fa1f6279559f104d70f1632dtakashi <em>例えば</em> <code>html</code> から <code>shtml</code>
208651a016b098f4fa1f6279559f104d70f1632dtakashi (エンコーディング拡張子もあればそれも含めて)
208651a016b098f4fa1f6279559f104d70f1632dtakashi MIME タイプ拡張子の右側になければなりません
208651a016b098f4fa1f6279559f104d70f1632dtakashi <p>キャッシュが一つの表現を保存しているときは、
208651a016b098f4fa1f6279559f104d70f1632dtakashi リクエスト URL と関連づけられています。
208651a016b098f4fa1f6279559f104d70f1632dtakashi 次にその URL がリクエストされた時に、キャッシュは
208651a016b098f4fa1f6279559f104d70f1632dtakashi 保存されている表現を使用できます。しかし、
208651a016b098f4fa1f6279559f104d70f1632dtakashi リソースがサーバでネゴシエーション可能であれば、
208651a016b098f4fa1f6279559f104d70f1632dtakashi 最初のリクエストでキャッシュされて続くキャッシュヒットでは
208651a016b098f4fa1f6279559f104d70f1632dtakashi 間違った応答を返してしまうということになりかねません。
208651a016b098f4fa1f6279559f104d70f1632dtakashi これを防ぐために、Apache はコンテントネゴシエーションの
208651a016b098f4fa1f6279559f104d70f1632dtakashi キャッシュ不可能の印をつけます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi また、ネゴシエーションされた応答のキャッシュを可能にする
208651a016b098f4fa1f6279559f104d70f1632dtakashi (ブラウザであろうとキャッシュであろうと)
208651a016b098f4fa1f6279559f104d70f1632dtakashi ネゴシエーションを受けた応答のキャッシュを許すために、
472309252b522ae1fd62e4eb745abea2067769b3yoshiki <directive module="mod_negotiation">CacheNegotiatedDocs</directive>
208651a016b098f4fa1f6279559f104d70f1632dtakashi ディレクティブを使用できます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi このディレクティブは、サーバ設定ファイルやバーチャルホストに書くことができ、
208651a016b098f4fa1f6279559f104d70f1632dtakashi キャッシュは、これを使って後続のリクエストに対してローカルコピーで応答できるか
208651a016b098f4fa1f6279559f104d70f1632dtakashi どうかを決定できます。
208651a016b098f4fa1f6279559f104d70f1632dtakashi ネゴシエーション次元とは関係なしにローカルコピーの使用を優先するようにするには、
208651a016b098f4fa1f6279559f104d70f1632dtakashi <code>force-no-vary</code> <a href="env.html#special">環境変数</a>を
472309252b522ae1fd62e4eb745abea2067769b3yoshiki</manualpage>