サイトをメンテナンス表示にして更新を行う方法

各蔵が出す夏酒が楽しみなYu-ichiです:neko:

日本酒は四季折々の味が楽しめるところがいいですね。
おかげで食べ物の好き嫌いも減ってきました。:wa-i:

さて、今回はサイトをメンテナンス表示にしつつ、
自分の環境から更新を行う方法です。:kaomoji7:

サイトを.htaccessを使ってメンテナンス表示にすると
更新したページの表示確認ができなくて困ります。:kaomoji4:
なので、自分の環境からは普通に閲覧でき、それ以外の環境からはメンテナンス画面を表示させる為の.htaccessの設定をご紹介します。

まず、メンテナンス画面となるページをご用意ください。:kaomoji6:
仮に「maintenance.html」というファイルをルート直下に用意します。
サイトにアクセスがあれば、このファイルに転送します。
メンテナンスなので、ステータスコードは503を返しましょう。:hamster_4:
ここで404や301などが帰ってしまうとSEO的にはよろしくないので。:naku:

.htaccessに以下の記述を追加します。

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

リダイレクトが無限ループしてしまうので、メンテナンスページを除外します。
RewriteCond %{REQUEST_URI} !^/maintenance.html

自分のPC環境のグローバルIPを除外します。
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx

これで自分の環境からアクセスした場合に、メンテナンスページにリダイレクトされず元の画面が閲覧できるようになります。
他の環境からも閲覧したい場合は、
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
を追加してIPの部分を変更してください。
もちろん正規表現を使えば、一行で複数IPを指定することも出来ます

あとは実際にアクセスしてみて、動作確認してください。:neko:

サーバー環境によってはドットの前に「\」が必要な場合があります。
maintenance\.html  xxx\.xxx\.xxx\.xxx\. など。

サイトのメンテナンスが終わったら、記述をコメントアウトして公開しましょう。
削除してしまうと次使いたいときにまた書かなくてはならないので。:kaomoji7:

2017/5/9 追記
.htaccessの記述内に一部ミスがあるとのご指摘をいただき、修正いたしました。
「ewriteEngine On」→「RewriteEngine On」
大変失礼いたしました。

トラックバックURL