robots.txt の書き方、設定と送信

robots.txt ファイルは、クローラーにサイトのどのファイルへのアクセスを許可するか、管理できるファイルです。

robots.txt ファイルはサイトのルートにあります。つまり、www.example.com というサイトであれば、robots.txt ファイルの URL は www.example.com/robots.txt になります。robots.txt は、Robots Exclusion Standard に準拠した書式なしテキスト ファイルです。robots.txt ファイルは 1 つだけでなく、複数のルールを管理できます。各ルールは、すべてまたは特定のクローラーに対して、robots.txt ファイルがホストされているドメインまたはサブドメイン上の特定のファイルパスへのアクセスをブロックまたは許可します。robots.txt ファイルで特に指定しない限り、ファイルはすべて暗黙的にクロールが許可されます。

2 つのルールを含む簡単な robots.txt ファイルの例を以下に示します。

User-agent: Googlebot
Disallow: /nogooglebot/

User-agent: *
Allow: /

Sitemap: https://www.example.com/sitemap.xml

この robots.txt ファイルの説明:

  1. Googlebot という名前のユーザー エージェントには、https://example.com/nogooglebot/ で始まるいかなる URL のクロールも許可していません。
  2. 他のすべてのユーザー エージェントには、サイト全体のクロールを許可しています。このルールは記載していなくても同じ結果になります。デフォルトの動作として、すべてのユーザー エージェントはサイト全体のクロールを許可されているためです。
  3. サイトのサイトマップ ファイルhttps://www.example.com/sitemap.xml にあります。

詳細な例については、構文をご覧ください。

robots.txt ファイルを作成する際の基本的なガイドライン

robots.txt ファイルを作成して一般に公開し、正しく機能させるためには、次の 4 ステップを行います。

  1. robots.txt という名前のテキスト ファイルを作成します
  2. robots.txt ファイルにルールを記載します
  3. サイトのルートに robots.txt ファイルをアップロードします
  4. robots.txt ファイルをテストします

robots.txt ファイルを作成する

robots.txt ファイルの作成には、ほぼあらゆるテキスト エディタを使用できます。たとえば、メモ帳、テキストエディット(TextEdit)、vi、Emacs を使用して、有効な robots.txt ファイルを作成できます。ワープロソフトは使用しないでください。ワープロソフトは独自の形式でファイルを保存することが多く、カーリー クォートのような想定外の文字を追加することもあるため、クローラーの動作に問題を引き起こす可能性があります。ファイルを保存する際にダイアログで選択を求められたら、必ず UTF-8 エンコードを指定します。

