unoh.github.com

メンテナンス画面を簡単に出してみる

Fri Jul 06 01:33:13 -0700 2007

カレーはあまり好きじゃないKeitaです。
映画サイトの映画生活のデザインリニューアルをして、いくつかデザイン以外の修正もあり、サーバ停止時間が発生するため、メンテナンス画面を作ることにしました。今日はその簡単なトピックスを書いてみたいと思います。
まず最初に、メンテナンス画面は次のような形の要件があるかなと思っています。
  • ドメイン以下すべてがメンテナンス画面になる
  • クローラー対策でヘッダで503を出力する
  • 癒される
  • 特にクローラー対策は、クローラーがきておかしいものをキャッシュされると結構痛いかなと思うので、503が的確かはともかく、そこらへんのエラーを出すことにしました。

    最初、ここら辺のすべての処理をmod_rewriteだけで実現できるかなと思ったのですが、残念ながら、mod_rewriteでは300番系のエラーを出すことができますが、503のエラーは出せないようなのでさくっと簡単なものを作るの「には」便利とかいわれてるPHPで、さくっと、503を出すことにしました。(もともと、映画生活がPHPなので深く考える必要なかったというのが理由です。)

    まず、いろいろ考えるのも面倒なので、mod_rewriteをこんな感じに設定します。
    RewriteEngine on
    RewriteRule ^503/ - [L]
    RewriteRule ^.*$ 503/503.php
    
    これで、設定されているディレクトリ以下が503ディレクトリ以外全部 /503/503.phpに飛ばされます。

    503.phpには次のように書きました。
    <?php
        header ('HTTP/1.0 503 Service Temporarily Unavailable');
        include(dirname(__FILE__) . '/maintenance.html');
    

    これで、503を出力しつつmaintenance.htmlを表示します。
    これで、すべてのアクセスでメンテナンス画面を出力することができます。

    maintenance.htmlにPHPコードがかいてあると、それが実行されてしましまうので、file_get_contetnsfile_get_contentsとか使うほうがいいかもしれません。

    あと、maintenance.html内に、画像など外部リソースのリンクを張るときは、503ディレクトリに入れるのとそれをフルパス記載することわすれないように注意してください。

    それでは実際に使われたメンテナンス画像をごらんください。
    maintenance
    maintenance posted by (C)フォト蔵
    なんらかのご参考になれば幸いとおもいつつ、もっとうまい方法があるような気がするのでもしよろしければ、フィードバックをいだければと思います。