滅多にないけど必ず定期的に行う作業。それはWebサイトのメンテナンス。作業中はアクセス者に周知させるためメンテナンス・工事中 画面を必ず表示させます。
503工事中ページの作り方は、検索すればすぐ出てくるが、説明ばかりでコレじゃない感ばかりです。しかも難しい事ばかりやってて、本来の趣旨からズレちゃっています。
ということで、まとめた記事です。
実現したい 503 メンテナンス・工事中ページについて
メンテナンス画面の仕様について
検索して色々とサイトを確認しましたが、私が求める情報がまとまっていなかった。複数サイトの記事を参照すると使えるって感じです。
端的にまとめます。
- どこにアクセスしても、メンテナンス画面が表示される
- CSS,JavaScriptが使える
- 画像を表示させる
- 503コードを返す
これなんですよ!目的は単純なので、これらの目的を満たすための設定方法を説明します。
HTTPステータスコード 成功レスポンス 200 を絶対に返すな!
ユーザーはサイトを見れば工事中と理解してくれます。しかし、クローラー・検索エンジンのロボットなどの機械は正確に情報を与えてあげないと、不要な情報が伝わってしまいます。
画面に表示される内容がどんなものでも、リクエストが正常に受付されたことを示すHTTPステータスコード 200 を返すと、ロボットたちは、メンテナンス画面を更新したページと認識し処理を進めてしまいます。
検索エンジンのロボットは、それがメンテ中の特別な処理だと認識できず、メンテ中画面をインデックスしてしまう可能性があります。
503 メンテナンス画面の設定方法 Nginx
必要最低限の設定
小難しいことは不要で、とりあえず表示できればOK。そんな場合に利用することができる設定方法になります。設定箇所は503メンテナンス画面に必要な部分のみを記述しています。
server { ・・・・ error_page 503 /503.html; location ~* \.(js|css|jpg|jpeg)$ {} location /503.html {} location / {return 503;} ・・・・ }
これだけです。すべてのアクセスに対して503のステータスコードを返してメンテナンス画面を表示されるようになります。
503 メンテナンス画面の設定方法 Apache
必要最低限の設定
小難しいことは不要で、とりあえず表示できればOK。そんな場合に利用することができる設定方法になります。設定箇所は503メンテナンス画面に必要な部分のみを記述しています。
・・・・ ErrorDocument 503 /503.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/503.html RewriteRule ^.*$ - [R=503,L] </IfModule> ・・・・
これだけです。すべてのアクセスに対して503のステータスコードを返してメンテナンス画面を表示されるようになります。