アプリケーションのメンテナンスを行う際、特定のディレクトリをメンテナンスページにリダイレクトさせたいときがあるかと思います。
今回は、ユーザが利用するマイページ(/mypage)にアクセスがあった場合、準備したメンテナンスページ(/maintenance.html)にリダイレクトすることを想定して、設定例をメモしておきたいと思います。
また、こういうケースの場合は、メンテ作業側は動作確認のためにマイページにアクセスしたい場合があるかと思います。下記は、メンテ作業側が利用しているIPは、リダイレクトの対象から除外する設定も含んでいます。
.htaccess
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} (^/mypage)
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
RewriteRule ^.*$ - [R=503,L]
</IfModule>
「xxx.xxx.xxx.xxx」のところに設定したIPは、リダイレクト対象外となり、マイページにアクセスできます。それ以外のIPからのアクセスは、全てメンテナンスページにリダイレクトします。