.htaccessでメンテナンスやクローズなど時限切り替え設定


1. はじめに

サイトのメンテナンスやクローズをする際、どこで処理させていますか。

  1. アプリケーションのコントローラーで表示の切り替えを行う場合
  2. .htaccessで表示の切り替えを行う場合

上記のどちらかが多いと思います。
一括して表示を切り替えたい場合、アプリケーションより上位で切り替え処理が実現出来る方が都合が良い場合もありますよね。
つまり.htaccessで切り替えを行いましょうという話です。
且つ時限切り替えが可能です。

2. 前提

.htaccessを使用するので、Apacheでのみ使用可能です。
Nginxの場合などの設定方法については他の記事にゆずります。
また、AllowOverrideを有効にする必要があります。

httpd.conf
AllowOverride All

3. 設定してみる

.htaccess
ErrorDocument 503 /maintenance.html

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} >201601230000
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=192.168.33.10
RewriteRule ^.*$ - [R=503,L]
</IfModule>

鍵となるのは、

RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} >201601230000

の部分。
この場合、2016年1月23日0時0分を超えたらmaintenance.htmlが表示されます。
メンテナンス切り替えの場合は、併せてRewriteCondで社内IPなどをアクセス許可しておきましょう。