Apache HTTP サーバーのリダイレクト機能を使って、ウェブアプリケーションに○ニータイマー的な機能を実装してみました。

※最近は「○ニータイマー」と言われても知らないエンジニアも増えてるんだろうなあ。。
(注 ○ニータイマーとは? 参考 - Wikipedia



【やりたいこと】
普通に動いているアプリケーションに対して、ある日時以降は自動的にエラーページへ転送する


【作るもの】
既存のウェブアプリケーション(/xonytimer/ 以下)に対して、以下のようなファイル構成を追加します:
|- xonytimer/ (目的のアプリケーション)
|   |- index.html
|   |-    :
|
|- error.html (エラーページ)
|- .htaccess (リダイレクト設定用)

/xonytimer/ 以下に目的のウェブアプリケーションが展開されているものとします(現在普通に動いているものとします)。で、ある特定の日時以降になったら /xonytimer/ 以下へのアクセスは全て /error.html に転送するよう .htaccess に設定します。

error.html の内容は適当にこんな感じにしました:
<html>
<head>
<title>Error</title>
</head>
<body>
<h1>○ニータイマー発動。。。</h1>
</body>
</html>

肝心の転送設定は以下のような内容にします。これを .htaccess に追加(または新規作成)します:
RewriteEngine On

RewriteCond %{TIME} >20170403033000
RewriteRule ^xonytimer/(.*) /error.html [R=302,L]
 ↑注 RewriteCond の ">" と "20170403033000" との間にスペースを入れてはいけません

↑の場合、システム時間が 2017年04月03日 03時30分01秒以降となる時間以降に /xonytimer/ 以下にアクセスがあった場合は /error.html に転送する、という内容にしています。日時はあくまでサーバー側のシステム時間なので、日本時間なのかそうでないのかはシステムに依存します。設定されているタイムゾーンに併せて指定する必要がある点に注意してください。

この設定であれば 2017/04/03 03:30:00 までに /xonytimer/ 以下にアクセスした場合は普通に使えます:
2017040301


が、上記時刻以降に /xonytimer/ 以下にアクセスすると転送設定が有効になり、/error.html に強制転送されます(/xonytimer/ 以下へはアクセスできなくなります):
2017040302


簡単なリライトルールだけで設定できました。


【こんなもん何に使うのか?】

実際に使うのは、この逆のケースが多いと思っています。例えば .htaccess に記述する内容を以下のようにします:
RewriteEngine On

RewriteCond %{TIME} <20170410000000
RewriteRule ^newapplication/(.*) /underconstruction.html [R=302,L]
  ↑RewriteCond の不等号が逆向きになっている点に注意


この指定であれば、2017/04/10 00:00:00 までの間に /newapplication/ 以下にアクセスがあった場合、そのリクエストは /underconstruction.html (準備中、みたいなページを想定)に転送され、2017/04/10 00:00:00 を過ぎると /newapplication/ 以下はアクセス可能になります。

新しいアプリケーションや(申し込みサイトなど)期日を決めた一時アプリケーションを運用する場合に、URL だけは事前にお知らせてしておくとして、実際の運用は指定期日になったらアクセスを許すがそれまでは URL を知っていてもアクセスさせない、という場合に便利な転送設定となります。