テクニカルSEO BLOG
テクニカルSEOを中心にSEO対策をまとめています

robots.txtの書き方

こんにちは、テクニカルSEO対策サービス「CLUSTER SEO」開発チームの伏見です。

robots.txt とは、クローラのサイト巡回を制御するためのファイルです。XMLサイトマップと同じように、robots.txt もクローラビリティに大きく影響します。特に、クローリングされるページ数が多いECサイトなどでは、robots.txt を慎重に設定したほうがよいでしょう。

この記事では、robots.txt の書き方や設置方法、設定の確認方法、よくある誤りなどを詳しく紹介します。

目次

robots.txtとは

robots.txt とは、検索エンジンのクローラーに対し、サイトの巡回を制御するためのファイルです。具体的には、以下の2つの役割があります。

  1. クローラーに巡回を許可するURLや拒否するURLを伝える
  2. サイトマップファイルのURLを伝える

GoogleやBingなど主なクローラーがrobots.txtに対応しています。

robots.txtのSEO上の効果

Google 公式の Search Console ヘルプでは、robots.txt の利用法について以下のように説明しています。

ウェブページ(HTML や PDF、Google が認識可能なメディア以外の形式)では、Google のクローラによるリクエストによってサーバーに大きな負荷がかかっていると思われる場合に、robots.txt を使用して、クロール トラフィックを管理できます。また、サイト上の重要でないページや類似したページのクロールを回避するためにも、robots.txt を使用できます。

robots.txt の概要 – Search Console ヘルプ

1つ目に「サーバーに大きな負荷がかかっている場合にトラフィックを管理できます」とありますが、これはサーバーやネットワークの負荷を下げる効果を狙ったものなので、SEO 上の直接的な効果はありません。

2つ目に「重要でないページや類似したページのクロールを回避できます」とありますが、これはクローリング対象のURLを減らすことで、より重要度の高いページが優先的にクローリングされる効果を狙ったものです。検索結果への反映を早めることができるので、SEO 上は「掲載順位への反映が早くなる」効果があるといえます。この役割で言うと、サイトマップも同じですね。

なお、robots.txtの書き方を間違えた場合は「検索結果に一切表示されなくなる」などの悪影響もあります(後述)。robots.txtを作成する場合には、書き方を間違えないよう、慎重に確認しましょう。

robots.txtの最適化によるSEO対策

robots.txtはクローラーの巡回を制御する方法の1つで、SEO対策の一環です。WebサイトのURL構成に合わせ、最適な robots.txt を設定しましょう。

もし、robots.txt の設定やクローラーの巡回にお困りなら、弊社でもお手伝い可能です。

SEO対策サービス「クラスターSEO」では、SEO対策の一環として、robots.txtのコンサルティングや実作業も実施しています。

このほか、Googleのクローリングと検索インデックスを最適化するためのXMLサイトマップ内部リンクの設置、canonicalタグによるURL正規化など、サイトの規模やコンテンツに応じて個別に対応いたします。

BtoBサイトやECサイトにも対応できます。

テクニカルSEO対策サービス「クラスターSEO」

robots.txtによるサーバー負荷の低減

robots.txt によって、クローラからのアクセスによるサーバー負荷を軽減できます。しかしながら、巡回を拒否しすぎてしまうと、SEOへの影響があります。

サーバー負荷を軽減でき、しかも検索エンジンのインデックスへの影響が少ないURLとは以下のようなものになります。

重要度の低い検索結果URL

EC サイトにある商品検索ページで、例えば「10,000円以内のピンク色の加湿器で、評価が3.5以上」のような複雑な条件になる場合、そのページを検索エンジンのインデックスに登録する必要性は低いでしょう。また、検索結果ページへクローラから次々にアクセスされると、ECサイト側の負荷も高くなります。

サーバー側の負荷が高く、かつインデックス登録の必要もないページは、巡回拒否の対象になります。

動画やサイズが巨大なメディアファイル

巨大なファイルがクローリングされると、サーバーやネットワークの負荷が増大します。メディアファイルのファイルサイズが非常に大きいときや、ファイル数が多いときは、巡回を拒否した方がよいでしょう。

なお、SEO の観点ではありませんが、ネットワーク転送量に応じて課金されるクラウドサービスを利用している場合、クローラからの巡回を拒否することによるコスト削減効果もあります。

ログインが必要なURL

会員向けページなどログインが必要なページは、そもそもクローリングできず、サーバー側でエラー検知されることもあるので、robots.txt で拒否したほうがよいでしょう。

robots.txt の書式

robots.txt は次のような書式のテキストファイルです。

User-agent: *
Disallow: /admin/
Allow: /admin/images/

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

robots.txt は「メモ帳」や「サクラエディタ」などのテキストエディタで作成できます。

