プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
独自の403エラーページを設置する際の注意点(アクセス拒否で出る403エラーも考慮しよう)
結論から書けば、

表示する403エラーページ自体がアクセス拒否対象ファイルにならないように気を付けましょう

です。

それでは詳細を書いていきます。

前の記事で書いた通り、独自403エラーページを作ったのですね。

403エラーが起きたときに表示する「err403.html」というHTMLファイルを用意して、
.htaccessに

ErrorDocument 403 /err403.html

と書いたのですよ。

そして動作確認のために.htaccessに

deny from 210.xxx.xxx.xxx

と自分のIPアドレスを記述して(自分のアクセスを拒否して)表示してみたのですが、
こんな画面が表示されちゃったのですφ(--)

20140420-2.png

あれ(--?
用意したエラー画面が表示されてないですよ?(つд`)

一瞬焦りましたが、画面をよく見たら

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

とか書いてありますね。
つい最近見かけたので覚えていますよ。
確かこいつは

おまえさー、403エラーのときはこのページ表示しろって指定してるけどさー。そのページが見つからねーんだよ、ボケ(#゚д゚)

と怒っているのですよね。

じゃあ早速ページの指定を直して……と思ったのですが、指定はあっています。
ファイルもちゃんと存在します。なんで見つからないのさ(-A-)

ちょっと落ち着くためにコーヒーを飲みながら考えたところ、分かりました。

アクセス拒否されたときに表示するエラーページもアクセス拒否対象に含まれてるわ(ノ∀`)

ドキュメントルート直下に

/
    .htaccess(←アクセス拒否リストが書いてある)
    err403.html

のように置いていたので、403エラー時に表示する「err403.html」も
.htaccessの影響をしっかり受けていたんですよ。
その結果「err403.html」が見つからないよ、なエラーメッセージが表示されていました。

そうと分かれば対処は簡単、err403.htmlに誰でもアクセスできれば良いわけです。

というわけで、先程のフォルダ構成をこんな感じに変更φ(--)

/
    .htaccess(※1)
    error/
        .htaccess(※2)
        err403.html

.htaccess(※1)の中身
ErrorDocument 403 /err403.html
deny from 210.xxx.xxx.xxx

.htaccess(※2)の中身
order allow,deny
allow from all

ドキュメントルート以下全て、基本的にはアクセス拒否だけど
「error/」ディレクトリの中だけは誰でも見ていーよ、な設定にしました。
.htaccess(※1)でサイト全体のアクセス拒否を設定し、
.htaccess(※2)で「error/」ディレクトリ内のアクセス許可を設定しています。

これで.htaccessでアクセスを拒否した場合でも、
独自403エラーページを表示できるようになりましたとさ。

完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● 環境設定関連  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事