[an error occurred while processing this directive] [APACHE DOCUMENTATION]

Contentの調整: MultiViews と *.var ファイル

HTTPの仕様はクライアント(例;モザイクやネットスケープのようなブラウザ) がサポートして受け付けられるデータフォーマットを明示することを許可する。 その意図は情報が多数のバリエーション(例えば、異なったデータフォーマットで) 利用可能である時、サーバーがいずれのバリエーションを送るべきか決めるた めにこの情報を使うことが出来ます。 この特徴はしばらくの間、そしてそれがNCSA サーバーではまだサポートされな いうちに CERN サーバーでサポートされました。 これは新しく重要なことで、HTML3ブラウザの出現を可能としています。

Apacheモジュールmod_negotiationは 2つの異なった方法で、要件を満たす調整を行っています。; 特別な擬似MIMEタイプapplication/x-type-mapと ディレクトリ毎のMultiViewsオプション(srm.conf で、あるいは .htaccess ファイルでいつも設定する)。 これは交互の書式で、同じコードの組み合わせで (新しいファイルhttp_mime_db.c) HTTPプロトコルの一部でcontentネゴシエーションです。

これらの特徴のそれぞれが、いくつかのファイルがリクエストを満たす ことを(クライアントがそれが受け入れることを許可することに基づいて) 許可します。; 相違はファイルが識別される方法にあります:

さらにApacheは新しいpseudo-MIMEタイプをサポートしています。 text/x-server-parsed-html3,これはtext/htmlとして扱います。; level=3はcontentのネゴシエーションに使われます。 他ではサーバサイドインクルードHTMLとして扱います。

タイプマップ (*.var files)

タイプマップはサーバで定義された(通常のsuffix-basedを使用します) application/x-type-mapのようなドキュメントです。 次の機能を使用する際は注意してください。 AddTypeapplication/x-type-mapと同じ ファイル拡張子を既に設定した場合。; 最も簡単なのは次のものをsrm.confに入れた時です。

  AddType application/x-type-map var

詳しくはサンプルコンフィグレーションファイルを見てください。

タイプマップはそれぞれ設定できる変数を持っています。; それらの項目は連続したRFC822フォーマットのヘッダから成っています。 異なる項目のは空白の行で分割されています。 項目の中では空白行は使用できません。 例えば、結合されたエンティティーの項目を持っているマップファイルを 作には次のようにします。


  URI: foo; vary="type,language"

  URI: foo.en.html
  Content-type: text/html; level=2
  Content-language: en

  URI: foo.fr.html
  Content-type: text/html; level=2
  Content-language: fr

もし変数が異なった特質を持っているなら、それは、この画像 (扱うことができるjpeg, gif, または ASCII-art)のように、"qs" パラメータのように表示されます。:

  URI: foo; vary="type,language"

  URI: foo.jpeg
  Content-type: image/jpeg; qs=0.8

  URI: foo.gif
  Content-type: image/gif; qs=0.5

  URI: foo.txt
  Content-type: text/plain; qs=0.01

表示されているヘッダの全リストは:

URI:
(メディアタイプが与えられ、与えられたエンコードされた)    変数を含んでいるファイルの uri 。    これらはマップファイルと比較してURLと解釈されます。;    同じサーバにあるにちがいない(!)、そしてそれらはクライアントが    直接リクエストしたときアクセスを許可します。
Content-type:
メディアタイプ−−−レベルが、"qs"とともに、指定されるかも知れません。   これらは、よくMIMEタイプのように参照されます。   ;典型的なメディアタイプは   image/gif, text/plain, また   text/html; level=3   です。
Content-language:
インターネット標準の言語コードを表した変数の言語。 (例えば、英語はen、韓国語はkr、などなど)
Content-encoding:
圧縮されるか、あるいはさもなければコード化されれているとき、   実際に何の生データを含んでいるかより、むしろどのように圧縮されたか   を表現します。   圧縮されたファイル(通常唯一の手段)は   x-compress, or gzip   を満足するべきです。
Content-length:
ファイルサイズ。クライアントは変数があまり大きくはない場合に限り、   所定のメディアタイプのみの受信をリクエストできます。;   設定されたマップにおけるContent-lengthは、サーバに実際のファイルを   チェックしないでネゴシエーションを行うことを許可します。

Multiviews

これは.htaccessファイルまたはaccess.conf<Directory>セクションの中で、 (AllowOverrideが万事設定してあれば)設定できる per-directoryオプションです。 Options AllMultiViewsをセットしないことに 注意してください。;名前で問い合わせなければなりません。 (これを修正するにはhttpd.hの1行を変更します。)

MultiViewsの効果は次の通りです: サーバが/some/dir/fooのリクエストを受け取り、 /some/dirMultiViewsが有効であり、 そして/some/dir/fooが存在しない時、 その時、サーバはfoo.*というファイルを探してディレクトリを読みます、 そして効果的にタイプマップを作り上げます。 クライアントがその中の名前で問い合わせてきた時、同じメディアタイプと content-encodingsを割り当てます。 それはクライアントの必要条件に最も合った選択をして、それらを転送します。

もしサーバーがディレクトリにインデックスを付けようとしているなら、 DirectoryIndex命令によって指定されたファイルの探索を 行います。;コンフィグレーションファイルを設定した場合。


  DirectoryIndex index

この時サーバは、index.htmlindex.html3 の両方があれば、調整をします。 もし、両方とも無くて、そこにindex.cgiがあったら、 サーバはこれを実行します。

globbing によって発見されたファイルの1つが CGI スクリプトのとき、 何が起こるか分かりません。 私が書いたコードは、このケースで特別な扱いを得られます−−−− リクエストがPOST または、QUERY_ARGSまたはPATH_INFOを伴う GETの時、 スクリプトは非常に高く信用され、そして通常に起動されます。 さもなければ、非常に低い信頼となります。 これは MultiViews コードによってされる唯一のクオリティ評価の仕掛けです; それは別として、全てのクオリティを統合したタイプマップは1.0です。

0.8の新機能:多国言語のドキュメントで同様に AddLanguageLanguagePriority 命令 を通して処理することが出来ます。:

AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

#LanguagePriorityはコンテント・ネゴシエーションにて結び合わせる時に
#何らかの言語を優先することを許可します。
#優先する設定を記述してください。


ユーザが検索しようとしたファイルが、その名前で存在しない時、 この機構がただ機能しはじめることに注意してください。; そのときは、通常通り単純に取出されます。 (つまり、実際にだれかがfooを妨害してfoo.jpeg を問い合わせた時、foo.gifを取得することが出来ません)


検索文字
The English original manual is here.

Index