解説付きサンプル一式ダウンロード(989KB)

それぞれの項目について、説明していきます。

User-agent

必須項目です。Allow/Disallowルールの対象とするクローラのUser-Agentを指定します。

User-agent: *」を指定すると、全てのクローラが対象としたルールが記述できます。ほとんどのサイトでは「User-agent: *」で十分でしょう。

特定のクローラ向けに設定する場合は、User-agent を指定します。

記述例説明
User-agent: * すべてのクローラを対象とします
User-agent: GooglebotGoogle検索のクローラを対象とします
User-agent: bingbotBing検索のクローラを対象します
User-agent: baidu百度(バイドゥ)のクローラを対象とします

その他のUser-Agentは、以下を参考にしてください。

Disallow

Disallowでは、巡回を拒否するページの「URLパス」もしくは「URLパスの先頭部分」を指定します。

なお、robots.txtのデフォルトでは全URL「許可」なので、DisallowルールにマッチしないURLは「許可」されます。

記述例説明
Disallow: / すべてのURLを拒否します
Disallow: /mypage/ /mypage/ ディレクトリ以下のURLを拒否し、それ以外を許可します
Disallow: /movie/clusterseo.mp4 /movie/clusterseo.mp4 から始まるURLを拒否し、それ以外を許可します

なお、Disallowでは正規表現(後述)を使うことで、より複雑な条件でURLを指定できます。

Allow

Allowは、巡回を許可するページの「URLパス」もしくは「URLパスの先頭部分」を指定します。

robots.txtでは、何もルールを指定しない場合は全URL「許可」なので、Allowを使うケースは多くありません。唯一、指定するケースとしては、Disallow拒否した URL パスの一部を許可するときです。

記述例説明
Disallow: /
Allow: /public/
全URL拒否するが、/public/ディレクトリ以下だけは許可する

■許可されるURLパスの例
/public/
/public/index.html
/public/img/logo.svg

■拒否されるURLパスの例
/
/index.html
/news/
Disallow: /video/
Allow: /video/short.webm
/video/short.webmを除き、/video/ディレクトリは拒否する。それ以外は許可する。

■許可されるURLパスの例
/
/index.html
/news/
/video/short.webm

■拒否されるURLパスの例
/video/
/video/foo.webm

Sitemap

省略可能な項目です。robots.txtでサイトマップを指定するときに使用します。この項目は、完全修飾 URL で指定します。

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

完全修飾 URL とは “https://example.com/sitemap.xml”のように、スキーム名+ホスト名+ドメイン名+ファイルパスで書かれたURLのことです。

また、Sitemap はrobots.txt内に複数指定できます。ディレクトリごとにサイトマップが分かれている場合に使えます。

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

なお、robots.txt でサイトマップを指定しないときは、サーチコンソールでサイトマップを登録します。Google クローラは、robots.txtのSitemapと、サーチコンソールで設定したサイトマップの両方をチェックしているので、どちらかを設定しましょう。

SEOチェックリストのダウンロード

robots.txtで使える正規表現

AllowDisallowで指定するURLパスには、以下2つの正規表現が使えます。

  • *:0文字以上の任意の文字列にマッチする
  • $:URLパスの末尾にマッチする

ワイルドカード「*」は、拡張子やクエリーパラメータを指定するときに便利です。

