robots.txtでロボット対策,SEO向け書式集

ロボット対策に付いて解説したページ。クローラーやスパイダーと呼ばれるロボットをコントロール手段としてのrobots.txtをSEOに利用しよう。robots.txtで検索エンジンのロボットを自由自在に繰るための方法を解説するページ。W3C勧告やRobots.orgの記述に基づいた正確な書式を掲載しています。単なる辞典とは違う実利的な具体的解説を行うページです。

robots.txtの書式

ASY!どのサイト内にも検索エンジンのロボットに見てもらいたいファイルと、見られたくないファイルとがあります。 見てもらいたい場合は(Allow)、見られたくない場合は(Disallow)の後にファイル名やディレクトリ名を書きます。

ページ内ナビrobots.txtの要点 robots.txtの書式例

ロボット・テキストと検索エンジンの関係

ASY!Yahoo,Google,Microsoft(Live Search)の3社は、自身の運用するクローラーがRobots.txtを承認するという取り決めを行っています。
 これによりrobots.txtの信用力は格別のものとなり、安心して使えるようになりました。(参考サイトYahoo Search Blog)

〔基本の書式〕

User-agent: ユーザーエージェントの指定 固有名か*(全部)
Disallow: / 又は Allow: /
複数のユーザーエージェントに対して設定する場合、ひとまとめにせず必ず個別に書く決まりがあります。
但し、全体を指定する場合はアスタリスク(*)を使用し一括指定可能。

