
j-phoneの端末でimgタグのsrc属性にアクセスを行うときはAcceptヘッダを明示的に指定しています。
Accept: image/jpeg, image/png
たとえば/img.phpという画像吐き出しスクリプトがあったとして
<img src="/img?img=hoge.jpg">
原因がわからずapacheのソースを軽く調べてみました。
この時携帯は
GET /img?img=hoge.jpg HTTP/1.0
Accept: image/jpeg, image/png
以下略
結局、/imgから/img.phpというファイルを探し出して.phpのmime typeを調べた結果
端末が要求しているAcceptのmimeとサーバで指定されている.phpのmimeが一致しないので
406エラーを返すという挙動っぽいです。
.phpのmime関連付けを image/jpegにしたところ406エラーは出ませんでした(代わりにphpのソースコードがダウンロードされるけど)
.phpのmime関連をなくしたら404が帰ってきました。
Apacheのマニュアルによると
MultiViews 探索は、Multiviews オプションにより有効になります。サーバが /some/dir/foo へのリクエストを受け取り、/some/dir/foo が存在しない場合、サーバはディレクトリを読んで、 foo.* にあてはまる全てのファイルを探し、 事実上それらのファイルをマップするタイプマップを作ります。 そのとき、メディアタイプとコンテントエンコーディングは、 そのファイル名を直接指定したときと同じものが割り当てられます。 それからクライアントの要求に一番合うものを選び、 そのドキュメントを返します。
いや、ソース読めば判ることですが、そこまでは【許してください。】
AddType image/jpeg .php
AddHandler php-script .php
これではうまくいきませんか。 .htaccess などで局所的に設定した方が良さそうですが。
Posted by: at 2005年10月15日 15:37