メンテナンス画面の出し方まとめ
スーパーベーシックにメンテナンス画面を出す方法。
htaccessで飛び先変えてあげるような奴。
かなり枯れた手法だから、最近のレンタルサーバなら、どこでも使えるはず。
Rails上での、メンテナンス画面の出し方などは、別記します(いつか)。
htaccessとmainte.htmlを設置
メンテナンス用のHTMLと.htaccessを準備しましょう。
メンテナンス用のHTMLは単独表示できるようにCSSがなどはインラインで。
以下の書き方は一例なので、mainte.htmlなどは文言などは自由に編集を。
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<title>システムメンテナンスのお知らせ</title>
</head>
<body>
<div style='width: 640px; margin: 50px auto;'>
<div style='border: 1px solid #ccc; padding: 30px; margin-top: 30px;'>
<h2 style="color: #F00">システムメンテナンスのお知らせ</h2>
<p>
いつも◯◯をご利用いただき、ありがとうございます。<br />
このたびサービス向上のため、システムメンテナンスを実施いたします。<br />
下記時間帯でサービスがご利用いただけません。<br />
お客さまには大変ご迷惑をおかけいたしますが、何卒ご了承いただけますようよろしくお願い申し上げます。
</p>
<p>
ご不便をおかけいたしますがよろしくお願い申し上げます。
</p>
</div>
</div>
</body>
</html>
ErrorDocument 503 /mainte.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/mainte.html
RewriteCond %{REQUEST_URI} !(javascripts)
RewriteCond %{REQUEST_URI} !(stylesheets)
RewriteCond %{REQUEST_URI} !(images)
RewriteCond %{REMOTE_ADDR} !=111.111.111.111
RewriteRule ^.*$ - [R=503,L]
</IfModule>
解説
RewriteEngine ONで、リクエストのあったURLを転送する(この仕組で擬似静的化を実現するのですが)。
RewriteCond %{REQUEST_URI}
リクエストのあったら?という条件文みたいなもの。
!=/mainte.html
http://****/mainte.htmlへのアクセスは除外するぜ というもの。この場合、/mainte.htmlへのアクセスに対してはRewriteしないということ。
!(javascripts)
javascriptsディレクトリの下層を除外するぜ というもの。ディレクトリの場合はカッコで括る
RewriteCond %{REMOTE_ADDR} !=111.111.111.111
111.111.111.111には自分たちのグローバルIPに置き換えましょう。
グローバルIPがなければ、この行自体不要。
これは自分のIPだけはメンテナンス画面に飛ばないという除外設定(ほかの人達はメンテに飛ぶ)。
RewriteRule ^.*$ - [R=503,L]
全アクセスを503にする(ifModuleの上に503の時は/mainte.htmlを出せと書かれている)
参考:
http://web-tan.forum.impressrd.jp/e/2009/06/16/5880
http://q.hatena.ne.jp/1315913774