noindexとは?
noindex(ノーインデックス)は、該当のページを検索結果に表示しないようにインデックスに登録しないでねーという設定です。
単純に表示させたくないページに指定するほか、重複コンテンツ、質の低いページに設定してインデックスに登録しないことで SEO評価を高める ことができます。
noindexの設定方法は?
noindexを指定する方法はいくつかます。
ひとつは HTML に robots meta タグを追加する方法です。下記のように meta タグを追加することでページごとに noindex を指定することができます。以下の例ではすべてのクローラーに対しての設定になっていますが、特定のクローラーを指定することもできます。
<!DOCTYPE html> <html><head> <meta name="robots" content="noindex" /> (…) </head> <body>(…)</body> </html>
もう一つは、HTTP ヘッダに X-Robots-Tag を指定する方法です。下記のようなレスポンスヘッダにすることで robots meta タグで noindex を指定したのと同じ挙動が期待できます。
HTTP/1.1 200 OK Date: Tue, 25 May 2010 21:42:43 GMT (…) X-Robots-Tag: noindex (…)
もし WordPress を使っている場合は、サイト全体をインデックス登録しない設定もあります。さらに、テーマによってはチェックボックにチェックするだけで、記事ごとに noindex や nofollow を指定できるテーマもありますね。
Apacheでnoindexを指定する方法
上記の HTTPヘッダに noindex を設定する方法を Apacheで実現する方法 を説明します。
HTML を変更できなかったり、あるいは複数のページや特定パス以下の全てのページに一括で指定したいときに役立つと思います。
設定方法は簡単で、対象を指定するディレクティブに Header を一行追加するだけです。下記は /foo/
へのリクエストに対するレスポンスにヘッダを追加している例です。
<Location /foo/> Header set X-Robots-Tag noindex </Location>
Header の指定方法は set, add, append の3種類がありまして、それぞれ次のような仕組みになっています。
- set – 設定する。既存の場合は上書き
- add – 新たに追加する。もし既存の場合でも同じヘッダを追加する
- append – 新たに追加する。カンマ区切りで追加する
robots meta と robots.txt の違い
robots meta タグに似ている存在として robots.txt があります。二つの違いを説明すると robots metaタグはインデックス処理に対しての指定 を意味していて、robots.txt はクロール処理に対しての指定 を意味しています。
robots.txt でクロールするか判定したあと、クロール対象であれば robots meta タグを読んでインデックスするかを判定する、という流れになります。
もし インデックス済みのページをインデックスから削除したい場合は、robots meta タグでインデックスしないように指定する必要があります。 robots.txt でクロールを拒否してしまうと robots meta タグが読まれず、インデックス削除が行われなくなってしまうからです。
参考
- Robots meta tag, data-nosnippet, and X-Robots-Tag specifications
- noindexでインデックス登録を拒否する方法
- Apache Module mod_headers