運用中のWebサイトを .htaccessファイルでメンテナンスモードに切り替える方法を書きます。
メンテ中に表示するページを用意
メンテナンスをしている旨を書いた簡単なHTMLなどのページを “maintenance.html” などの名前で用意します。
メンテ用 .htaccess ファイルを用意
メンテナンスモードに使うための .htaccessファイルを新規に用意するか既存 .htaccessファイルにメンテモード用の記述を追記します。
フルバージョン
<IfModule mod_rewrite.c>
## メンテモードで表示するHTMLファイル
ErrorDocument 503 /maintenance.html
RewriteEngine On
## メンテモード用HTMLが存在する場合にメンテモード
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
## メンテモード用のHTMLファイルを除外
RewriteCond %{REQUEST_URI} !=/maintenance.html
## 画像等リソースファイルを除外
RewriteCond %{REQUEST_FILENAME} !\.(css|jpe?g|gif|png|js)$
## 作業者など許可するIPアドレスを設定
RewriteCond %{REMOTE_ADDR} !=192.168.0.111
RewriteCond %{REMOTE_ADDR} !=192.168.0.112
#例外として公開しておきたいディレクトリやページ
RewriteCond %{REQUEST_URI} !^/exception-dir/
RewriteCond %{REQUEST_URI} !^/exception.html
## HTTPステータスコード 503 を返す
RewriteRule ^.*$ - [R=503,L]
</IfModule>
<IfModule mod_headers.c>
## メンテ終了予定時刻を指定
Header set Retry-After "Sun, 14 Jun 2019 7:00:00 GMT"
</IfModule>
簡易版
<IfModule mod_rewrite.c>
## メンテモードで表示するHTMLファイル
ErrorDocument 503 /maintenance.html
RewriteEngine On
## メンテモード用のHTMLファイルを除外
RewriteCond %{REQUEST_URI} !=/maintenance.html
## 作業者など許可するIPアドレスを設定
RewriteCond %{REMOTE_ADDR} !=192.168.0.111
RewriteCond %{REMOTE_ADDR} !=192.168.0.112
## HTTPステータスコード 503 を返す
RewriteRule ^.*$ - [R=503,L]
</IfModule>
簡易版の .htaccess では “maintenance.html” の存在確認を省いているため何らかの理由でファイルを上げ忘れると下記のようなエラーメッセージのページが表示されます。
Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. Additionally, a 503 Service Unavailable error was encountered while trying to use an ErrorDocument to handle the request.
コメント