例:全てのディレクトリで特定のファイル形式(例ではjpeg)を拒否する場合
Disallow: /*.jpeg$

*この場合、ユーザーエージェントとはクローラーを指します。
*全ての文字は半角英数字を用いること。

末尾のスラッシュによる違い

Disallow: /members の場合(末尾のスラッシュ:無)
/members/index.html 及び /members.html を拒否

Disallow: /members/ の場合(末尾のスラッシュ:有)
/members/index.html を拒否 /members.html は許可

〔空白行〕

一まとめの記述の中に空白行を入れることは出来ません。
複数のユーザーエージェントを区切る時に空白行を使います。

〔単語の意味〕

*(アスタリスク)は「ワイルドカード」として全てを含むという意味に使う。
index:登録を許可
noindex:登録を拒否
follow:そのページにあるハイパーリンクを辿る事を許可。

インデックスとキャッシュは違う

ASY!インデックス(index)とキャッシュ(cache)の違いを理解し混同しないように。簡単に言うとインデックスされると検索にかかる。キャッシュされるとページデータが記録されて後からでも表示可能に。 なお、現在はほぼ同時に処理されているようです。

毎日更新するニュースサイトやブログではキャッシュが邪魔かもしれないので、キャッシュだけを拒否する noarchive 設定をメタタグに使うと良い。

ASY!グーグルとMSN(Liveサーチを含む)では検索結果にDMOZというディレクトリの表示が流用される場合があります。これを拒否して別の結果を表示させるための記述を紹介しましょう。

<META NAME="ROBOTS" CONTENT="NOODP">

(DMOZについての情報は 必読の定番情報サイト集にあります)

robots.txtの要点

ASY!検索エンジンのクローラーがウェブサイトへやってきたら一番最初にrobots.txtを探す決まりがあります。そしてrobots.txtは必ずこの名前で、半角小文字でなけらばならず、間違えたらクローラーに無視されます。

ポイントrobots.txtの置き場所はドメインのトップディレクトリだけ!
例:http://www.hogehoge.jp/ や http://abc.hogehoge.jp/
もし貴方のサイトのURIがhttp://www.hogehoge.com/user/の形式だったら、残念ですがrobots.txtを設置する事は出来ません。(T_T)

ASY!User-agent(ユーザーエージェント)にはGooglebot(グーグルボット)のように名前を指定する事もアスタリスク(*)で全部のクローラーを含めることも出来ます。

  あるファイルだけ見られたくない場合、Disallow: /images/ファイル名のようにファイル名を直接指定することでクローラーを回避できます。 これは画像でもMP3でもOK。簡単で実用的なのはディレクトリごとDisallowにする方法。これだと「画像フォルダーの中全部」のようにまとめて拒否できます。

外からrobots.txtが見えちゃうんですが

ASY!robots.txtは外部からブラウザで見る事ができます。これでは何を隠したいのかは一目瞭然ですね。

フォルダを検索エンジンから隠す方法もし、隠したいフォルダがあったらダミーの上位フォルダを入れてDisallowにしてみて下さい。

そうすると外部からは上位フォルダの名前しか分らなくなります。書式は、Disallow: /ダミーフォルダ名

隠したいフォルダーやファイルを直接指定するより、図のように上位フォルダーをDisallowにする方が「何があるか分らない」という意味で高セキュリティーです。

robots.txt書式例

ASY!検索エンジンのロボット制御書式の取り決めは言わば紳士協定、皆さんが知っているような有名検索エンジンなら大丈夫でもルール無用のアウトローには全然効果が無い。「robots.txtは検索結果を良好に整えるため」位に考えておこう。

ASY!本当に見られたくない物があるんだったら.htaccessでディレクトリに入れなくするとかパーミッションを外部からの閲覧不可にするとかプログラムで制御するとかの方法でアクセス制限を掛けることを検討して下さい。

SEOの範疇から離れるので、悪意のあるアクセスを拒否する設定についてはASY!では解説していません。もし調べたいのならウェブや書籍でApachとかIISとかのWWWサーバー解説を参照してみて下さい。

【Sitemaps.org形式のXMLサイトマップを認識させる記述】

2008年4月から使えるようになった方法で、クローラーが定期訪問するような既存サイトに特に有効な方法。

書式:Sitemap:サイトマップのURI
例:Sitemap: http://dokodemo.rankuappu.com/sitemap.xml

【Googleイメージ検索からイメージを削除する方法】

images/dogs.jpgのみ削除する場合
User-agent: Googlebot-Image
Disallow: /images/dogs.jpg

全ての画像を削除する場合
User-agent: Googlebot-Image
Disallow: /

GIF画像のみを削除する場合
User-agent: Googlebot-Image
Disallow: /*.gif$

Googleイメージ検索は前もってインデックス(キャッシュ)された画像のサムネイル(縮小画像)が検索結果として表示される仕組み。画像が沢山見つけられて便利だけれども、ひょっとして見られたくない画像まで表示されてしまうかもしれない。

【Yahooイメージ検索からイメージを削除する方法】

images/dogs.jpgのみ削除する場合
User-agent: Yahoo-MMCrawler
Disallow: /images/dogs.jpg

全ての画像を削除する場合
User-agent: Yahoo-MMCrawler

Disallow: /GIF画像のみを削除する場合
User-agent: Yahoo-MMCrawler
Disallow: /*.gif$

Yahooへ行ってみるとイメージ検索がある。

ここで使われるデータはYahoo-MMCrawlerで収集されているので、その制御を行う事でキャッシュされないように出来る。

【MSN picsearchからイメージを削除する方法】

images/dogs.jpgのみ削除する場合
User-agent: psbot
Disallow: /images/dogs.jpg

全ての画像を削除する場合
User-agent: psbot
Disallow: /

GIF画像のみを削除する場合
User-agent: psbot
Disallow: /*.gif$

MSNには別サイトで運営するイメージ検索のpicsearchがあり、GoogleやYahoo同様の機能を提供している。

〔空のrobots.txt〕

robots.txtはクローラーを制御するものなので中身が空では意味が無い感じですね。でも空のrobots.txtはindex,followと同じ意味を持つのです。
 Googleサイトマップでrobots.txtを要求されたけど、どんなものにすればいいか分らない方。空のファイルを作って対処しましょう。

〔全てを許可〕

元々許可されているものを改めて許可する必要はありません。通常は意味が無いので使わないが、何らかの理由でどうしても取り付けたい場合の記述。

User-agent: *
Disallow:

Disallow: じゃ拒否になるんじゃないかと思う人が居るけれども、Disallow: の後が無指定なので「拒否するものは無い」が正解。外人が開発したから文法が違うんだと納得して下さい。(*^_^*)

〔全てのクローラーで特定ディレクトリを拒否〕

User-agent: *
Disallow: /cgi-bin/
Disallow: /images/

〔全てのクローラーで特定ファイル形式を拒否〕

User-agent: *
Disallow: /*.jpg
Disallow: /*.jpeg

〔全てのクローラーで全てを拒否〕

User-agent: *
Disallow: /

〔複数のイメージ検索クローラーを拒否〕 (複数入れるには空白行を挟むこと)

User-Agent: Googlebot-Mobile
Disallow: /

User-Agent: Yahoo-MMCrawler
Disallow: /

User-Agent: psbot
Disallow: /

〔Googleを拒否Googleモバイルを許可〕

User-Agent: Googlebot
Disallow: /

User-Agent: Googlebot-Mobile
Allow:

〔Crawl-delay〕

検索エンジンのクローラーがひんぱんにアクセスしてきてサーバーに負荷がかかって困ったらrobots.txtにこう書いておくといい。

User-agent: ロボットの名前
Crawl-delay: 秒数

User-agentはロボットの名前。Crawl-delayはクロール間隔を秒で表している。5秒から120秒位がいいみたいですよ。

参考文献:robots.txtの書式はW3C Search robotsrobotstxt.orgにあります。(英語)

PS:心配している人が居るかもしれないので一応言っておくけど、robots.txtやメタタグでクローラーを拒否しても検索エンジンからのペナルティーは全くありません。

SEOスクールrobots.txtの正確な書式 おわり。 次は ロボット対策、メタタグの正確な書式 です。