ふそうごむ。by扶桑ゴム産業

扶桑ゴム産業の最新情報とうぇぶますたあ「TKYK」の個人的日記。

ファイル拡張子が違っていても表示される怪。

ウェブページに記述しているファイル名が欠落しているのに表示される現象が発生。
gomusporexxx.jpg
と本来なっているべきデータが、
gomusporexxx
となっていた。拡張子を書き忘れていたのだ。 しかし、ローカルテスト環境では問題なく表示されていて、本番環境では表示されない。あれれ??しかも、この現象はお節介なことに結構高機能(?)で.gif .jpeg .tif .bmpとかに実際のファイルの名前を変えてもアクセスできてしまう。なぜ?と色々探していたら、ログに吐いてあった
Negotiation: discovered file(s) matching request:
このメッセージが解決の糸口となった。 結局原因は、ApacheのMultiViewsオプションだった。 引用すれば、
MultiViews の効果は以下のようになります: サーバが /some/dir/foo へのリクエストを受け取り、/some/dir で MultiViews が有効であって、 /some/dir/foo が存在しない場合、 サーバはディレクトリを読んで foo.* にあてはまる全てのファイルを探し、 事実上それらのファイルをマップするタイプマップを作ります。 そのとき、メディアタイプとコンテントエンコーディングは、そのファイル名を 直接指定したときと同じものが割り当てられます。 それからクライアントの要求に一番合うものを選びます。
とあり、つまり拡張子のない不完全なファイル名でも画像を探して表示するように努めてくれるわけだ。ありがた迷惑なことこの上ない(今回はね)。 早速、テスト環境のwebroot.confを書き換えて、
Options MultiViews FollowSymLinks IncludesNoExec ExecCGI
だったのを
Options FollowSymLinks IncludesNoExec ExecCGI
のように書き換えておいた。 これにて一件落着。