裏紙に書く程度の内容

.htaccessでメンテナンス画面の設定

apacheの.htaccessでメンテナンス画面を表示させる方法についてのメモ。
.htaccessが使用できる前提です。

.htaccess設定

以下のようにします。

ErrorDocument 503 /maintenance.html

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^.*$ - [R=503,L]

これで全てのアクセスは”maintenance.html”へ飛ばされるようになります。

ErrorDocument503時に表示されるファイルを指定します。

それからRewriteEngine Onでリライト機能自体を有効にし、その下でリライトのルールを定義しています。

最後の行のRewriteRuleで全てのアクセスを503リダイレクトにしています。

しかし、全てのアクセスだと”maintenance.html”にアクセスしたときも503になるため、”maintenance.html”にアクセスしたときはリライトのルールから除外されるように、2行目のRewriteCondを設定しています。

特定のIPからのアクセスは許可する

前述の設定だと全てのアクセスがメンテナンス画面に飛ばされるため、管理者も画面の確認ができません。

そこで作業者(メンテナンス者)は通常通りサイトが開けるようにします。

ErrorDocument 503 /maintenance.html

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.10$
RewriteRule ^.*$ - [R=503,L]

RewriteCond %{REMOTE_ADDR}の部分に作業者のIPアドレスを設定すれば、通常はメンテ画面にしつつ、作業者は画面を確認できるようになります。

Index