ブログ

日々の出来事

Webサイトを運用していると、システムのバージョンアップや掲載内容の改修、またはサーバの移設など、様々なケースでWebサイトを一時的にメンテナンス画面に切り替え、運用を停止しなくてはいけない場面に遭遇します。理想的にはWebサイトの運用を止めずに、スムーズにメンテナンス作業が完了することが望ましいのですが、現実的には難しい場合が多々あります。

メンテナンスページを設ける方法として、一般的にはルート階層にメンテナンス内容を記載したファイル(index.htmlなど)を設置して、あとは.htaccessでリダイレクトをかけるなど、割とざっくりと対応しているケースもある様ですが、検索エンジンのクローラーが回ってきた場合に意図しない判断をされてしまう可能性があるため、正しい方法でメンテナンス画面を用意することが推奨されています。

.htaccessで503ページを用意する

Google検索セントラルを確認すると、「サイトのダウンタイムへの対処の仕方」には、下記の様に「503」を利用することが推奨されております。503を使うことによりGoogleにメンテナンス中であることが伝わるため、インデックスなどに影響が出る事もない様です。SEOを重要視されているWebサイトにとってインデックスは非常に重要ですので、Googleの推奨される方法で実装されることをお勧めいたします。

・サイトのダウンタイムへの対処の仕方
「サイトのダウンタイムへの対処の仕方」の詳細はこちら

ページのリクエストに対して、HTTP ステータス コード 404 (Not Found) を返したり、エラー ページを表示しているのに 200 (OK) を返したりする方法は、ダウン タイムへの対処法としてお勧めできません。それよりも、HTTP ステータス コードとして 503 (Service Unavailable) を返すように設定した方が、検索エンジンのクローラに対してダウン タイムが一時的であることを伝えることができます

503でリダイレクトをかける場合、一般的にはhtmlを設置するroot階層の.htaccessに下記の様な記述で対応します。
(サーバの仕様により書き方が変わる場合がありますので、実施にはご利用中のサーバに合わせて記述してください)

#root階層にmaintenance.html(メンテナンスページ)を設置する場合
#自分のIPを除外する場合はIP箇所のコメントアウトを外してIPを設定してください
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance.html
#RewriteCond %{REMOTE_ADDR} !=000.000.00.00
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(jpg|png|css)$
RewriteRule ^.*$ - [R=503,L]
</IfModule>

#メンテナンス終了予定日時
<IfModule mod_headers.c>
Header set Retry-After "Fri, 5 July 2024 7:00:00 GMT"
</IfModule>

a-blog cmsならシステムに503ページが用意されています



a-blog cmsには「管理ページ」のダッシュボードに、メンテナンス画面に切り替える機能が備わっております。
こちらからモードを切り替える事で「503」ページに転送できますので、簡単に切り替えが可能です。
503ページの内容を変更したい場合は、あらかじめ作成した503.htmlをサーバのhtmlを設置するroot階層にアップロードしておく必要がありますのでご注意ください。(root階層にファイルがない場合は、a-blog cmsが用意した定型のメンテナンスページが表示されます)

CPIは503が利用できないらしい

今回メンテナンスページを表示するサーバがCPIだったのですが、調べたところCPIでは.htaccessの503エラーの操作についてサーバ側で制限がかかっており、ユーザー側では503用ページを設定することが出来ない事が分かりました。
CPIでメンテナンスページを表示する場合は、302のリダイレクトなどでメンテナンスページへ転送するなど、他の手段を使う必要があるようですのでご注意ください。

・CPI .htaccess の設定方法
「CPI .htaccess の設定方法」の詳細はこちら

この様に.htaccessに制限がかかっている場合もありますので、ご利用のサーバを事前に調べておくことをお勧めいたします。

#CPIでサイト全体のアクセスをmaintenance.htmlに302リダイレクトをする場合
#root階層にmaintenance.html(メンテナンスページ)を設置
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteRule ^(.*)$ /maintenance.html [R=302,L]

最後に

メンテナンスページを表示するという単純な作業が、思わぬところで「Googleからのインデックスを削除されてしまう」場合があると思うだけでドキッとします。メンテナンス中は時間との戦いです。メンテナンス自体の作業に追われ余裕がない事も多いと思いますので、ぜひ事前にしっかりと準備をして、心に余裕をもって対応されることをお勧めいたします。(自分自身への忠告も込めて…)

メンテナンスページ自体は人が見るだけですが、その裏でWebサイトの評価を落とさない様に、この様な情報を頭の片隅にでも覚えておいていただければ幸いです。


ブログの記事一覧