CERN から Apache へ

最終更新: 1998/2/26

Apache と CERN の違いについていくつかまとめてみました。設定ファイルの書き方についての違い以外についてのみまとめてあります。ここに記述した以外のこともいろいろあるとは思いますが、実際に体験したことの範囲で列挙しました。


Clickable Image / Image Map

画像をクリックすると、クリックした箇所に応じて飛び先が選択される機能。座標情報をサーバへ送ると、それに対応した URL を返す、という実装が使われてきた。

この機能をサポートするため、 CERN httpdにおいては、 htimage という CGI が一緒に配布され、使われている。

Apache においては、mod_imap というモジュールを使用する。

対処方法

以下のいずれかが考えられる。とりあえずは後者で移行し、漸次、前者の方策を取るのが良いだろう。


MIME type の扱いの違い

CERN httpd (3.0) と Apache では、サーバ上におかれたファイルのcontent-type や content-encoding を判定する方法に差異があります。

なお、すべてのソースを読んでいるわけではないので、実際とは異なっているかもしれません。また、設定・環境の違いにより、異なるところもあるでしょう。

CERN

  1. 拡張子を見る
    → サーバに登録されている情報と照合

    .gifならGIFイメージ、.htmlなら HTML 文書である、といったように判断
    成功したら、そこでおしまい

  2. 拡張子での判定が失敗したら
    → 先頭の 200 バイトを読み、テキストファイルかバイナリファイルで あるかを推測

    コントロールコード (0〜8,11,14〜31)、7bit文字コード(32〜127)、
    LFコード(10)、8bit文字コード(128〜255) を数えて、その割合を見る

問題点

ブラウザからのリクエストの種類によっては、この推測ルーチンは働かない
(HEAD に対しては拡張子による判定のみ。GET による要求にのみ働く)

Apache

  1. 拡張子を見る
    → サーバに登録されている情報と照合

    .gif なら GIFイメージ、.html なら HTML文書である、といったように判断
    成功したら、そこでおしまい

  2. 拡張子での判定が失敗したら
    → ただのテキスト文書 (text/plain) とする

この節については 1.1b2 にて調べたものが元になっているが、最新版でもほぼ当てはまるのではないだろうか。

対処方法

次のいずれかで解決すると思います

  1. すべてのファイルに適切な拡張子をつける
  2. mod_mime_magic モジュールを使う。1.3 では標準配布パッケージに含まれていますが、1.2 以前ならば、http://www.employees.org/~ikluft/apache/mod_mime_magic/ から入手できます

[ Apache HTTPD | 覚書 ]