Tips記事
» 2002年06月26日 00時00分 UPDATE

ApacheのMultiViews機能ってなに?

[木田佳克,ITmedia]

 Apacheでディレクトリ下の実行権限などに使用される「MultiViews」オプション。ここでは、この機能の実際の動作に沿って、どのような働きをするのかを解説していこう。

・HTTP/1.1で規定されているネゴシエーション機能

 HTTP/1.1の規格では、Webブラウザなどのユーザーエージェントが行う動作として、受け取るヘッダに含まれるメタデータを判別し、条件に合ったものが表示されるようになっている。この「条件に合ったもの」を判別する仕組みがMultiViewsだ。

 例えば、同じ内容のhtmlで英語版と日本語版が用意されている場合、ユーザーエージェントから送信されるAccept-Languageヘッダ値に「en」が優先されていれば英語版のファイル、「ja」が優先されていれば日本語版のファイルが送り出される。このネゴシエーション処理が容易に実現できるようMultiViews機能が用意されているのだ。

■Webブラウザなどのユーザーエージェントが送信するヘッダ

GET /http-header.html HTTP/1.1
Host: www.zdnet.com
Accept: text/html, text/plain, text/sgml, */*;q=0.01
Accept-Encoding: gzip, compress
Accept-Language: ja
If-Modified-Since: Sun, 2 Sep 2001 11:31:06 GMT
User-Agent:

画面
IE6.0の場合、ツール→インターネットオプション→全般タブから「言語」を選択してみよう。ここで表示される言語が「Accept-Language」だ

■上の内容を受けてApacheから返信されるヘッダ部分
HTTP/1.1 200 OK
Date: Wed, 26 Jun 2002 08:06:19 GMT
Server: Apache/1.3.24
Content-Location: http-header.html.ja
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref="/w3c/p3p.xml",CP="NOI DSP COR ADM DEV OUR STP"
Last-Modified: Wed, 26 Jun 2002 01:00:00 GMT
Connection: close
Content-Type: text/html; charset=shift_jis
Content-Language: ja

 MultiViewsオプションはApacheの設定ファイル「httpd.conf」に指定され、次のような記述になる(参考Tips:「SSIは許可するがプログラム実行(exec)だけは禁止したい」)。

Options MultiViews

 なお、上記別ページの参考Tipsでも触れているが、Options Allが指定されていてもMultiViews機能は有効にならない。明示的に記述する必要がある。

 前述したAccept-Languageヘッダ値の優先を受け判別される仕組みは次のようになっている。httpd.conf内でAddLangurge行を見てみよう。

#
# Document types.
#
<IfModule mod_mime.c>

〜中略〜

AddLanguage ja .ja
AddLanguage en .en

 上記の指定により、.jaという拡張子を持つファイルが日本語、.enの拡張子が英語のファイルとして対応されている。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