記述例説明
Disallow: /*.mp4 ファイル拡張子がmp4のURLをすべて拒否し、それ以外を許可します

■許可されるURLパスの例
/clusterseo.webm
/media/clusterseo.webm

■拒否されるURLパスの例
/clusterseo.mp4
/media/clusterseo.mp4
Disallow: /search/*?from= URLパスが /search/ から始まり、クエリー文字列が”from=”から始まるURLを拒否し、それ以外を許可します

■許可されるURLパスの例
/search/
/search/?q=seo
/search/item
/search/item?q=seo

■拒否されるURLパスの例
/search/?from=top
/search/item?from=top

$」は、完全に一致するURLパスを指定するときに使います。

記述例説明
Disallow: /campaign/$ /campaign/ に完全に一致するURLのみを拒否し、それ以外を許可します

■許可されるURLパスの例
/
/campaign/?from=top
/campaign/index.html
/campaign/img/

■拒否されるURLパスの例
/campaign/

robots.txtの記述例

robots.txtの解説付きサンプルをダウンロードできます。サーバーにアップロードするだけで使えるrobots.txtを用意しています。

サンプル一式ダウンロード(989KB)

全URLへのクロールを許可する

クロールを拒否するURLが存在しないときのrobots.txtの書き方は以下です。ほとんどのサイトはこれで大丈夫です。

User-agent: *
Allow: /

特定のクエリーパラメータが含まれるURLを拒否する

クエリーパラメータ”from”が含まれているURLをすべて拒否する場合のrobots.txtの書き方は以下です。

User-agent: *
Disallow: /*?from=
Disallow: /*?*&from=

動画ファイルを拒否する

拡張子.webm .mp4 .wmv のファイルを拒否する場合のrobots.txtの書き方は以下です。

User-agent: *
Disallow: /*.webm
Disallow: /*.mp4
Disallow: /*.wmv

Bingbotのみ全URL拒否する

Bingbotからのアクセスが非常に多い場合など、特定のクローラ向けに巡回を拒否する場合のrobots.txtの書き方は以下です。

User-agent: bingbot
Disallow: /

大手サイトのrobots.txt

大手サイトの robots.txt の書き方は実に参考になります。ぜひ覗いてみてください。

robots.txtの設置方法

robots.txtを用意出来たら、サイトに設置しましょう。

ファイル名は「robots.txt」と設定してください。それ以外のファイル名にするとクローラに上手く読み込んでもらえません。

また、設置する場所はサイトのルートディレクトリのみです。ルートディレクトリ以外の robots.txt は無視されるので注意してください。

正しい例: https://example.com/robots.txt
ダメな例: https://example.com/blog/robots.txt

なお、http用のrobots.txtはHTTPページのTOPに、https用のrobots.txtはHTTPSページのルートに設置します。

http用: http://example.com/robots.txt
https用: https://example.com/robots.txt

robots.txt が404エラーになるときは?

robots.txt がないサイトは、「全URLへのクローリングを許可」しているものとみなされます。

robots.txt の設置を忘れたからと言って、検索結果に出てこないというような問題は起きません。

また、robots.txtが403エラーになるときも動作は同じで、「全URLへのクローリングを許可」しているものとみなされます。

WordPressでrobots.txtを指定する方法

WordPress標準のrobots.txt

WordPressは、プラグインを使わずともrobots.txtに対応しています。

WordPress標準のrobots.txtでは、次のように管理ツールのクロールを拒否する設定がされています。

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

robots.txtに上記以外のルールを追加するには、プラグイン か functions.php で対応します。

All in One SEO Packのrobots.txt設定を変更

WordPressプラグイン「All in One SEO Pack」を使うと、robots.txtに次のルールを追加できます。

  • サイトマップの追加(All in One SEO Pack が生成するXMLサイトマップ)
  • クロールを拒否/許可するパスの追加

クロールを拒否/許可するパスを追加するには、機能管理で [Robots.txt] を有効にしたあと、Robots.txtメニューで設定します。

All in One SEO Packのrobots.txt設定

ユーザーエージェント(例:*)と、ルール(許可する or 許可しない)、ディレクトリパス(例:/backup/)を指定し、[ルールを作成]をクリックするだけです。

All in One SEO Packのrobots.txtルール追加

robots.txtの内容も、画面上から即座に確認できます。

robots.txtプレビュー

functions.phpを編集する場合

プラグインを使用せずに robots.txt を変更するときは、functions.phpを変更します。

たとえば、WordPress標準の robots.txt に Disallowルールと、Sitemapを追加するときは、次のようなコードを追加します。

add_filter('robots_txt', "my_robots_txt_func", 10, 2);

function my_robots_txt_func( $output, $public) {
    $output .= "\r\n";
    $output .= "User-agent: *\r\n";
    $output .= "Disallow: /foo/\r\n";
    $output .= "\r\n";
    $output .= "Sitemap: https://cluster-seo.com/sitemap.xml\r\n";
    return $output;
}    

robots.txtの確認方法

robots.txtの設置が完了したら、動作を確認しましょう。

ブラウザでrobots.txtを開く

まずは、ブラウザでサイトに設置したrobots.txtを表示できるか確認します。ブラウザにrobots.txtが表示されればOKです。

ブラウザでrobots.txtを表示する

robots.txt テスターを使う

robots.txtの設定ルールの確認には、Googleの「robots.txt テスター」が便利です。テストツールの利用には、サーチコンソールにアカウントが必要です。

robots.txt を検証するには、Googleサーチコンソールのプロパティを選択します。

選択可能なプロパティは、URLプレフィックス型のプロパティのみで、ドメイン型のプロパティは対象外です。URLプレフィックス型のプロパティを登録するには、Googleサーチコンソールの登録・設定方法を参照してください。

robots.txt テスター
  1. 公開済みの robots.txt の内容が表示されています。ファイルをアップロードしていない場合や、公開中の内容を変更して検証する場合は、内容を変更します。
  2. 「拒否」「許可」をチェックしたいURLパスを入力します。先頭の / は入力不要です。
  3. 「テスト」ボタンをクリックします。検証結果が表示されます。
robots.txtテスターでのルール検証

robots.txt テストツールでは、ドメインタイプのプロパティには対応していません。URLプレフィックスタイプのプロパティがなければ、Googleサーチコンソールでプロパティを追加してください。

robots.txt設定上の注意点

設定内容を事前に確認する

robots.txtの書き方を間違えると、クローラに巡回されるはずのページが取得されず、いつまでたっても、検索結果にサイトが表示されないという事態になります。SEOにとっては致命的です。それを防ぐためには、robots.txt の書式を正しく理解することと、必ず「robots.txtテストツール」を使って確認することの2点が大切です。

検索エンジンのインデックスは操作できない

robots.txtはクローラを制御するものであり、検索インデックスを制御するものではありません。たとえば、Disallowを指定しても、既にインデックスに登録されたコンテンツが削除されることはありません。検索結果に表示されたURLを削除するには、robots.txtではなく、Googleサーチコンソールの「URL削除ツール」を使ってください。

Disallowはインデックス登録を完全には阻止できない

robots.txtで、特定URLへの巡回を阻止できますが、それでもページがインデックス登録されることがあります。Googleによると、他サイトからの外部リンクがあると、インデックス登録されるとの言及があります。

クローラをブロックしているページでも他のサイトからリンクされていればインデックス登録が可能
Google では、robots.txt でブロックされているコンテンツをクロールしたりインデックスに登録したりすることはありませんが、ブロック対象の URL がウェブ上の他の場所からリンクされている場合、その URL を検出してインデックスに登録する可能性はあります。そのため、該当の URL アドレスや、場合によってはその他の公開情報(該当ページへのリンクのアンカー テキストなど)が、Google の検索結果に表示されることもあります。

https://support.google.com/webmasters/answer/6062608?hl=ja

インデックス登録を拒否するには、noindexメタタグを使います。

重複コンテンツへの対応はできない

ページ内容が似通っている「重複コンテンツ」への対応策として、robots.txtを使うことは推奨されていません。canonicalタグを使って、URL正規化を行うようにしましょう。

画像やCSS・JavaScriptをブロックしない

HTMLから参照される画像やCSS・JavaScriptをブロックすると、クローラがページを正しくレンダリングできず、「モバイルフレンドリーではない」などと誤った判断をしてしまう可能性があります。

クローラ以外はアクセス制御できない

robots.txtによる巡回制御は、サーバー側でアクセス制限されるわけではありません。クローラが直接robots.txtを読み取り、巡回対象とするURLを決定しているのです。

重要なフォルダやページをDisallowで指定した場合でも、URLが知れ渡ってしまったら、誰でもページにアクセスできてしまいます。

クローラ以外に対してアクセス制御をしたいときは、Apacheの.htaccessでDigest認証などを設定するようにします。

URLに日本語が含まれているときは、パーセントエンコーディング不要

https://example.com/tag/キャンペーン/ のように、URLパスに日本語が含まれていると、AllowDisallowをパーセントエンコーディング(%E3%82%AD のような形式)で指定しません。AllowDisallow では、日本語はそのまま記載し、robots.txt ファイルは UTF-8 で保存してください。

例:URLパス /tag/キャンペーン/ を拒否する場合

User-agent: *
Disallow: /tag/キャンペーン/

robots.txtで拒否指定はサイトマップにも影響する

サイトマップでURLを指定したとしても、robots.txt で拒否されたURLは、クローリングされません。

robots.txtのDisallowとnoindexとの違い

robots.txtでDisallowを指定することと、noindexメタタグは似ていますが、役割が大きく異なります。

Disallowは、クローラが巡回すること自体を禁止しますが、既にインデックスに登録された情報は変更しません。

一方、noindexメタタグはクローラの巡回を制御することはできませんが、当該ページの情報をインデックスに登録せず、既に登録されていた場合もインデックスから削除します。

記述クローラからの巡回インデックス登録
robots.txtのDisallow拒否現状維持
noindex メタタグ登録しない

このように、インデックス登録を阻止するには、robots.txtではなく、noindex(メタタグもしくはHTTPレスポンスヘッダ)を使います。

noindexを使う際に注意してほしい点があります。robots.txtでURLを拒否していると、クローラが「そのURLでnoindexが使用されているかどうか」を判断できません。noindexを使う際は、必ずrobots.txtで該当URLを許可するようにしてください。

まとめ

robots.txtを設置する主目的は「クローリングよるサーバー側の負荷を下げるため」です。不要なコンテンツへのクローリングを削減できれば、その分、優先度の高いコンテンツのクローリング速度の向上が見込めます。もしまだ設定したことがないのであれば、この機会に是非設定してみてください。

Page Top