こんにちは、SEO分析ツール「アナトミー」開発チームの伏見です。
robots.txt とは、クローラのサイト巡回を制御するためのファイルです。XMLサイトマップと同じように、robots.txt もクローラビリティに大きく影響します。特に、クローリングされるページ数が多いECサイトなどでは、robots.txt を慎重に設定したほうがよいでしょう。
この記事では、robots.txt の書き方や設置方法、設定の確認方法、よくある誤りなどを詳しく紹介します。
SEOの基本知識についてはオンラインセミナーでも解説しています。セミナーではGoogle公式のSEOガイドであるGoogle検索セントラルの「Google検索の仕組み」と「スターターガイド」の内容を読み解くことで正しいSEO基礎知識のスタート地点を受講者に提供することを目指しています。これからSEOを始めようと考えている方は是非ご参加ください。
robots.txtとは
robots.txt とは、検索エンジンのクローラーに対し、サイトの巡回を制御するためのファイルです。具体的には、以下の2つの役割があります。
- クローラーに巡回を許可するURLや拒否するURLを伝える
- サイトマップファイルのURLを伝える
GoogleやBingなど主なクローラーがrobots.txtに対応しています。
- 関連記事:サイトマップXMLの作り方
- 関連記事:クローラーによるサイト巡回の仕組み
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を作成する場合には、書き方を間違えないよう、慎重に確認しましょう。
- 関連記事:SEOチェックリストのダウンロード
robots.txtの最適化によるSEO対策
robots.txtはクローラーの巡回を制御する方法の1つで、SEO対策の一環です。WebサイトのURL構成に合わせ、最適な robots.txt を設定しましょう。
もし、robots.txt の設定やクローラーの巡回にお困りなら、弊社でもお手伝い可能です。
当社のSEOコンサルティングサービスでは、SEO対策の一環として、robots.txtのコンサルティングや実作業も実施しています。
このほか、Googleのクローリングと検索インデックスを最適化するためのXMLサイトマップ、内部リンクの設置、canonicalタグによるURL正規化など、サイトの規模やコンテンツに応じて個別に対応いたします。
BtoBサイトやECサイトにも対応できます。
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: Googlebot | Google検索のクローラを対象とします |
User-agent: bingbot | Bing検索のクローラを対象します |
User-agent: baidu | 百度(バイドゥ)のクローラを対象とします |
その他のUser-Agentは、以下を参考にしてください。
- Google クローラの概要(ユーザー エージェント)
- Which Crawlers Does Bing Use? – Bing Webmaster Tools
- Twitter Developers
- Facebookクローラ
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と、サーチコンソールで設定したサイトマップの両方をチェックしているので、どちらかを設定しましょう。
- 関連記事:Googleサーチコンソールでサイトマップを登録する方法
- 関連記事:XMLサイトマップの作り方
robots.txtで使える正規表現
Allow
やDisallow
で指定する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 の書き方は実に参考になります。ぜひ覗いてみてください。
- Google:https://www.google.com/robots.txt
- Facebook:https://www.facebook.com/robots.txt
- ヤフオク:https://auctions.yahoo.co.jp/robots.txt
- アマナイメージズ:https://amanaimages.com/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のrobots.txt設定を変更
WordPressプラグイン「All in One SEO」を使うと、robots.txtに次のルールを追加できます。
- サイトマップの追加(All in One SEOが生成するXMLサイトマップ)
- クロールを拒否/許可するパスの追加
クロールを拒否/許可するパスを追加するには、次の手順で行います。
- [All in One SEO]-[ツール]メニューを開きます。
- 「カスタムRobots.txtを有効化」をチェックします。
- ユーザーエージェント(例:
*
)と、ルール(許可する or 許可しない)、ディレクトリパス(例:/backup/)を指定します。 - [ルールを作成]ボタンをクリックします。
[変更を保存]ボタンで変更内容が適用されます。
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://technical-seo.jp/sitemap.xml\r\n";
return $output;
}
robots.txtの確認方法
robots.txtの設置が完了したら、動作を確認しましょう。
ブラウザでrobots.txtを開く
まずは、ブラウザでサイトに設置したrobots.txtを表示できるか確認します。ブラウザにrobots.txtが表示されればOKです。
robots.txt テスターを使う
robots.txtの設定ルールの確認には、Googleの「robots.txt テスター」が便利です。テストツールの利用には、サーチコンソールにアカウントが必要です。
robots.txt を検証するには、Googleサーチコンソールのプロパティを選択します。
選択可能なプロパティは、URLプレフィックス型のプロパティのみで、ドメイン型のプロパティは対象外です。URLプレフィックス型のプロパティを登録するには、Googleサーチコンソールの登録・設定方法を参照してください。
- 公開済みの robots.txt の内容が表示されています。ファイルをアップロードしていない場合や、公開中の内容を変更して検証する場合は、内容を変更します。
- 「拒否」「許可」をチェックしたいURLパスを入力します。先頭の / は入力不要です。
- 「テスト」ボタンをクリックします。検証結果が表示されます。
robots.txt テストツールでは、ドメインタイプのプロパティには対応していません。URLプレフィックスタイプのプロパティがなければ、Googleサーチコンソールでプロパティを追加してください。
robots.txtの更新
Googleは24時間おきにrobots.txtの内容をチェックしています。そのため、1日経てば新しいrobots.txtが適用されるようになります。
もし、robots.txtをなるだけ早く反映させたいときには、以下の手順で行います。
- サーバーに新しいrobots.txtファイルをアップロードします。
- robots.txt テストツールを開き、[送信]ボタンをクリックします。
robots.txt設定上の注意点
設定内容を事前に確認する
robots.txtの書き方を間違えると、クローラに巡回されるはずのページが取得されず、いつまでたっても、検索結果にサイトが表示されないという事態になります。SEOにとっては致命的です。それを防ぐためには、robots.txt の書式を正しく理解することと、必ず「robots.txtテストツール」を使って確認することの2点が大切です。
検索エンジンのインデックスは操作できない
robots.txtはクローラを制御するものであり、検索インデックスを制御するものではありません。たとえば、Disallow
を指定しても、既にインデックスに登録されたコンテンツが削除されることはありません。検索結果に表示されたURLを削除するには、robots.txtではなく、Googleサーチコンソールの「URL削除ツール」を使ってください。
Disallowはインデックス登録を完全には阻止できない
robots.txtで、特定URLへの巡回を阻止できますが、それでもページがインデックス登録されることがあります。Googleによると、他サイトからの外部リンクがあると、インデックス登録されるとの言及があります。
クローラをブロックしているページでも他のサイトからリンクされていればインデックス登録が可能
https://support.google.com/webmasters/answer/6062608?hl=ja
Google では、robots.txt でブロックされているコンテンツをクロールしたりインデックスに登録したりすることはありませんが、ブロック対象の URL がウェブ上の他の場所からリンクされている場合、その URL を検出してインデックスに登録する可能性はあります。そのため、該当の URL アドレスや、場合によってはその他の公開情報(該当ページへのリンクのアンカー テキストなど)が、Google の検索結果に表示されることもあります。
インデックス登録を拒否するには、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パスに日本語が含まれていると、Allow
や Disallow
をパーセントエンコーディング(%E3%82%AD のような形式)で指定しません。Allow
や Disallow
では、日本語はそのまま記載し、robots.txt ファイルは UTF-8 で保存してください。
例:URLパス /tag/キャンペーン/ を拒否する場合
User-agent: *
Disallow: /tag/キャンペーン/
robots.txtで拒否指定はサイトマップにも影響する
サイトマップでURLを指定したとしても、robots.txt で拒否されたURLは、クローリングされません。
503エラーを絶対に返却しない
robots.txtへのアクセス時に、サーバーが503エラー(Service Temporarily Unavailable:一時的なサービス停止)を返却すると、GoogleクローラーはWebサイトへのクローリングを中止します。
エラーと HTTP ステータス コードの処理
Google による robots.txt の指定の解釈 | 検索セントラル | Google Developers
5xx(サーバーエラー):
robots.txt リクエストに対してサーバーから明確な応答がないため、Google は一時的なサーバーエラーと解釈し、サイトが完全に許可されていない場合と同様に処理します。
Webサイトが本当にサービス停止状態なのであれば問題ありませんが、正常稼働中の時にrobots.txtが503エラーになると、SEO上、大きな問題になります。
robots.txtが200 OKを返しているかどうか、チェックしておきましょう。
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を設置する主目的は「クローリングよるサーバー側の負荷を下げるため」です。不要なコンテンツへのクローリングを削減できれば、その分、優先度の高いコンテンツのクローリング速度の向上が見込めます。もしまだ設定したことがないのであれば、この機会に是非設定してみてください。
当社ではSEOコンサルティングサービスを提供しており、タイトルや見出しの改善といった内部施策から、ページスピード改善まで柔軟に対応してます。SEO対策にお悩みでしたら、ぜひご利用ください!
⇒アナトミー SEOコンサルティング
また、「Google公式SEOガイドから正しいSEO知識を身につける|エッセンシャルSEOセミナー【入門編】」では、Google検索セントラルに配置されているSEOの公式ドキュメントの一つ、SEOスターターガイドを通読、解説します。
セミナー内では、今回解説したrobots.txtについてや、実際にクロールを制御するサイトマップを、Google検索の仕組みを図解して分かりやすく解説します。SEO初心者の方にとっての正しいSEO基礎知識のスタート地点を築けるセミナーとなってます。ぜひご参加ください!
最後に弊社ではサーチコンソールとGA4データを1つにまとめて分析ができる「SEO分析ツール アナトミー」 を提供しております。運用しているサイトのSEOチェックを行うのに必要な機能が揃ったダッシュボードプランは全て無料でずっとご利用いただけます。是非、アナトミーに無料登録してサイトのSEOチェックをしてみてください。