robots.txtのNoindex(Disallowではない!)を使ったPageRankスカルプティング
2009年05月15日
今日の記事は、Search Engine Journalで知った、いつにもまして“玄人(クロウト)”好みなテクニックです。
robots.txtで利用できる”Noindex:”という知られていない記述です。
まず、簡単にrobots.txtのおさらいをしておきましょう。
robots.txtは、サーチエンジンのロボットのアクセスをブロックしてクローリングを拒否するために使います。
アクセスを禁じますから、インデックスされることはなく、当然SERPにも現れません。
メンバー専用エリアのように外部に公開したくないページに用いられます。
たとえば、次のように記述したrobots.txtを設置していたとします。
User-Agent: *
Disallow: /members/
「www.suzukikenichi.com/memnbers/」と、これより下のディレクトリ(フォルダ)とファイルにはどの検索エンジンのロボットもアクセスできません。
また、重複コンテンツを防ぐためにも用いられます。
インデックスさせる必要のないダブりのページを除外できます。
robots.txtの詳しい解説は過去のエントリをご覧ください。
それでは本題に入ります。
通常、robots.txtでロボットをブロックするには、「Disallow:」というディレクティブを記述します。
しかし、「Noindex:」というディレクティブが、利用できるのです。
Disallowはロボットのアクセスそのものを拒否します。
したがって、指定したページを見ることすらできません。
もちろんインデックスしません。
一方、Noindexはアクセスは可能です。
ロボットは指定したページを見ることができます。
しかし、インデックスしません。
つまり、SERPに現れないのです。
(おそらく、meta noindexタグと同じで、インデックス自体はしているはずで、ただSERPに出さないだけだと推測します。)
Noindexがどんな場面で使えるかというと、PageRankスカルプティングです。
Noindexで、PageRankの流れをコントロールするのです。
SERPに出したくないページでも、外部からリンクが張られることがあり得ます。
外部からリンクが張られるということは、PageRankが付くわけです。
このページから、自分のサイトの別ページに内部リンクを張れば、PageRankを渡すことができます(もちろん、外部サイトでもOK)。
しかし、このページをrobots.txtでブロックしておくと、ロボットはそのページにアクセスできませんから、リンク先をたどる(=PageRankを渡す)ことができません。
そもそもページを見れないので、リンクの存在すら分かりませんね。
せっかく集まったPageRankが、このページで止まってしまうのです。
SERPに出す必要がないとはいえ、集めたPageRankは他のページを強くするために利用したいものです。
ここで、Noindexを使います。
robots.txtに次のように記述します。
User-Agent: *
Noindex: /passpr/
サーチエンジンは、「www.suzukikenichi.com/passpr/」とこれより下のディレクトリとファイルにアクセスをしますが、インデックスしません。
robot.txtのNoindexは、クローラをアクセスを妨げるものではありません。
アクセスは拒否せず、インデックスだけを拒否します。
「中身を見るけれども、内緒にしておく」ということです。
アクセスして、リンクがあればリンクをたどりリンク先へPageRankを渡します。
※ただし、リンクにnofollow属性が付いていたり、meta noifollowタグが記述してあれば、リンク先をたどらないので、PageRankは渡されません。
すなわち、meta noindexタグと同じ振る舞いをします。
「わざわざrobots.txtのNoindexを使わなくても、meta indexタグで間に合うんじゃないの?」と、上級者なら思うはずです。
確かにそのとおりかもしれませんが、robots.txtの場合はディレクトリ単位で指定できます。
一方、Metaタグの場合はページ単位になります。
設定したいページの数が多い場合には、全ページにmeta noindexタグを記述しなければならないので作業が大変です。
同じディレクトリにあれば、robots.txtなら1箇所で設定できます。
拒否を解除する時も、記述を消せばすべてのページに反映されます。
少数のファイルであれば、meta noindexで用が足りますが、数が多い場合はrobots.txtのNoindexディレクティブが便利でしょう。
インデックスさせたくないけれども、リンクが集まっているページから大切なページへPageRankを与えたい、こんな状況で利用してみてください。
なお、robots.txtのNoindexは、Googleでのみサポートされているようです(非公式?)。
User-Agent: googlebot
でも、よさそうですね。
Sponsored Links
この記事を読んだ人は次のエントリも読んでいます。




最近、Googleの検索結果の「類似ページ」がたくさん表示されるようになった気がします。
今までは、ほとんど出なかった気がするのですが。
(既出ネタかも知れないのですが、適当な記事を見つけられなかったので、この記事にコメントさせて頂きました。すみません)
*** Reply from Suzuki Kenichi ***
「related:」検索ですね。
めったに使ったことがないので、増えたのかどうかわかりません。
スミマセン。
GoogleだけNoindexにして、他のクローラーはふつうにDisallowしておくとPageRankがムダなく流せるっていうことですね。たぶんw
*** Reply from Suzuki Kenichi ***
そうですね。SERPには出したくないけどPRが付く可能性のあるページは、DisallowではなくNoindexにしておくと「もったいない」ことにならずにすみそうです。
どうでもいいかもしれませんが
“googlebot”でなくて”Googlebot”ですよ?
.htaccessでもなくrobots.txtなんで問題ないとは思いますが
※User-Agentをgooglebotと詐称した
おっちょこちょいなクローラーが居るとかなんとか。。
*** Reply from Suzuki Kenichi ***
ご指摘ありがとうございます。
意識していませんでした。
Googleのロボットは、公式にはGooglebotのようですね。
W3Cによれば、robots.txtでは大文字小文字を区別しないようにすることを推奨しているので、googlebotでも解釈してくれるのでしょう。
.htaccessでは、大文字小文字を厳密に記述する必要があるということで理解してよろしいですか?
.htaccessについて断片的な知識があるだけなので恐縮ですが、
しばしば使われるSetEnvIfディレクティブは大文字小文字の区別あり、
SetEnvIfNoCaseディレクティブは区別なしなので、
大文字小文字を区別しておかないと困る場合があります。
>ですよ?
“?”は”~”(波線)で書き込みました
“?”だとなんだか高圧的ですね(汗)
>robots.txtでは大文字小文字を区別しない
これは意識していませんでした(笑)
.htaccessとセットで使うことが多いので厄介ですね
*** Reply from Suzuki Kenichi ***
常に大文字小文字を意識して記述するようにしておくのが、安心ですね。
波線ほか一部の文字が文字化けしてしまうんです。
サーバー移転の時のDBのエクスポートかインポートで文字コード設定がまずかったのかもしれません。
波線が使えないのはとても不自由です。