robots.txtとsitemapのトラブル解決|検索エンジンに記事が見つからないときの確認順
公開した記事が検索エンジンに見つからないときに、クロール、robots.txt、sitemap、canonical、HTTPステータスを順番に切り分ける方法を解説します。
記事を公開したのに検索結果へ出ないとき、robots.txtだけを直しても解決するとは限りません。検索エンジンがURLを知ること、内容を取得すること、検索対象へ登録することは別の段階だからです。対象URLを1本に絞り、robots.txt、sitemap、canonical、HTTPレスポンスの順に、設定ではなく本番の応答を調べます。
サイト全体の設定はAstroでMarkdown記事サイトを作る最小構成、公開後の404などはAstroをCloudflare Pagesへデプロイする手順も参考にしてください。
最初に見る場所のまとめ
症状だけで原因を決めず、実際の応答を上から順に確認します。
| 確認対象 | 正常の目安 | 問題があるときの手掛かり |
|---|---|---|
| 記事URL | 最終URLが200で本文を返す | 3xxの転送先、4xx、5xx、soft 404 |
| robots.txt | 対象URLのクロールを拒否していない | 対象パスに一致するDisallow |
| robots指定 | 登録対象にnoindexがない | metaタグまたはX-Robots-Tagのnoindex |
| sitemap | canonicalと同じ絶対URLを掲載 | URL表記の不一致、404、HTMLのエラーページ |
| canonical | 原則として公開URL自身を指定 | 開発URL、コピー元、別のURLを指定 |
| URL検査 | 取得と登録が許可されている | 取得失敗、登録拒否、別canonicalの選択 |
クロールと登録の違い
Google検索では、ページを見つける「検出」、取得する「クロール」、内容を解析して検索対象へ加える「インデックス登録」が別々に進みます。sitemapへの掲載は登録の保証ではありません。「未登録」でも、未検出、取得エラー、noindex、別URLがcanonical(代表URL)に選ばれた場合など、原因は複数あります。
最初にGoogle Search ConsoleのURL検査へ完全なURLを入力し、次を記録します。
- クロールが許可されているか
- ページの取得に成功したか
- インデックス登録が許可されているか
- Googleが選択したcanonicalはどれか
通常表示は最終クロール時点の情報です。修正直後は「公開URLをテスト」も使い、過去の結果と現在の配信を分けます。
robots.txtの拒否設定を確認する
robots.txtは、クローラーがアクセスできるURLを制御するファイルです。Googleは、検索結果からページを隠す目的では使わないよう案内しています。クロールを拒否しても、外部リンクなどからURLだけが知られる可能性があるためです。登録させたくない公開ページはクロールを許可してnoindexを使い、非公開情報は認証で保護します。
まずブラウザでhttps://example.com/robots.txtを開き、対象パスに一致するDisallowを探します。
User-agent: *
Disallow: /kiji/
この例では/kiji/以下を拒否します。大文字小文字、末尾のスラッシュ、ワイルドカードにも注意し、編集元ではなく本番のrobots.txtを読みます。
ページの<meta name="robots" content="noindex">と、HTTPヘッダーのX-Robots-Tag: noindexも別に確認します。robots.txtでクロールを拒否すると、クローラーはページ内のnoindexを読めません。「クロール拒否」と「登録拒否」を混同しないでください。
sitemapのURLと形式を確認する
sitemapはURLを知らせる手掛かりであり、クロールや登録の保証ではありません。robots.txtのSitemap:行またはSearch Consoleのサイトマップレポートから実物を開き、404、ログイン画面、HTMLのエラーページが返っていないか確認します。
XML sitemapでは、対象記事が完全な絶対URLで入っているかを調べます。
<url>
<loc>https://example.com/kiji/sample/</loc>
<lastmod>2026-07-23</lastmod>
</url>
httpとhttps、wwwの有無、末尾のスラッシュを本番URLと合わせます。Googleは完全な絶対URLを使い、検索結果へ出したいcanonical URLを含めるよう案内しています。XMLはUTF-8で作り、特殊文字をエスケープします。
1ファイルの上限は非圧縮で50MBまたは50,000URLです。超える場合は分割します。小規模サイトでは、下書き、404、リダイレクト元、重複URLの混入を先に調べます。記事が一覧から外れた場合はMarkdownのfrontmatterエラーを直す手順も確認してください。
canonicalとの整合を見る
canonicalは、同じかよく似た内容の代表URLを示す合図です。対象記事のHTMLで、自分自身の公開URLを指しているか確認します。
<link rel="canonical" href="https://example.com/kiji/sample/">
コピー元、開発環境、http版を誤指定すると、別URLを代表にしたいと伝えてしまいます。内部リンク、sitemap、リダイレクト、canonicalでURL表記をそろえます。
Google公式資料では、リダイレクトとrel="canonical"は強いシグナル、sitemap掲載は弱いシグナルです。ただし採用の保証はありません。URL検査で「ユーザーが指定したcanonical」と「Googleが選択したcanonical」を比べ、違えば重複内容やリンクの不一致を調べます。
Astroでの生成方法やURL表記のそろえ方は、canonical URLの書き方で詳しく確認できます。
HTTPステータスを調べる
ブラウザに本文が見えても、CDNやアクセス制限でクローラーへの応答が変わることがあります。ヘッダーを確認します。
curl.exe -I https://example.com/kiji/sample/
curl.exe -I https://example.com/robots.txt
curl.exe -I https://example.com/sitemap-index.xml
記事の最終URLは通常200 OKです。301や308ならLocationを追い、意図したURLへ着くか見ます。401や403は認証・権限、404や410は不在、500番台はサーバー側の失敗です。
エラー本文なのに200を返す「soft 404」もあります。ステータスだけでなく、HTMLに対象記事のタイトルと本文があるか確認します。JavaScript実行後にだけ本文が現れる場合は、URL検査で取得HTMLやスクリーンショットも見ます。
修正後の再確認手順
修正後は、設定ファイルを眺めるだけで終えず、外部から見える結果を同じ順序で検査します。
- 対象記事、robots.txt、sitemapを公開URLで開く
curl.exe -Iでステータスとリダイレクト先を確認する- sitemap内のURLと記事のcanonicalを完全一致させる
- URL検査の「公開URLをテスト」でクロール・取得・登録許可を確認する
- 問題が解消していれば、1ページは「インデックス登録をリクエスト」する
- 複数ページはsitemapを送信し、ページのインデックス登録レポートを後日確認する
再登録を依頼しても掲載は保証されません。連続申請より、原因が直った証拠を残し、最終クロール日と現在のテスト結果を分けて待ちます。改善しない場合は、手動による対策、セキュリティ、品質上の理由も確認対象です。
サイト内のURL変更やリンク切れが繰り返し起きる場合は、Astroサイトのリンク切れを自動検査する方法も役立ちます。
よくある質問
robots.txtでAllowにすれば、必ず検索結果に出ますか
いいえ。クロールを許可しても、取得エラー、noindex、canonicalの不一致、内容の重複などで登録されない場合があります。URL検査で「取得できるか」と「登録可能か」を分けて確認します。
sitemapを送信してから、何日でインデックス登録されますか
一律の日数はありません。sitemap送信やインデックス登録のリクエストは、クロールや掲載を保証するものではありません。修正後は公開URLのテスト結果と最終クロール日を記録し、同じ申請の連打は避けます。
noindexのページをsitemapに載せてもよいですか
検索結果へ出したいcanonical URLだけをsitemapへ含めるのが基本です。noindexとsitemap掲載は意図が反対になるため、下書きや除外対象はsitemapから外します。
sitemapのlastmodは必須ですか
必須ではありません。使う場合は、本文など検索結果に関係する内容を実際に変更した日時を正確に記録します。全URLを機械的に現在日時へ更新する運用は避けます。
Googleが別のcanonicalを選んだら、指定は無効ですか
rel="canonical"は強い合図ですが、絶対指定ではありません。リダイレクト、内部リンク、sitemapのURL表記をそろえ、内容が重複していないかを確認してから再検査します。
一次情報の確認メモ
- 確認日: 2026-07-23 / Google Search Central「Google検索の仕組み」: https://developers.google.com/search/docs/fundamentals/how-search-works
- 確認日: 2026-07-23 / Google Search Central「robots.txtの概要」: https://developers.google.com/search/docs/crawling-indexing/robots/intro
- 確認日: 2026-07-23 / Google Search Central「robots metaタグ仕様」: https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag
- 確認日: 2026-07-23 / Google Search Central「サイトマップの作成と送信」: https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap
- 確認日: 2026-07-23 / Google Search Central「canonical URLの指定」: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- 確認日: 2026-07-23 / Google Search Consoleヘルプ「URL検査で1ページを確認する」: https://support.google.com/webmasters/answer/12482179
- 確認日: 2026-07-24 / Google Crawling Infrastructure「HTTPステータスコードがGoogleのクローラーへ与える影響」: https://developers.google.com/crawling/docs/troubleshooting/http-status-codes
- 確認日: 2026-07-24 / sitemaps.org「Sitemaps XML形式」: https://www.sitemaps.org/protocol.html
続き(結論と実データ)はnoteに置いています
ここでは手順のところまで書きました。実際に出た数字、うまくいかなかった条件、そのまま使える設定ファイルは、 note の記事にまとめてあります。