robots.txtは、サイトのページへのクロールを制御するためのファイルです。必ずしも必要なものではありませんが、SEOの施策としてサイトに設置されることがあります。
WordPressサイトであれば、WordPressによって自動的にrobots.txtが設置されます。そのため、どのようなものか知っておいても損はありません。
この記事ではrobots.txtの書き方や設置方法、robots.txtを設置することがSEOにどのような効果があるのか、それらについて解説します。
robots.txtとは?
robots.txtとは、クローラーに対してサイトの特定のページ(URL)へのクロールを禁止したり、反対に許可をしたりするためにサイトに設置されるファイルです。
robots.txtにはもう1つ機能があり、クローラーへXMLサイトマップの場所を伝える役割があります。
まとめるとrobots.txtにできることは次の3つです。
- クローラーに対して特定のURLへのクロールを禁止する
- クローラーに対して特定のURLへのクロールを許可する
- クローラーにサイトマップの場所を伝える
Googleのクローラーは、クロールする前に対象サイトのrobots.txtを取得します。そして、どのページのクロールが禁止されているか(あるいは許可されているか)を確認します。クローラーがrobots.txtを取得できない場合は、サイトのすべてのページへのクロールが許可されていると解釈されます。そのため、robots.txtは必ずサイトに設置しなければならないものではありません。
robots.txtを使用する際には、次の点に注意してください。
- robots.txtの指示をクローラーに強制することはできない
- 検索結果にページを表示させないように制御することは完全にはできない
- noindexしたページのクロールを禁止してはいけない
例えば特定のURLへのアクセスを禁止しても、クローラーが必ずそれに従うとは限りません。その意味でrobots.txtに強制力はありません。しかし検索エンジなどの行儀のいいクローラーはその指示に従うでしょう。
検索エンジンの検索結果にページを表示させないためにrobots.txtを使うのは厳密には間違いです。Webページへのアクセスを禁止するとクローラーが直接そのページをクロールしてインデックスすることはありませんが、他のページからリンクされていると、そのページをインデックスして検索結果に表示する可能性があります。
ただし、検索結果に表示されないように簡易的にrobots.txtを使うこともあります。まだインデックスされておらず、どこからもリンクされていなけば、これは機能するでしょう。
robots.txtでアクセスが禁止されているページが、インデックスされ検索結果に表示される場合、検索結果に説明が表示されなくなります。自身のページがそのような場合は、アクセスを禁止していないか確認してください。これについて詳しくは次のリンクを参照ください。
検索エンジンの検索結果にページを表示されないようにするには、代わりに次の方法を使います。
- 検索結果に表示したくないページをパスワードで保護する
- noindexを使う
ページで noindex を使用する場合、クローラーがnoindexを認識するためにページをクロールする必要があります。そのため、robots.txtでこのページのクロールを禁止してはいけません。
noindexについては次の記事で詳しく解説しているので、よろしかったらご参照ください。
robots.txtを設置することによるSEO効果
robots.txtは、主に次のような目的のために利用されます。
- 重要なページを効率よくクロールしてもらう
- サイトマップの場所を伝える
クローラーは無制限にサイトのページをクロールできるわけではありません。クローラーが、各サイトに対して一度にクロールできる量には限りがあります(いわゆるクロールバジェット)。そのため、クロールが必要ないページはそのことを伝え、サイトの重要なページのクロールにリソースを振り分けてもらう方が得策です。
ページへのクロールが必要がないことは、robots.txtよってクロールを禁止することによってクローラーへ伝えます。これにより、重要なページを効率的に素早くクロールしてもらうことが期待できます。
つまりrobots.txtを使ってクロール最適化のSEOを行うことができます。
ただし、よほど大規模なサイトでなければクロールは効率的に行われるとGoogleは明言しています(「Googlebot のクロールの割り当てについて」を参照)。反対に大規模なサイトで、重複ページや類似ページを大量に生成するサイトであれば、robots.txtによるクロールの最適化を検討する価値があります。
robots.txtのもう一つの機能として、XMLサイトマップの場所をクローラーへ伝えることができます。XMLサイトマップを用意する場合は、robots.txtへの記述も検討しましょう。
robots.txtと関連する機能
robots.txtの主な機能はページへのクロールを禁止することで、クロールの必要ないページをクローラへ伝えることです。そのほかにも、サイト管理者が検索エンジンやクローラーを制御できる機能がいくつかあります。それぞれにSEOに効果がありますので、少し寄り道して、それらの役割を整理してみましょう。
- ページを検索結果に表示したくない
-
検索結果にページを完全に表示したくない場合は、ページにnoindexを使うかページをパスワードで保護します。簡易的にrobots.txtでアクセスを禁止することもよく行われます。
- ページを見つけてもらう
-
XMLサイトマップはサイトのページ(URL)をクローラーに伝えます。
- 効率的にクロールしてもらいたい
-
サイトのページを効率的にクロールしてもらうためには、robots.txtやXMLサイトマップが使えます。robots.txtはクロールして欲しくないページのクロール禁止することで、それ以外のページのクロールが促進されます。一方、XMLサイトマップは、クロールしてほしいページのみを記述することによりクロールが促進されます。
いわばrobots.txtはブラックリスト的であり、XMLサイトマップはホワイトリスト的な役割を持っています。
このように、それぞれ役割が少しずつ異なりますので、適切に利用してSEO対策を実施します。
XMLサイトマップについては次の記事で解説していますので、よろしかったらご参照ください。
robots.txtの書き方
robots.txtの書き方は簡単です。対象のクローラーと、それに対する指示(禁止または許可)を順に記述していくだけです。ファイル形式も決まりがありますので、その説明から始めます。
ファイル形式
robots.txファイルは次のように作成する必要があります。
- ファイル名は「robots.txt 」にする
- ファイルの文字コードは「UTF-8」にする
記述する内容
robots.txtには、次の形式でディレクティブを記述していきます。ディレクティブとは指示・命令という意味で、robots.txtの場合はクローラーに対する指示です。
ディレクティブ: 値
次に簡単な例を示します。これはGooglebotという名前のユーザーエージェント(クローラー)に対して、/private/ディレクトリ配下のすべてのページへのアクセスを禁止しています。
User-agent: Googlebot
Disallow: /private/
Allow: /private/readme.html
ここでのポイントは次の通りです。
- Disallow行とAllow行はルールと呼ばれ、ルールは1行に記述する。
- ルールはUser-agent行の後に続けて記述する。User-agent行から始まるルールのセットはグループと呼ばれる。
- robots.txt には複数のグループを記述できる。
robots.txtに記述できるディレクティブには次のものがあります。
ディレクティブ | 説明 |
---|---|
User-agent | User-agentには、ルールを適用するクローラー(ユーザーエージェント)の名前を指定します。アスタリスク(*)は、いくつかのAdsBotクローラーを除く、すべてのクローラーを意味します。AdsBotを制御したい場合は、AdsBotの名前を明示的に指定する必要があります。 |
Disallow | クロールを禁止するディレクトリまたはページを、ルートからのパスで指定します。ディレクトリを指定する場合は、末尾に「/」をつけます。 |
Allow | クロールを許可するディレクトリまたはページを、ルートからでパスを指定します。ディレクトリを指定する場合は、末尾に「/」をつけます。 |
Sitemap | XMLサイトマップの場所を指定します。完全修飾URLで指定する必要があります。 |
上述の表について、いくつか補足します。
- Googleのクローラーの名前は「Google クローラーとフェッチャーの概要(ユーザー エージェント)」に一覧があります。この一覧の「ユーザー エージェント トークン」を「User-agent」に指定できます。
- AdsBotはWebページの広告の品質を確認するのに必要なため、User-agentにアスタリスクを指定したとしても対象になりません。
- DisallowやAllowの説明の「ルートからのパス」とは、をルートを表す「/」からパスを始めるということです。
- Allowは、disallowでクロールを禁止したURLの一部を許可で上書きする場合に使われます。
次にrobots.txtの全体の記述例を示します。
# https://example.com/のrobots.txt
User-agent: *
Disallow: /
Allow: /public/
User-agent: Googlebot-Image
Disallow: /public/image/foo.jpg
Sitemap: https://example.com/sitemap.xml
#の後はコメントとして無視されます。またSitemap行は複数記述することもできます。
簡単な例
幾つかのパターンの簡単な例を以下に示します。
- Webサイト全体のクロールを禁止する
-
User-agent: * Disallow: /
すべてのクローラー(ただし、いくつかのAdsBotは除く)に対して、サイトのルートディレクトリ(/)配下、つまりサイト全体のクロールを禁止します。
- ディレクトリ配下のクロールを禁止する
-
User-agent: * Disallow: /foo/ Disallow: /hoge/sample/temporary/
特定のディレクトリのクロールを禁止します。
- Webページのクロールを禁止する
-
User-agent: * Disallow: /privete.html Disallow: /foo/privete.html
/privete.html、/foo/privete.htmlへのクロールを禁止します。
このほかの設定例についてはGoogleの「robots.txt ファイルを作成する」が参考になります。
robots.txtを配置する場所
robots.txtファイルは、適用するサイトのルートに配置する必要があります。例えば、サイトが「https://example.com/」の場合は、次のURLでrobots.txt にアクセスできる必要があります。
https://example.com/robots.txt
次のように、サブディレクトリに配置することはできません。
× https://example.com/foo/robots.txt
上記のrobots.txtは、次のようなサブドメインや「www」が付くようなURLで運用しているサイト(URL)の制御はできません。同様にプロトコルが異なるURLに対する制御もできません。
# https://example.com/robots.txt は次のサイトには適用されない。
https://sub.example.com/
https://www.example.com/
http://example.com/
これらのURLで始まるサイトに対して制御を実施したい場合は、やはり、これらのルートディレクトリにrobots.txtを設置します。つまり、次のURLでアクセスできる場所です。
https://sub.example.com/robots.txt
https://www.example.com/robots.txt
http://example.com/robots.txt
WordPressのrobots.txt
WordPressはデフォルトでサイトのrobots.txt(例えばhttps://example.com/robots.txt)へアクセスがあると、次のようなrobots.txtを出力して返します。
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/wp-sitemap.xml
/wp-admin/ 配下のディレクトリはクロールを禁止していますが、/wp-admin/admin-ajax.php だけはアクセスを許可しています。wp-sitemap.xml はWordPressが自動的に生成したXMLサイトマップです。
WordPressのrobots.txtを変更する
WordPressサイトでは、次の方法でデフォルトの robots.txt を変更できます。
- プラグインを使って変更する
- 自分でrobots.txtを作成してサイトに設置する
- WordPressが出力するrobots.txtの内容を変更する
robots.txt の変更はプラグインを使うのが最も簡単です。そのほか、自分でrobots.txtファイルを作成してサイトに設置することもできます。robots.txtファイルを設置すると、そのrobots.txtが使われるようになります。3つ目の方法は、functions.phpなどにコードを追加してWordPressが出力する内容を修正します。
いずれの方法を採用するにせよ、競合に注意してください。
例えば、プラグインを使ってrobots.txtを修正している場合に、robots.txtを作成して自サイトに設置するとプラグインの修正が失われる可能性があります。もちろん、プラグイン間でも競合する恐れがあります。
また、導入したプラグインが知らないうちにrobots.txtを修正しているかもしれません。例えば、XMLサイトマップを生成するプラグインは、robots.txtを修正しないように思うかもしれませんが、robots.txtにはXMLサイトマップの場所を示す項目があるので、その項目を修正することがあります。
テストする
robots.txt を追加したり変更したら、正しく機能するか確認しましょう。
ブラウザでrobots.txtにアクセスする
ブラウザの「シークレット ブラウジング(ブラウザによって呼び方は異なります)」で robots.txt にアクセスして、正しく表示されるか確認します。
robots.txt テスターで確認する
Google Search Consoleの robots.txt テスターを使って確認することもできます。詳しくは「robots.txt テスターで robots.txt をテストする」を参照してください。
おわりに
大規模なサイトではない限り、クロールは効率的に行われるとGoogleが言っているので、大規模サイトでなければそれほど重要なファイルではありません。
SEOとしては他の重要な施策を優先して実施した方が良いでしょう。ただし、XMLサイトマップの場所を通知する機能がありますので、XMLサイトマップを設置したり変更したりした場合は、忘れずにrobots.txtも確認しましょう。
参考サイト: