« Cactiによるサーバ稼働状況の監視と異常通知 | メイン | TilePlex脆弱性発見と対応につきまして »

メンテナンス画面を簡単に出してみる
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

カレーはあまり好きじゃない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)フォト蔵
    なんらかのご参考になれば幸いとおもいつつ、もっとうまい方法があるような気がするのでもしよろしければ、フィードバックをいだければと思います。

    トラックバック

    このエントリーのトラックバックURL:
    http://www.unoh.net/mt32/mt-tb.cgi/897

    この一覧は、次のエントリーを参照しています: メンテナンス画面を簡単に出してみる:

    » [mod_rewrite]簡単に特定IPからのアクセス以外ならメンテナンス画面を出してみる from $php→rails (rails に憧れる phper のブログ)
    メンテナンス画面を簡単に出してみるを参考に、以下を .htaccess だけで実現してみる 特定 IP からのアクセスは認証下で普通にサイト閲覧が可能 ... [詳しくはこちら]

    コメント

    癒しは勉強になりました

    コメントを投稿


    画像の中に見える文字を入力してください。

      [PR] 転職
    ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

    現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

    About

    2007年7月 6日 17:33に投稿されたエントリーのページです。

    ひとつ前の投稿は「Cactiによるサーバ稼働状況の監視と異常通知」です。

    次の投稿は「TilePlex脆弱性発見と対応につきまして」です。

    他にも多くのエントリーがあります。メインページアーカイブページも見てください。

    ウノウサービス