ステータスコード503を返しつつメンテナンスし隊!

タイトルどおり。

  • メンテナンス中なのでユーザにはステータスコード 503 を返したい。
  • ついでに「メンテナンスごめんね」画面を見せたい。
  • でもあるIPアドレスからはいつも通り見たい。

ベストかは分からないけど mod_rewrite がいろいろ出来そうなのでそれを使った。
Apache の設定ファイルに以下を加える。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123.456.789.123$
RewriteRule !(^\/maintenance\.html$) "/maintenance.html" [L,R=503]

ErrorDocument 503 /maintenance.html

そして Apache を再起動でイナフ。
僕には最後の一行が余計に見えて仕方が無いんだけど、無いとうまくいかない。その他いろいろ、自分が納得できるように書いたら全部うまくいかないので僕は多分 mod_rewrite をまるで理解していない。
最後になったけど試した Apache のバージョンは 2.2.3。とりあえず上記でうまくいったということで。

参考サイト