[ケーススタディ]アクセス対象のページが存在しないときに403エラーになるとき

投稿日: 更新日:

なんか今後同じ事が起きたら地味に悩みそうなのでメモ。

前提

ウェブサーバーの種類はApacheを想定する。

遭遇した事象

例えば、CMS管理のページがファイル名「index.html」で、次のパスとURLで存在するとする。

/hoge/fuga/index.html

https://something.com/hoge/fuga/index.html

CMS管理画面からページを非公開にしたとき、index.htmlは削除され、ディレクトリfugaは残るとする。

踏まえて、この状態で「https://something.com/hoge/fuga/index.html」にアクセスすると404エラーが返ってくる想定でいたが、実際は403エラーが返ってきた。

404エラーの時は予め用意しておいたエラーページを表示するようにしていたが、403エラーの時は専用のエラーページを用意してなかったので、ウェブサーバーデフォルトの味気ない表示になってしまう。

原因と対策

原因としては、ウェブサーバーの仕様による。
具体的には「index.html」が存在せず且つその親ディレクトリ「fuga」が存在する場合、
ウェブサーバーの動作として、権限で許可されていればfuga配下のディレクトリ一覧を表示するようになっている。
しかし、権限がないと、403を返すようになっている。

対策としては、403エラー用の専用ページを設ける事が考えられる。

関連するタグ

Apache, ウェブサーバー