今までにもnoindexにすることによってのデメリットなどをいくつかの記事のなかでちょっとずつ紹介してきましたが、ちょっと調節するからといったタイミングや復活させるけども一旦ページを落とすからなどのタイミングでnoindexにしてしまい、一回インデックスを拒否してしまった事によって任意のタイミングで再度インデックスしてもらえなかったり、ページのランクがダウンしてしまったりと、うまく運用しないとマイナスにつながってしまいがちのnoindexです。
私も今までに沢山のトラブルを目にしてきましたが、ページをいったん見れなくする方法などは正しく行えばエンドユーザーにもクライアントにもクローラーにも優しい対応になります。
今回はその中でもメンテナンスページ(503)リダイレクトを紹介します。
目次
htaccessに書くコードはこれ
ErrorDocument 503 /maintenance.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.php
RewriteCond %{REQUEST_FILENAME} !\.(css|jpe?g|jpg|gif|png|js|svg)$
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.x.x
RewriteRule ^.*$ - [R=503,L]
RewriteCond %{REQUEST_URI} !^/exsample/
</IfModule>
この記述がされた.htaccessを置いた階層は/maintenance.phpにリダイレクトされるようになります。
デザインされたメンテナンスページを表示することのできる形になっています。
簡単なコード解説
メンテナンスページの指定
ErrorDocument 503 /maintenance.php
RewriteCond %{REQUEST_URI} !=/maintenance.php
メンテナンスページを指定している部分のコードになります。
maintenance.phpは任意の名前に変更して問題がありません。
装飾をしているファイルの読み込み
RewriteCond %{REQUEST_FILENAME} !\.(css|jpe?g|jpg|gif|png|js|svg)$
メンテナンスページを装飾している場合にcssやjs、各画像を読み込めるようにしているコードです。
その他拡張子を追加することで、そのファイルを読み込むことができます。
アクセスできるIPアドレスの管理
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.x.x
xxx.xxx.x.xの部分に自身のIPアドレスを追加することによって自分はメンテナンスページにリダイレクトはされなくなります。
クライアントの確認や、複数作業する方がいる場合などは、全員のIPを追加する必要があります。
追加の方法としては下記のように、行を追加していくことでできます。
RewriteCond %{REMOTE_ADDR} !=192.168.1.1
RewriteCond %{REMOTE_ADDR} !=192.168.1.2
※自分のIPアドレスの調べ方がわからない方などは確認くんなどがオススメです。
503リダイレクト
RewriteRule ^.*$ - [R=503,L]
503を返すコードです。
これによってクローラーなどは一時的のページなんだと判断してるようになり、SEO的なペナルティを避ける事ができると同時にnoindexにすることなく、調整中のページをインデックスさせない事ができます。
特定の階層だけリダイレクト解除
RewriteCond %{REQUEST_URI} !^/exsample/
特定の階層だけリダイレクトを解除できるようにする記述です。
ページ全体をメンテナンスにしているけども、会社概要ページだけは表示させたいなどの時に使用します。
まとめ
いくつかの制作会社が集まって大きいサイトを作成している際に、メンテナンスにして制作を行っていたら、「なんで御社はわざわざこんな面倒な事をするんですか?」と言われ.htaccessを消されてしまい、結果エンドに見られちゃいけないページがインデックスされてしまうなどのトラブルに繋がっていた事例も目にしました。
最近ではしっかりしたものを慎重に作るというより、簡単なものを早く安く納品しちゃえばおしまいといった制作会社の方が多くなっているように感じます。
面倒なのはわかりますが、一個づつしっかり行っていく事で、クライアントにも責任があるものが提出でき、クローラーにも優しいサイトが作成できると私は考えています。