Apache 404 Not Found用のmissing.htmlの表示が崩れる原因

ページが見つからなかったときに表示される404 Not Foundの表示が気に入らないときは、missing.htmlを作っておいておく。で、実験してみると表示が崩れるわ、リンクは外れているわ...。なんじゃこりゃと...。

 

 

■上手くいくケース

正しいページ:http://www.hoge.co.jp/hoge.html

ユーザが間違えてアクセス:http://www.hoge.co.jp/ho.html

 

ho.htmlがmissing.htmlに置き換わる。つまりこうなる。

http://www.hoge.co.jp/missing.html 

 

■上手くいかないケース

正しいページ:http://www.hoge.co.jp/aaa/hoge.html

ユーザが間違えてアクセス:http://www.hoge.co.jp/aaa/ho.html

 

という状況だと、ho.html が、missing.html  に置き換わる。つまりこうなる。

http://www.hoge.co.jp/aaa/missing.html

 

上手くいくケースでは、ちゃんと表示されていても aaa というディレクトリだとmissing.htmlがちゃんと表示されない。

 

■原因 

missing.htmlのhtmlソースを見たら、../../hoge.gifとか相対パスを使っていたのでした。

missing.htmlの中で画像やURLリンクを表示する場合は、絶対パスを使う。ということでした。

 

リンク外れを起こしてしまう。また、cssなどスタイルシートやJavaScriptなどを参照している場合は表示が崩れてしまうんですなぁ。

 

missing.htmlは絶対パスで作ること。

 

 

■そもそもmissing.htmlを有効にするには

 Apacheのhttpd.conf

ErrorDocument 404 /missing.html 

を記述して、Apacheを再起動すれば、missing.htmlが有効になる。