サイトメンテナンス中のSEO:サーバー503エラーにする事
アクセス過多による一時的なサーバー停止やメンテナンス中などの場合は、積極的に503エラーを返すようにしましょう。
ユーザーにはメンテナンスページを表示させ、検索エンジン側には一時的なものである事を示す必要があります。
メンテナンスページを準備するだけだとステータスコードが200のままとなり、その状態をインデックスされてしまいます。
503エラーとは?
「503エラー」は、WEBサーバーとブラウザの間でやり取りされるステータスコードの一つです。
CGIやPHPが稼働していない時に出る500エラーと同系統のエラーと言えます。
エラー表示例
デフォルトでは、ブラウザには下記の様に表示されます。
・Service Unavailable
・503 Service Unavailable
上記は「サービス利用不可」という意味であり、一時的にWEBサイトにアクセスできなくなる状態を指します。
レンタルサーバー側の出す503エラー画面
現在はこのようにレンタルサーバー側の用意したエラーページが表示される事が多いです。
503エラーが発生する原因
503エラーが発生する原因としては以下の項目が挙げられます。
・レンタルサーバーへ同時多数アクセスによるサーバー停止
・メンテナンスなど管理者都合による一時停止
原因:アクセス過多などによる処理オーバーの場合
原因のほとんどは、意図しないサーバー停止です。
これはサーバー処理の許容量を超えてしまっているために起こります。
様々な理由でサーバーの通信量・処理能力を超えてしまう事があります。
サーバー処理量を超える原因
・同時に大量のデータをダウンロード中
・サーバー側のメンテナンス中
・CMSの操作による一時的な不具合
・CGIやPHPなどのプログラムによる過負荷の影響
エラーとなる問題を解消する
自身のサイトが上記の状態に当てはまる場合、特定して早急に解消する必要があります。
例えば大きな負荷をかける容量の多い動画の配信をしていたりすれば、停止しても仕方がありませんよね。
直接ではなく動画配信専用サイトからの配信に切り替える等、負荷を軽減させる対応が必要です。
他社サイトの影響を受けて503エラーとなる
例えば共有サーバーを利用している場合は、自分のサイトに非は無くても503エラーを被る場合があります。
同じ共有サーバー内ある「他サイト」が処理オーバーを引き起こしても、自分のサイトも一緒に停止するのです。
専用サーバーでない限りは、一つのサーバー内にWEBサイトは複数格納されています。集合住宅において電気のライフラインが切断されると、その世帯が全て停電するのと同じです。
厄介なケースですが、こればかりは共用サーバーの宿命ですのでどうしようもありません。
サイト管理者へ通知がいく
このような場合は、サーバーの管理会社から過負荷の原因を引き起こしているサイトの管理者へ警告がいきます。
ですので数日待てば、問題が解消している場合が多いです。
問題が解決しない場合には、サーバーの管理会社に連絡を入れて対応を迫る必要がありますね。
万が一それでも解決しない場合は、見切りをつけて他のレンタルサーバーへの移転を検討するべきです。
原因:メンテナンスのため管理者による意図的な停止
サーバーの処理オーバー以外に、運営者による意図的なメンテナンスなどでWEBサイトを停止させている場合もあります。
自身のサイトをメンテナンス中にしなければならない場合は、積極的に503エラーを出しましょう。
その際注意するのは「ユーザーに対して」と「検索エンジンに対して」の対応です。
ユーザーに提示するメンテナンス画面
ユーザーは常に、好奇心や問題解決の期待をもってWEBサイトを訪れる訳です。
「サーバーがエラーを起こしていて見れない」いう現実は、多少なりともその期待を裏切る行為になります。
これがユーザー離れのきっかけになってはいけませんよね。
ですので、どのページを見ても「メンテナンス中」の専用画面が出す様にするのがセオリーです。
検索エンジンに提示する503ステータスコード
同時に心配なのは、メンテナンス中のSEO対策です。
Googleなどの検索エンジンは、常にWEBサイトをクロール・キャッシュしに訪れます。
全てのページがメンテナンス中になった時にGoogleがSEO的にどのように判断するのかが心配されるところですよね。
そのために検索エンジン側には503エラーを表示して、今は「一時的な事態」である事を示すのです。
正しいメンテナンス中の画面の表示
ユーザーにも検索エンジンにも適切に判断してもらえる手順は以下の3つです。
・メンテナンス中である旨をHTMLで記載作成
・TOPディレクトリにmaintenance.htmlなどの名前で設置
・.htaccess(またはhttpd.conf)を設定
メンテナンスページ例
上記の様なメンテナンスページを表示させます。
この時終了する予定日付などをカウントダウンさせておくと、ユーザーも安心するので良いでしょう。
緊急時のEmail送信対応などもあるとベストです。
転送設定ファイルの準備
どのページを開いても503エラーでメンテナンスページが出る様に設定します。
htaccess(簡易版)
ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteRule ^.*$ - [R=503,L] </IfModule>
上記の様に設定すれば、どのページをみても503となりメンテナンスページが表示されます。
この時各ページのURLは、メンテナンスページのURLに変わります。
Googleに対しては「過負荷か一時的なメンテ中」だと認識されるので、このメンテナンス画面がインデックスされる事はありません。
htaccess(充実版)
ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=192.168.0.1 RewriteCond %{REMOTE_ADDR} !=192.168.0.2 RewriteRule ^.*$ - [R=503,L] </IfModule> <IfModule mod_headers.c> Header set Retry-After "Sun, 27 February 2021 6:00:00 GMT" </IfModule>
WordPressを使っている場合は「# BEGIN WordPress」の欄よりより上に記述しましょう。
簡易版と違うのは、管理者の環境からだけは通常アクセスできる点です。
それから終了予定時刻も設定しています。
管理者だけはメンテ状態を解除
5行目・6行目で管理者が使っている一部のIPアドレスを設定し、そこからのアクセスは通常表示がされる様にしています。
メンテナンス中ですから、管理者だけはいつもの状態を確認できなければなりません。
このように検索結果に悪い影響を与えることなく一時的にサイト停止させメンテナンス中とする際には、503エラーが出る様に構成する事です。
SEOを取り扱うWEB担当者は知っておくべきですね。
ステータスコードを200にしない事
ではステータスコードが503ではなく、正常値の200のままだとどうなるのでしょうか。
200のままだと、検索エンジンはそれがメンテナンス中の特別な処理だと認識する事ができません。
なのでメンテナンス中のページ自体をインデックスしてしまう可能性がある訳です。
ページが存在しない「Not Found」であるにも関わらず、ステータスコード200を返す「ソフト404問題」と同様です。
ではメンテナンス中の一時的な事態なのに、ステータスコード200を返してしまう悪い対処例をご紹介します。
htaccessによる302リダイレクト
これをおこなうと、ブラウザのURL自体が転送先のメンテナンスページURLに変わります。
メンテナンスページが各ページのリダイレクト先になっているだけで、サーバー上は何も問題が起きていません。
ですのでステータスコードは正常であり、200を返します。
Googleにインデックスされてしまう可能性あり
これだとGoogleに対して非常事態である事を伝える事ができず、通常のリダイレクトだと判断されてしまいます。
つまり「メインテナンス中」と表示した内容に集約され、そのままインデックスされてしまう訳です。
こうなるとページが大きく書き換わるので、検索順位に大きな影響が出ますよね。
このリダイレクトは、ブラウザを再読み込みしてもメンテナンスが終わっているかどうか確認ができない事もネックです。
httpd.confのRewriteでURLそのままリダイレクト
これをおこなうとブラウザのURL自体はアクセスしようとしたURLのままで、メンテナンスページが表示されます。
これも何も問題がないので、ステータスコードは200になります。
Googleにインデックスされる
これはリダイレクトとすら認識されないため、非常に危険です。
検索エンジンがメンテナンスページ内容を各ページURLのコンテンツとしてクロールしてしまいます。
このリダイレクトの場合、メンテナンスが終わっていればブラウザを再読み込みすると確認ができますね。
400系のエラーを返す場合
上記2つはいずれもレスポンスコード200が返るので、ユーザーはともかく検索エンジンに誤判断されやすいものでした。
ちょっとお話がずれますが、400系のエラーはユーザーにも検索エンジンにもよくない影響が及びます。
ユーザーに勘違いされる
まずユーザーに対してはメンテナンス中である事を示せないので、閉鎖されたと思ってしまう可能性もありますね。
そうなるとユーザー離れを引き起こす可能性もあります。
Googleからインデックスが削除される
検索エンジン側に対してもそうです。巡回しに来てもインデックスできない訳ですからね。
これがごく短い時間であったり、クロール頻度が高いページ(たとえばトップページ)であれば、それ程影響はないかも知れません。
しかし万が一サーバー復旧に時間が掛かり、404エラーを返す状態が長く続くと、インデックスから削除してしまう可能性もあります。
まとめ
WEBサイトのメンテナンス中であっても、ユーザーやGoogleからアクセスがあることを前提に考える必要があります。
ユーザーにはメンテ中であること以外に、メンテ終了予定時刻もメンテナンスページで示すべきですね。
そして検索エンジンにはステータスコード503を返して、あくまで一時的な状態であることを示しましょう。
その両方をきちんと丁寧に行うべきです。