オッカムさん、
私の前の答えは、質問を誤解していました。
ちひゃさん、いとさんが正しい回答をしてくれました。
お二人が言うとおり、
<img src="/messages/4.gif">
でいいはずです。
ついでに書いておくと、
エラーメッセージファイルのURLパスが /messages/404.html なら、ファイル名のところを C:\www\messages\404.html ではなくて、http:// で始まる絶対URLで
http://www.xxx.ne.jp/messages/404.html
としておくと、そのURLに飛びます。その場合は img src= の指定は普通にすればよいことになります。
このエラーメッセージの URL に飛ばす方法はレンタルサーバなどでもよくありますね。
ちひゃさん、中田さんありがとうございました。
おかげさまでちゃんとエラーメッセージに画像が表示されるようになりました。
そっけないエラー画面が少しは華やかになりました。
でも、考えたらこれらの画面は表示されるべきでないはずの画面ばかりなんですよね。
それから いとさん、私の場合は念のためにURLのフルパスで指定しました。
<IMG src="http://www.xxx.ne.jp/messages/4.gif" のようにURLパスを入れることで解決しました。もちろん壁紙のgifも同様にしました。
皆さん本当にありがとうございました。
オッカムさん
できましたという返事ではなかったので、老婆心ながらちひゃさんの説明を簡単にまとめると
<IMG SRC="images/xxx.gif"> のように相対パスで書いているところを、
<IMG SRC="/hoge/images/xxx.gif"> のようにルートディレクトリからの絶対パスに
書き直せばいいということですね。
壁紙も <BODY BACKGROUND="/hoge/images/kabe.gif"> のように。
ちひゃさん、中田さんご返答ありがとうございました。
ご指摘の件よくわかりました。おかげさまで先が見えたような気がします。
ぜひご指摘の点を注意してもう一度チャレンジしてみたいと思います。
オッカムさん、
エラーメッセージファイルは拡張子に関係なく Content-type: text/html としてしまうのが現在の仕様です。
CGIで自分で Content-type を出すか、http:// で画像ファイルを指定すればとりあえずできると思います。
いずれ、拡張子を見るようにしておきましょう。
To オッカムさん
例えば、(デフォルトであれば) c:\httpd\messages の中に 404.html といっしょに 404.jpg をおいても、404.html 中の記述が <img src="404.jpg"> になっていては 404.jpg を読み込めないでしょう。例えば http://www.xxxxx.ne.jp/a/b/c/d.html を表示しようとしてファイルがなかった場合、404.html 中の記述が <img src="404.jpg"> であれば http://www.xxxxx.ne.jp/a/b/c/404.jpg が読まれるようです。
上の例などのように、d.html がなかったときは、ホントはその要求に対して返すものは無いはずなんだけど、ここは「実は d.html というファイルは存在して、中身は 404.html と同じだって事にしよう」という処理がされていると考えれば納得できると思います。
まぁここは、404.html 内には <img src="http://www.xxxxx.ne.jp/messages/404.jpg"> か、もしくは、せめて <img src="/messages/404.jpg"> などのように URL を根元から書くべきでしょう。もちろん、この URL で正しく普通に 404.jpg を参照できる設定にしないといけません。
ちひゃ
はじめまして、現在AN HTTPを使わせていただいております。
動作そのものは非常に快適なのですが、エラーメッセージのカスタマイズに関して疑問があります。
現在401、404、500のエラーを自分でカスタマイズしたHTMLを表示させるようにしているのですが何故か画像ファイル(壁紙も含めて)がいっさい表示されません。
それらのエラーメッセージHTMLをブラウザから直接指定すると(インターネット経由でもローカルでも)ちゃんと表示されます。
それなのにエラーが発生した場合は画像ファイル抜きのHTMLのみが表示されます。
エラーメッセージのカスタマイズでは画像ファイルは使用できないのでしょうか?
よろしくご教授願います。