mod_rewrite ではサーバの時間を扱うこともできます。
下記は、2014年3月6日の15時から2時間の間、全HTTPリクエストに対してメンテナンス説明ページを表示する例です。
.htaccess
RewriteEngine on
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR} >2014030614
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR} <2014030617
RewriteCond %{ENV:REDIRECT_X_IS_MAINT} !^1$
RewriteRule .* /maint.html [E=X_IS_MAINT:1,L]
無限リダイレクトにならないように、一度目のURL書き換えが成功したら環境変数 X_IS_MAINT
を設定し、二度目のURL書き換えが実行されないようにしています。
補足
- サーバの設定によって時間が標準時(GMT+0)になってたりするので注意してください。
- mod_rewrite公式ページの説明では、比較演算子として
>=
や<=
が使えると書いていましたが、私の環境では何故かうまく動きませんでした..