Posted at

ウェブサイトでのメンテナンス画面の出し方(スーパーベーシック版)

More than 1 year has passed since last update.


メンテナンス画面の出し方まとめ

スーパーベーシックにメンテナンス画面を出す方法。

htaccessで飛び先変えてあげるような奴。

かなり枯れた手法だから、最近のレンタルサーバなら、どこでも使えるはず。

Rails上での、メンテナンス画面の出し方などは、別記します(いつか)。


htaccessとmainte.htmlを設置

メンテナンス用のHTMLと.htaccessを準備しましょう。

メンテナンス用のHTMLは単独表示できるようにCSSがなどはインラインで。

以下の書き方は一例なので、mainte.htmlなどは文言などは自由に編集を。


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