図書館員のコンピュータ基礎講座

ロボット排除

【2005-04-10更新】

ロボットまたはクローラー(Crawler)と呼ばれるプログラムは、Webページに記述されているリンクを辿ってサイトを巡回し、自動的にサイト上の文書や画像などを収集、インデキシングしています。Webサーバの管理者やWebサイトの運営者は、自分たちが管理・運営するWebページをWeb検索エンジンに登録されたくない場合などに、ロボットを排除する設定を行うことができます。
現時点では、ロボット排除(Robot Exclusion)に関する公的な標準規格はありません。W3Cが発行しているHTMLの仕様書にはロボット制御の方法に関する記述外部へのリンクはありますが、詳細な仕様とはなっていません。robotstxt.org外部へのリンクというサイトで示されている定義がデファクト・スタンダード(事実上の標準)になっており、世界中のほとんどのロボットがこの定義に従って行動しています。

robots.txt

ロボットがサイトを訪問すると、「robots.txt」というファイルを最初にチェックします。このファイルが存在すれば、その記述に従った行動をします。
このファイルはHTTPサーバの最上階層のディレクトリ(ルート・ディレクトリ)に置く必要があります。したがって、自分がWebサーバを管理していない場合には、サーバの管理者にお願いして置いてもらう必要があります。
例えば、私は「http://www.asahi-net.or.jp/」というサーバの「~ax2s-kmtn」という名称のディレクトリ「http://www.asahi-net.or.jp/~ax2s-kmtn/」以下でWebサイトを運営しており、その領域内へのアクセス権限は持っていますが、同サーバのその他の領域に対するアクセス権限を持っていません。そのため、「robots.txt」をWebサーバのルート・ディレクトリに「http://www.asahi-net.or.jp/robots.txt」のように置くことはできず、サーバの管理者である「ASAHIネット」にお願いして置いてもらう必要があります。

記述規則

  • 「robots.txt」というファイル名は、全て半角小文字で記述する必要があります。
  • レコードの各行は「<フィールド名>:<空白><値><空白>」(空白の有無は任意)という形式で記述します。
  • フィールド名として「User-agent」と「Disallow」が定義されています。
  • 1組のレコードは、「User-agent」ではじまる条件文(1行のみ記述可)に続いて「Disallow」ではじまる条件文(繰り返して複数行記述可)を記述します。
  • 複数組のレコードは空白行で区切って記述します。そのため、1組のレコード内は空白行で区切ってはいけません。
  • #に続けて注記等を記述することが可能です。
フィールド名 定義
User-agent このフィールドの値には、対象となるロボット名を記述します。
値としてアスタリスク(*)を記述すると、全てのロボットを対象とします。
Disallow このフィールドの値には、ロボットに訪問させたくないURLを記述します。記述した値で始まるURLが対象となります。
値はフルパス名でも部分パス名でもかまいません。例えば「Disallow: /search」と記述すると「/search.html」や「/search/index.html」などを排除しますが、「Disallow: /search/」と最後にスラッシュを付けて記述すると「/search/index.html」は排除しますが「/search.html」は排除しません。
値を記述せずに「Disallow:」のみを記述した場合は、全てのURLに対して訪問を許します。

記述例

  1. 全てのロボットがサイト全体を訪問するようにしたい場合

    User-agent: *
    Disallow:

    ※または、「robots.txt」ファイルを作成しない。

  2. 全てのロボットがサイト全体を訪問しないようにしたい場合

    User-agent: *
    Disallow: /

  3. 全てのロボットが「/internet/」や「/av.html」で始まるURLを訪問しないようにしたい場合

    User-agent: *
    Disallow: /internet/
    Disallow: /av.html

  4. Googleのロボット「Googlebot」がサイト全体を訪問しないようにしたい場合

    User-agent: Googlebot
    Disallow: /

  5. Googleのロボットのみがサイト全体を訪問するようにしたい場合

    User-agent: *
    Disallow: /
    User-agent: Googlebot
    Disallow:

    ※第1レコード(最初の2行)で全てのロボットがサイト全体を訪問しないように記述し、空白1行に続いて、第2レコード(次の2行)で「Googlebot」がサイト全体を訪問するように記述するという、2組のレコードの組合せで定義します。

メタタグ

「robots.txt」をWebサーバのルート・ディレクトリに置けない場合は、必要な全てのHTMLにメタタグを記述することでロボットを制御することができます。

記述規則

  • 下記のように、<head>~</head>内に記述します。

    <head>
    <meta name="robots" content="index,follow">
    <title>・・・</title>
    </head>

  • 「name」属性の値は「robots」と記述します。
  • 「content」属性の値として「index」「noindex」「follow」「nofollow」「all」「none」が定義されており、複数の値をコンマ(,)で区切って記述することができます。
  • デフォルト(記述しない場合)は、「index,follow」(つまり、「all」)を意味します。
  • 「name」や「content」の値は、大文字で記述しても小文字で記述しても構いません。
定義
index ページの情報をインデキシング(登録)することを許す。
noindex ページの情報をインデキシングすることを許さない。
follow そのページに記述されているリンクを辿る(追跡する)ことを許す。
nofollow そのページに記述されているリンクを辿ることを許さない。
all ページの情報をインデキシングし、そのページに記述されているリンクを辿ることを許す(つまり、「index,follow」)。
none ページの情報をインデキシングすることも、そのページに記述されているリンクを辿ることも許さない(つまり、「noindex,nofollow」)。

記述例

  1. ページの情報をインデキシングさせ、リンクを辿らせたい場合

    <meta name="robots" content="index,follow">

    または、

    <meta name="robots" content="all">

    または、メタデータを記述しない。

  2. ページの情報をインデキシングさせたいが、リンクを辿らせたくない場合

    <meta name="robots" content="index,nofollow">

  3. ページの情報はインデキシングさせたくないが、リンクは辿らせたい場合

    <meta name="robots" content="noindex,follow">

  4. ページの情報のインデキシングもリンクを辿ることも許したくない場合

    <meta name="robots" content="noindex,nofollow">

    または、

    <meta name="robots" content="none">

※「robots.txt」には従ってもメタタグには従わないロボットが存在しています。

ポイント
ロボットによっては、下記のような値を定義しているものもあります。

  • 「contents="noarchive"」と記述すると、検索エンジンの検索結果に表示されるキャッシュへの登録を許さない。

    <meta name="robots" content="noarchive">

  • 「name」属性にロボット名を指定して特定のロボットを制御する。

    <meta name="Googlebot" content="noarchive">

参照・参考文献
ページのトップへ
CyberLibrarian : tips on computer for librarians, 1998-