ページが増えてくると、特定のページを検索エンジンにインデックスさせないようにする必要が出てくる。ディレクトリーごとに制御するのであれば robots.txt をドメインのルートディレクトリに配置すればよい。しかし、トップページをインデックスさせたくない場合など、特殊なケースでは<meta/>タグを利用する必要がある。
検索エンジンのロボットに指示を与えるメタタグには、いろいろな記述方法があるが、一番単純なのはインデックスさせたくないページに、
<meta name="robots" content="noindex"/>
というタグを追加する。メタタグの詳細を知りたい場合は、http://www.robotstxt.org/meta.htmlを参照するとよいだろう。
トップページをインデックスさせないようにした背景
UB Lab は WordPress を利用しており、トップページは最新記事の要約を載せている。ページごとに8つの記事の要約を載せており、タイトルは内容に関係なく「UB Lab. | Every day is a new adventure in learning!」としている。
新しい記事を公開したら、記事のパーマリンクが Google の検索で引っかかるようになるが、トップページがクロールされるとトップページが検索順位の上位にきてしまい、パーマリンクは検索結果に表示されなくなった。時系列で説明すると、以下のようになる。
- 新しい記事を公開
- 新しい記事のパーマリンクが検索上位に表示
- 検索エンジンがブログのトップページをクロール
- トップページが検索上位に表示(記事のパーマリンクは検索結果に表示されなくなる)
検索エンジンの動きは各社異なると思うが、同じ検索文字列で表示される同一ドメインのページは、削除される傾向にあるようだ。たとえば、「マクドナルド」という検索文字列が書いてあるページが10ページ程度あっても、検索結果に表示されるのは、検索エンジンが一番有用だと思った1つのページのみになるということだ。
UB Lab の場合、各種ページの中でトップページが一番有用と考えられたのだろう、検索エンジンがブログのトップページをクロール後、記事のパーマリンクが検索結果に出なくなってしまった。トップページのタイトルは「UB Lab. | Every day is a new adventure in learning!」なので、検索結果として表示されてもクリックされる可能性は低く、表示順位もだいぶ落ちてしまう。
記事が出るたびに内容が変わってしまうトップページをクロールしてもらってもあまり意味がないので、メタタグを追加してインデックスしないようにした。
WordPress の設定
WordPress の標準的なテーマ(twentytwelve など)を利用している場合、ヘッダーを変更するのは少々やっかいだ。ヘッダーは1つのファイルにまとめられており、ヘッダーファイル内で表示しているページを判断しなければならないためだ。今回はトップページなので比較的単純で、header.php を以下のように書き換えて、トップページの場合は<meta/>タグを出力するようにしている。
<head> <?php if ( is_home() ) : ?> <meta name="robots" content="noindex"/> <?php endif; ?>
設定変更後に行うべきこと
UB Lab の巡回間隔はだいたい1日に1回なので、<meta/>タグの効果が有効になるまで約1日かかった。
その間、Google のウェブマスターツールでトップページをフェッチさせたり、該当のパーマリンクをフェッチさせたりしたが、あまり効果はなく不安定な状態になってしまった。不安定な状態というのは、パーマリンクが検索結果に表示されるようになったり、同じ検索文字列でも全く UB Lab のページが引っかからないようになったりだ。慌てずに、正規のクロール間隔を待っていた方がよかったようだ。