ファイル形式と場所に関するルール:

  • ファイル名は「robots.txt」にする必要があります。
  • 各サイトに配置できる robots.txt ファイルは 1 つだけです。
  • robots.txt ファイルは、適用するサイトホストのルートに配置する必要があります。たとえば、https://www.example.com/ の下にあるすべての URL に対するクロールを制御するには、robots.txt ファイルの場所を https://www.example.com/robots.txt としなければなりません。サブディレクトリには配置できません(例: https://example.com/pages/robots.txt)。サイトのルートへのアクセス方法が不明な場合やアクセス権限が必要な場合は、ご利用のウェブ ホスティング サービス プロバイダにお問い合わせください。サイトのルートにアクセスできない場合は、meta タグなど、別のブロック方法を使用してください。
  • robots.txt ファイルは、サブドメイン(https://site.example.com/robots.txt など)や標準以外のポート(https://example.com:8181/robots.txt など)にも配置できます。
  • robots.txt ファイルは、投稿したプロトコル、ホスト、ポート内のパスにのみ適用されます。つまり、https://example.com/robots.txt のルールは https://example.com/ 内のファイルにのみ適用され、https://m.example.com/ などのサブドメインや http://example.com/ などの代替プロトコルには適用されません。
  • robots.txt ファイルは、UTF-8 でエンコードされたテキスト ファイルにする必要があります(ASCII を含む)。Google は UTF-8 範囲外の文字を無視する場合があり、その結果、robots.txt ルールを無効と解釈する可能性があります。

robots.txt のルールを記述する方法

ルールとは、クローラーに対して、サイト内のクロールを許可する部分を指示するものです。robots.txt ファイルにルールを追加する際には、以下のガイドラインを遵守します。

  • robots.txt ファイルは 1 つ以上のグループ(ルールのセット)で構成します。
  • 各グループは複数のルール(ディレクティブ)で構成します。1 行につき 1 つのルールを指定できます。各グループの最初に、グループの適用対象を指定する User-agent 行を含めます。
  • グループには次の情報を指定します。
    • グループを適用する対象(ユーザー エージェント)
    • そのエージェントによるアクセスを許可するディレクトリやファイル
    • そのエージェントによるアクセスを許可しないディレクトリやファイル
  • クローラーは上から下に順番にグループを処理します。1 つのユーザー エージェントには、そのユーザー エージェントが最初に一致する最も限定的なグループ(ルールセット)1 つのみが適用されます。同じユーザー エージェントに複数のグループが一致する場合、一致したグループは、処理前に 1 つのグループに統合されます。
  • デフォルトの場合、ユーザー エージェントは disallow ルールでブロックされていないページやディレクトリはすべてクロール可能と解釈します。
  • ルールでは大文字と小文字が区別されます。たとえば、disallow: /file.asphttps://www.example.com/file.asp に適用されますが、https://www.example.com/FILE.asp には適用されません。
  • コメントの先頭には # 文字を付けます。コメントは、処理中は無視されます。

Google のクローラーは、robots.txt ファイルの次のルールをサポートしています。

  • user-agent: [必須。グループごとに 1 つまたは複数] 検索エンジン クローラーとして知られている、ルールの適用対象となる自動クライアントの名前を指定したルール。これが、すべてのルールの最初の行になります。Google のユーザー エージェントの名前は Google のユーザー エージェント一覧に掲載されています。アスタリスク(*)は、各種の AdsBot クローラーを除く、すべてのクローラーに一致します。AdsBot クローラーは明示的に指定する必要があります。次に例を示します。
    # Example 1: Block only Googlebot
    User-agent: Googlebot
    Disallow: /
    
    # Example 2: Block Googlebot and Adsbot
    User-agent: Googlebot
    User-agent: AdsBot-Google
    Disallow: /
    
    # Example 3: Block all crawlers except AdsBot (AdsBot crawlers must be named explicitly)
    User-agent: *
    Disallow: /
  • disallow: [ルールごとに disallow または allow のいずれかが少なくとも 1 つ必要] ユーザー エージェントによるクロールを禁止するディレクトリまたはページ(ルートドメインの相対 URL)。ルールの対象がページの場合は、ブラウザに表示される完全なページ名にする必要があります。先頭は / 文字にする必要があります。対象がディレクトリの場合は、末尾を / にします。
  • allow: [ルールごとに disallow または allow のいずれかが少なくとも 1 つ必要] 指定されたユーザー エージェントによるクロールを許可するディレクトリまたはページ(ルートドメインの相対 URL)。disallow ルールの指定をオーバーライドし、許可されていないディレクトリ内のサブディレクトリやページのクロールを許可するために使用します。単一ページの場合は、ブラウザで表示される完全なページ名を指定します。先頭は / 文字にする必要があります。対象がディレクトリの場合は、末尾を / にします。
  • sitemap: [省略可。ファイルごとにゼロ個以上] 対象サイトのサイトマップがある場所。完全修飾 URL であることが必要です。Google は代替 URL(http か https か、www があるかないか)を考慮またはチェックしません。サイトマップは、Google にクロールを許可するコンテンツや許可しないコンテンツではなく、クロールしてほしいコンテンツを指定するのに適した手段です。サイトマップの詳細についてご確認ください。次に例を示します。
    Sitemap: https://example.com/sitemap.xml
    Sitemap: https://www.example.com/sitemap.xml

sitemap を除くすべてのルールでは、パスのプレフィックス、サフィックス、または文字列全体について、* ワイルドカードを使用できます。

上記のルールに一致しない行は無視されます。

各ルールの詳細については、Google による robots.txt の指定の解釈をご覧ください。

robots.txt ファイルをアップロードする

robots.txt ファイルをパソコンに保存したら、それを検索エンジンのクローラーが使用できるようにします。robots.txt ファイルをサイトにアップロードする方法は、サイトやサーバーのアーキテクチャによって異なるため、どのような場合にも使用できるようなツールは存在しません。ご使用のホスティング事業者に問い合わせるか、ホスティング事業者のドキュメントを検索します(例: 「アップロード ファイル infomaniak」)。

robots.txt ファイルをアップロードしたら、ファイルが一般公開されていることと、Google がアクセスして各ルールを認識できることをテストします。

robots.txt のマークアップをテストする

新たにアップロードした robots.txt ファイルが一般公開されているかどうかを確認するには、ブラウザでシークレット ブラウジング ウィンドウ(または同等のもの)を開き、robots.txt ファイルにアクセスします(例: https://example.com/robots.txt)。robots.txt ファイルの内容が表示されたら、次にマークアップをテストします。

Google は、robots.txt マークアップの問題の修正用に、次の 2 つの方法を用意しています。

  1. Search Console の robots.txt レポート。このレポートは、サイト上ですでにアクセス可能になっている robots.txt ファイルに対してのみ使用できます。
  2. デベロッパーの方は、Google 検索でも使用されている、Google のオープンソースの robots.txt ライブラリをご確認のうえご利用ください。このツールを使用すると、robots.txt ファイルをパソコン上でローカルにテストできます。

robots.txt ファイルを Google に送信する

robots.txt ファイルをアップロードしてテストしたら、その後は Google のクローラーが自動的に検出して使用を開始します。何もする必要はありません。robots.txt ファイルの更新後、できるだけ早く Google にキャッシュされた robots.txt ファイルを更新する必要がある場合は、更新した robots.txt を送信する方法をご確認ください。

実用的な robots.txt のルール

一般的に役に立つ robots.txt のルールは次のとおりです。

実用的なルール
サイト全体でクロールを禁止する

注意点として、クロールされていなくてもサイトの URL がインデックスに登録される場合があります。

User-agent: *
Disallow: /
ディレクトリとその内容のクロールを禁止する

ディレクトリ全体のクロールを禁止するには、ディレクトリ名の後にスラッシュを付けます。

User-agent: *
Disallow: /calendar/
Disallow: /junk/
Disallow: /books/fiction/contemporary/
1 つのクローラーに対してのみアクセスを許可する

次の例では、googlebot-news のみがサイト全体をクロールできます。

User-agent: Googlebot-news
Allow: /

User-agent: *
Disallow: /
特定の 1 クローラーを除くすべてのクローラーに対してアクセスを許可する

次の例では、Unnecessarybot はサイトをクロールできず、その他の bot はすべてできます。

User-agent: Unnecessarybot
Disallow: /

User-agent: *
Allow: /

1 つのウェブページのみクロールを禁止する

次の例では、https://example.com/useless_file.html にある useless_file.html ページと、junk ディレクトリ内の other_useless_file.html を禁止しています。

User-agent: *
Disallow: /useless_file.html
Disallow: /junk/other_useless_file.html

1 つのサブディレクトリを除いてサイト全体のクロールを禁止する

クローラーは public サブディレクトリにのみアクセスできます。

User-agent: *
Disallow: /
Allow: /public/

特定の画像を Google 画像検索からブロックする

次の例では、dogs.jpg という画像のクロールを禁止しています。

User-agent: Googlebot-Image
Disallow: /images/dogs.jpg

サイト上のすべての画像を Google 画像検索からブロックする

Google は、クロールすることなく画像や動画をインデックスに登録できません。

User-agent: Googlebot-Image
Disallow: /

特定のファイル形式のファイルに対するクロールを禁止する

次の例では、すべての .gif ファイルのクロールを禁止しています。

User-agent: Googlebot
Disallow: /*.gif$

Mediapartners-Google 以外によるサイト全体のクロールを禁止する

次の例では、ページは検索結果に表示されなくなりますが、Mediapartners-Google ウェブ クローラーは引き続きページを分析して、サイト訪問者に表示する広告を決定できます。

User-agent: *
Disallow: /

User-agent: Mediapartners-Google
Allow: /
ワイルドカードとして *$ を使用すると、特定の文字列で終わる URL を一致させることができます。

次の例では、すべての .xls ファイルのクロールを禁止しています。

User-agent: Googlebot
Disallow: /*.xls$