注:このページの情報は断片的かつ不完全なものです。
要点のみ読みたい場合はさくらのスタンダードで404ページを作成(最終版)にアクセスして下さい。

サイト内関連ページ

 

以下本文

前にも一度チャレンジして挫折した、htaccessを使った404ページを表示。
今回も挫折。。。なんでかなぁ('Α`)

.htaccess内に
ErrorDocument 404 http://freesoft.tvbok.com/404.htm
または
ErrorDocument 404 /404.htm

・・・間違っていないよね?
とりあえず色々試してみたけど再び断念。

htmlのphp化とか、301リダイレクトとか、Expires headers付加とかgzip圧縮とか、、、
大抵の事は上手く行っているのに(^_^;

http://faq.sakuratan.com/wiki/wiki.cgi?mycmd=diff&mypage=.htaccess

**エラーページを自作したい

サンプル
---(
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
---)

サンプルの解説
-ルートディレクトリの.htaccessに書き加える。
-403エラーが出た場合、ルートディレクトリにある403.htmlを表示する。
-404エラーが出た場合、ルートディレクトリにある404.htmlを表示する。
-500エラーが出た場合、ルートディレクトリにある500.htmlを表示する。

備考
-マルチドメインとは相性悪いかも?
--マルチドメインの先で設定したらそうでもなかったよ。ルートで設定してると被って妙になりそうだけど。
-エラーページが512バイト以下の場合、IEでは表示されない。512バイト以上にしましょう(←はIEでツール→インターネットオプション→詳細設定タブの「ブラウズ -HTTPエラーメッセージを簡易表示する」がONになっている場合(デフォルト)。OFFにしてあれば512バイト以下でも表示される)
-&verb(ErrorDocument)にphp(cgi版)のページを指定するとIEでは512バイト以上でも表示されない場合がある。
--&verb(ErrorDocument) 403 /403.php 表示されるほうが多い。
--&verb(ErrorDocument) 404 /404.php 表示されない。
--&verb(ErrorDocument) 500 /500.php 表示されないほうが多い。
-誤った設定にすると無限ループになるので、よく注意して設定しろ!
--403エラーに指定したページにアクセスできない(403)と無限ループ(いや、確かうちのとこでは通常の403エラーメッセージに合わせて、指定されているエラーページをアクセスできない旨のエラーが表示された)
---/403.htmlの部分を&verb(http://)から記述した場合、無限ループ。それ以外はApacehのエラーメッセージ。404、500も同じ。
--404エラーに指定したページが存在しない(404)と無限ループ
--500エラーにcgiやphpのページを指定してそれらが動かない(500)と無限ループ
-503のエラーページは自作できません。
--他のサーバへリダイレクトすることは、503でも有効です。
---(
ErrorDocument 503 http://www.example.com/directory/file.html
---)
--CGIの同時起動数が503の原因である場合、エラーページが静的ページなら表示できる場合もあります。
-旧プランなどで~アカウント名を使用の場合は、 &verb(ErrorDocument) 403/~アカウント名/403.html のように記述する。

非公式Wikiを読んでみた限り、マルチドメインが悪戯しているのかな?

それともhtmlをphp化しているからだろうか・・・?
404ファイルだけ「htm」にして、htmだけphp無効にしてみた >表示できない

404ページに6kbは大きすぎるのかな?
404ページを700バイトで作成(512バイト以下では不具合が出る場合があるらしい)
 >やっぱり表示できない

ErrorDocument 404 /ユーザー名/www/index.html
とか
ErrorDocument 404 /index.html
とかやっても、インデックスページすら飛ばない。

う~ん。。。やっぱマルチドメインかなぁ。。。('Α`)

追記

ふと思いついて、

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .+ /404.htm [L]

とやれば、「ErrorDocument 404 /404.htm」の代用できるんじゃね?
と思い、実行。

結果:上手く行きそうで上手く行かない(^_^;
確かにファイルが存在しない場合は404ページを表示してくれるけど、
深いディレクトリ(例えばhttp://web.tvbok.com/web/ とか)で「index.html」を省略してURL表記しても404ページに飛んでしまう('Α`)

ルートだけでなく、全てのディレクトリに「DirectoryIndex index.html index.php.ht」とかを設置すれば大丈夫なんだろうけど、、、それは面倒臭いというか、「新しくディレクトリ増やした時に操作忘れそう」なのが嫌。
上手く行かないなぁ。。。( ̄▽ ̄;)

サイト内関連ページ