私はApacheでこのサイトを構築していますが、Google検索に自分のサイトが全く表示されないことに気づきました。
Search Consoleを見ても、クロールエラーや「検出 – インデックス未登録」といった表示ばかり。

調べてみると、robots.txtを作成していなかったことが原因だったようです。
この記事では、同じような状況に悩んでいる人向けに、robots.txtの基本構造、設定方法、noindexとの違いまでを詳しく整理します。

ApacheサイトがGoogleにインデックスされない原因

Googleの検索結果に自分のサイトが出てこない場合、原因の多くは次の3つに分類されます。

  1. robots.txt の設定が不適切(クロールがブロックされている)
  2. noindexタグなどでインデックスを制御している
  3. コンテンツが少なすぎる・外部リンクが少ない

このうち最も見落とされやすいのが robots.txtの設定漏れまたは誤設定 です。

robots.txtとは?

robots.txtは、ウェブサイトの管理者が検索エンジンのクローラー(bot)に対して、
「どのページをクロールしてよいか・してはいけないか」を伝えるための設定ファイルです。

クローラーはサイトを訪れると、最初にrobots.txtを確認します。
正しく設定すれば、不要なページのインデックスを防ぎ、重要なページを優先的に評価してもらうことができます。

robots.txtの基本構造

robots.txtは、ルートディレクトリの直下に配置されます。

例えば以下のURLのようにアクセスできるのが理想です。 https://iskkuu.com/robots.txt

robots.txtの基本的な構造は以下の通りです:

User-agent: [クローラー名]
Disallow: [クロールを禁止するURLパス]
Allow: [クロールを許可するURLパス]
項目 内容
User-agent 対象となるクローラーを指定(例:Googlebot)
Disallow クロールしてほしくないページ・ディレクトリ
Allow 特定のページのみクロールを許可

設定例で見る robots.txt の書き方

全ページをクロール許可する例

このサイトのrobots.txtは以下のようになっています。

User-agent: *  
Disallow:  
Sitemap: https://iskkuu.com/sitemap.xml  

この設定は「すべてのクローラーに対してクロールを許可+サイトマップを通知」するものです。
サイト全体を公開したい場合の基本形です。

特定ディレクトリをブロックする例

また、ドメイン直下の/privateフォルダをクロール禁止にし、publicフォルダを許可したい場合は以下のように設定します。

User-agent: *  
Disallow: /private/  
Allow: /public/  
Sitemap: https://iskkuu.com/sitemap.xml  

/private/配下を非公開にし、/public/だけクロールを許可する設定です。

よく使われるUser-agent

User-agent クローラー
Googlebot Google検索
Bingbot Bing検索
Slurp Yahoo!検索
DuckDuckBot DuckDuckGo検索
* すべてのクローラー

クローラーごとに制御する必要があるケースはまれで、基本はアスタリスク(*)指定で十分です。 私もクローラーごとの制御はしていないです。

robots.txtの制限事項と注意点

  • robots.txtはあくまで「お願いベース」のルールです。すべてのクローラーが従うわけではなく、悪意あるbotは無視することもあります。
  • ファイルは公開情報なので、誰でもURLを見れば内容を確認できます。センシティブなフォルダ(例:/admin/)を記載すると、逆に存在を知られてしまうリスクもあります。
  • robots.txtはアクセス制御の手段ではありません。非公開にしたいディレクトリは、.htaccessによるBasic認証やApacheのアクセス権設定で保護する必要があります。

robots.txtとSEOの関係

正しく設定されたrobots.txtは、SEOにおいてクローラビリティ(巡回性)を最適化します。
不要なURLを除外することで、Googlebotが重要なページを効率的にクロールできます。

ただし、robots.txtでブロックしたページはGoogleが内容を確認できません。
そのため「検索結果に載せたくないページ」については、別のアプローチが必要になります。
ここでは、robots.txtとnoindexの違いを整理します。

