だらだらやるよ。

こげつのIT技術メモ

メンテナンス中の画面を表示する方法。

サイトのデザインなどを変更する際に、一時的にサイトの表示を「メンテナンス中です」にする方法。
htaccessの記述とかしょっちゅう忘れるので自分メモをかねて。

まずメンテナンス中を表示するためのhtmlを用意。

  • maintenance/index.html
  • maintenance/maintenance_image.jpg
  • maintenance/503.php

こんな感じで用意。
503.phpの中身はヘッダに503(メンテナンス中)を出して、index.htmlの中身を表示するだけです。

<?php
header ('HTTP/1.0 503 Service Temporarily Unavailable');
readfile(dirname(__FILE__) . '/index.html');
?>

で、htaccessの設定方法はこんな感じ。


RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^自分のIP$
RewriteRule ^.*$ - [L]

RewriteRule ^maintenance/ - [L]
RewriteRule ^.*$ maintenance/503.php [L]

解説すると、最初にでてくるRewriteCondは、自分のIPを登録します。
ここにIPを入力すると、次のRewriteRuleで、すべてのアクセスが素通しとなるので、
メンテナンス中の表示をしてる間でも自分はサイトを確認できるようになります。
複数人で確認する場合、ORでつなげていけば大丈夫だと思います。


その次のルール、つまりそれ以外のIPの人たちは、
すべて503.phpにリダイレクトされますね。
ただ、それだけだとhtmlの中で使用している画像などもすべて503.phpにリダイレクト仕様としてしまうので、maintenanceディレクトリの中を参照しているものについては、
無視するようにしています。


方法としては特定拡張子のみにするとか、いくつか方法があるみたいですが、
とりあえずこれでうまくいく感じなのでこれで(やりかたとしてもわりと柔軟に対応できますしね)。