Googleクローラーが来ない原因はrobots.txtのエラーだった話
PHPとDBをアップデートしたお客様サイトで、Google広告の審査に関連してクローラー(AdsBot-Google)のアクセス確認依頼を受けました。
当初、混在コンテンツ、複数の旧GAタグが原因と考え対応を行いましたが解消せず、アクセスログ上に該当クローラーの記録が見当たらない状況だったことがわかりました。
調査の結果、/robots.txt で500エラーが発生しており、クローラーが正常にクロール可否を判断できない状態になっていました。
当初発生していた事象
以下の事象が発生していたことが判明しました。
- 混在コンテンツ
- 複数の旧GAタグの存在
という状況でした。
当初の対応
初めに、混在コンテンツの解消と旧GAタグの削除/アップデートを行いました。
これによりコード上はなんら問題ないように見えたため、広告審査を依頼しました
しかし審査が通らなかったため改めて調査したところ、クローラーがサイトをクロールできていないことが判明しました。
アクセスログの確認と原因
クローラーがクロールできていないため、アクセスログを確認することにしました。
直近のアクセスログを確認すると以下のエラーが発生している事がわかりました。
[13/Apr/2026:00:10:46 +0900] "GET /robots.txt HTTP/1.1" 500 "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
このエラーログは
- /robots.txt にアクセス時に500エラー
- Googlebotによるアクセスは確認できる
一方で、Google広告審査で使用されるAdsBot-Googleのアクセスはログ上で確認できませんでした。
この状況から、WordPress側でrobots.txtを動的生成しようとした際にエラー(Fatal Error)が発生していた可能性が考えられました。なお、robots.txt が500エラーとなる場合、クローラーがクロール可否を判断できず、結果としてクロールが抑制される可能性があります。
robots.txtの確認方法
/robots.txt はブラウザで「https://ドメイン/robots.txt」にアクセスすることで確認可能です。
最終的な対応内容
暫定対応として、以下の内容でルートに robots.txt を設置することにしました。
なお、WordPressでは robots.txt が存在しない場合に動的生成されますが、物理ファイル(静的な robots.txt)を設置することで、WordPressの処理を介さずに直接応答させることが可能です。
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /*?replytocom= Sitemap: https://sitename.com/sitemap.xml
これにより、/robots.txt は正常に200で応答する状態に改善することができ、クローラーが正常にアクセス可能な状態へ復旧し、その後、AdsBot-Googleの問題も解消する事ができました。
今回の気づき
- クローラーが来ない ≠ ブロックされている
- robots.txt の異常はクロール全体に影響する
- WordPressはrobots.txtを動的生成するため、エラー要因になり得る
再発防止・チェックリスト
今後、クローラー関連の不具合時は、以下の点を確認していこうと思います。
- /robots.txt のステータスコード確認(200 / 404 / 500)
- アクセスログでクローラーの有無確認
- User-Agentの確認(Googlebot / AdsBot-Google など)
- WAF / CDN の影響確認
まとめ
今回のケースは、robots.txt が存在しないこと自体ではなく、WordPressによる動的生成時にエラーが発生し、500エラーとなっていたことが原因でした。今回の対応は応急処置のため、WordPress側で発生しているエラーの根本原因については未調査ですが、PHPバージョンアップ後の互換性問題や、プラグインのエラーが原因として考えられます。今後必要に応じて別途調査したいと思います。