工事中ページを作成する

土曜日はウェブサーバの作業で出勤。サーバ群を順ぐりにとめて、ごちゃごちゃとなにかをするのですが、止めている間に生きているサーバで工事中ページを出して欲しいとリクエスト。
それもクローラ用に503でレスポンスを返して欲しいとか。いや、面倒だからやめようよ。やるの?そう。。

必要なもの

ということで必要なものは工事中のページ一式。これはファイル一つってのが望ましいのですが、昨今そういうわけにはいきません。
画像やらCSSやらも必要だけど、後でhttpd.confの設定が面倒になるので画像を使うにしても単一のサフィックスにするのが望ましいですね。ということで今回例として以下の3つのファイルでできている工事中ページを作成。

  • index.html
  • logo.gif
  • css/standard.css

httpd.confの設定

上記の3つのファイルを /var/www/sorry へ配置したとして、httpd.confの設定は以下の通り。mod_rewriteですべてのリクエストをindex.htmlへリダイレクト。mod_rewriteではレスポンスコードも設定できるのでこんな感じ。

    DocumentRoot        /var/www/sorry
    ErrorDocument       503 /index.html

    <IfModule mod_rewrite.c>
        RewriteEngine   On
        RewriteCond     %{REQUEST_URI}          !indexj.html$
        RewriteCond     %{REQUEST_URI}          !.css$
        RewriteCond     %{REQUEST_URI}          !.gif$
        RewriteRule     ^.*$    - [R=503,L]
    </IfModule>

    <IfModule mod_headers.c>
        Header set Retry-After "Sat,24 Aug 2013 22:00:00 JST"
    </IfModule>

構成されているページ以外はrewriteしてリダイレクト。
mod_headerがある場合は、オープン予定も書いてあげると対応するクローラもあるみたい。