[ケーススタディ]アクセス対象のページが存在しないときに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エラー用の専用ページを設ける事が考えられる。