.htaccess で特定のIPからのアクセスを403ページ以外ブロックする

なんてことはない話ではあるのですが、ぴったり当てはまるケースの記事が検索でヒットしなかったのでメモしておきます。

  • .htaccess 使用
  • 特定のIPアドレスからのアクセスを全面的にブロック
    • ただし403ページは表示させたい

こんなケースです。肝心なのは2つ目の部分で、単純に全面ブロックだけだとオリジナルにカスタマイズした403ページすらアクセスできずにサーバデフォルトの403になってしまうので、そこが注意が必要な部分です。

そこで以下のような .htaccess となりました。

order allow,deny
allow from all
deny from XXX.XXX.XXX.XXX
deny from YYY.YYY.YYY.YYY
deny from ZZZ.ZZZ.ZZZ.ZZZ

<FilesMatch "^\/error403\.html$">
    allow from all
</FilesMatch>

ErrorDocument 403 /error403.html

最初の方は「特定のIPのみアクセスをブロック」の部分です。

次に、FilesMatchの部分が「ドキュメントルートに存在するerror403.htmlのみ全面的にアクセスを許可(最初にブロックしたIPもアクセス可)」となります。

最後に ErrorDocument で403のエラーページをerror403.htmlにしてあげればOK。

参考

使用しなかったもの

この記事を書いた人

アバター

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。