結論: robots.txtは、サイトの一番上に置く、クローラー(検索エンジンなどの巡回プログラム)向けの、お願いのファイルです。巡回を止めるためのもので、**検索結果に載せないための設定ではありません。**また、誰でも見られるため、**見せたくない情報を、守ることもできません。**間違って書くと、サイト全体が、検索結果から消えることもあるため、注意が必要です。
robots.txtとは
検索エンジンのクローラーは、サイトを巡回する前に、まずrobots.txtを読みます。そこに書かれた、**「ここは来ないでください」「ここは来てもいいです」**というお願いに、多くのクローラーは、従います。
**強制力はありません。**守るかどうかは、クローラー次第です。主要な検索エンジンは、従いますが、悪意のあるプログラムは、従いません。
基本の書き方
User-agent: *
Disallow: /admin/
Allow: /
Sitemap: https://example.com/sitemap.xml
| 書き方 | 意味 |
|---|---|
User-agent: * |
すべてのクローラーが、対象 |
User-agent: Googlebot |
Googleのクローラーだけが、対象 |
Disallow: /admin/ |
/admin/ 以下を、巡回しないでほしい |
Allow: / |
全体を、巡回してもよい |
Sitemap: URL |
サイトマップの場所を、知らせる |
- ファイルの場所:
https://example.com/robots.txt(サイトの一番上) - **パスの書き方:**先頭から、一致した範囲が、対象になる。主要な検索エンジンは、
*(任意の文字)や、$(末尾)にも、対応している - **空欄(Disallow:の後に何も書かない):**何も禁止しない
Next.jsのApp Routerでは、app/robots.tsで、robots.txtを生成できます。
noindexとの違い
| robots.txt | noindex | パスワード・認証 | |
|---|---|---|---|
| 目的 | 巡回しないよう、お願いする | 検索結果に、載せない | 中身を、見せない |
| 検索結果に出る? | リンクがあれば、URLだけ出ることがある | 出ない(クローラーが、読める必要がある) | 出ない |
| 中身は、見られる? | 誰でも見られる | 誰でも見られる | 見られない |
検索結果に載せたくないページは、noindex(ページのmetaタグや、HTTPヘッダー)を使います。robots.txtでブロックすると、noindexが読まれず、かえって、URLだけが、残ることがあります。
robots.txtで、守れないもの
robots.txtは、誰でも読めます。たとえば、次のように書くと、その場所を、わざわざ教えることになります。
Disallow: /secret-admin-page/
**見せたくないページや、個人情報は、パスワードなどの認証で守ります。**robots.txtは、安全対策ではありません。
やってはいけない設定
| 失敗 | 何が起きる? |
|---|---|
Disallow: / を、公開サイトに書く |
サイト全体の巡回を、止める。検索結果から、消えていくことがある |
| 開発用・確認用の設定を、そのまま公開する | 上と同じ。確認用の環境では、全体を止めるのが普通なので、本番に、持ち込みやすい |
| CSSやJavaScriptを、ブロックする | ページの見た目を、正しく判断されないことがある |
| noindexを付けたページを、robots.txtでもブロックする | noindexが、読まれない |
| 見せたくないURLを、列挙する | 場所を、教えてしまう |
確認の手順
- ブラウザで、https://自分のサイト/robots.txt を開く
- Disallow: / だけが、書かれていないか確認する
- Sitemapの行が、正しいURLか確認する
- Search Consoleで、robots.txtの取得状況を確認する(設定の項目。名称は変わることがあります)
- 検索結果から、消えた場合は、まず、robots.txtの内容を、疑う
まとめ
- robots.txtは、クローラーへのお願いのファイル。強制力はない
- 止められるのは巡回で、検索結果への掲載ではない。載せたくなければ、noindex
- 誰でも見られるので、見せたくない情報は、認証で守る
- 「Disallow: /」とnoindexとの重ね掛けに、注意する