🔍 robots.txtとnoindexの違い

検索エンジンがページを扱う流れには、主に2つの段階があります。

段階 説明
クロール(Crawl) Googlebotがページの内容を読み取りに行くこと。
インデックス(Index) 読み取ったページをGoogleの検索結果に登録すること。

つまり、

🔸 クロール = 見に行く
🔸 インデックス = 検索に載せる

という関係です。

🧩 robots.txtの役割

robots.txtは、「このURLはクロールしないでください」とクローラーのアクセスを制御するためのファイルです。 たとえば、以下の設定があったとします。

User-agent: *
Disallow: /private/

この設定では、Googlebotは /private/ の中身を見に行きません。 つまり、そのフォルダの内容を一切読み取らない状態になります。

ただし、robots.txtでブロックしても、他のサイトがそのページにリンクしている場合、 GoogleがURLの存在を知ることがあります。

その結果、「URLだけが検索結果に表示される」ケースが起こるのです。

🧠 noindexメタタグの役割

一方、<meta name="robots" content="noindex"> は、 「このページは見てもいいけど、検索結果には載せないで」と指示する仕組みです。

HTMLの<head>内に次のように記述します。

<meta name="robots" content="noindex, follow">

この設定を入れると、Googlebotはページ内容を読みますが、
インデックス(検索登録)からは除外します。

⚖️ robots.txtとnoindexの使い分け

項目 robots.txt meta noindex
クローラーがページを読む? ❌ 読まない ✅ 読む
インデックスされる? URLだけ表示される可能性あり ❌ 完全にされない
設定場所 サイト全体(ルート直下) 各ページのHTML内
主な目的 クロール(巡回)の制御 インデックス(検索結果掲載)の制御

SIerにいると見落としがちな「Web公開」の世界

この記事とは直接関係がないのですが、SIerで働く身として思ったことがあるので少し雑談を、、、

SIerで働いていると、こういった「検索エンジン」や「広告」「SEO」の話題に触れる機会がほとんどありません。
なぜなら、社内システムや業務システムはインターネットに公開しないからです。

だからこそ、“外に向けて”発信活動してみると、「どうすれば見てもらえるか」「どう露出を増やすか」 という観点が自分は非常に弱いことに気づきます。 お客様のことを考えろと上司からは言われますが、その上司も本当にお客様目線で働いているかというと、私の感覚では全くできていません。 上司も、自分の上司を向いて仕事をしています。これは間違いないです。

どんな企業もその要素があると思いますが、SIerはその影響が本当に強い。
どれだけ顧客が不満を持っていても、仮に顧客がそのシステムを使用しないとなっても、サラリーマンである以上、一銭だって損はしません。

それに、上司を向いて仕事しないとSIerでは仕事できない。それが構造的に正しいのだとも思います。

営業でも同じで、SIerの営業先は大企業=購買担当者。
つまり「自分のお金で買う人」ではないので、ユーザー心理のリアルさが見えにくい。
これが、直接お金を払ってもらうエンドユーザーWeb運営との一番大きなギャップだと思います。

SIerの外に出ると、「作る」だけでなく「届ける」力が問われる。 robots.txtのような細かい設定ひとつでも、それを体感できます

研修時代に「会社じゃなくてお客からお金をもらっている意識を持て」と言われたのを思い出しました。 でも、現実はそんなに単純じゃないですよね。 お客の方を見すぎると上司とぶつかってめちゃ辛くなるだけだし、上司を見すぎると結果的に誰も幸せにならない、、、 現実は世知辛いというか、難しいです。

まとめ:インデックスされない悩みをrobots.txtで改善するために

robots.txtは、検索エンジンのクローラーに対してサイト内の巡回ルールを示す重要なファイルです。
正しい設定を行うことでSEOを最適化し、不要なページのインデックスを避けることができます。
ただし、robots.txtはアクセス制御ではなく、クローラーへの“お願い”に過ぎない点を忘れないようにしましょう。