CDNがAIクローラーを止めていて、robots.txtが効かないとき

ブラウザでは開くのにAIクローラーには403が返るなら、CDNがAIクローラーをブロックしている可能性が高いです。エッジの特定と設定の探し方をまとめます。

クロールとインデックス6分で読めます2741 回閲覧
CDNがAIクローラーを止めていて、robots.txtが効かないとき

ブラウザではページが開くのに、AIクローラーには403が返る。その場合、ほぼ間違いなくAIクローラーをブロックしているのはCDNであり、サーバーの不具合ではありません。 エッジがオリジンサーバーより先に応答し、レスポンスヘッダー1つでベンダーが分かります。まずエッジを特定し、そのベンダーのボット設定を開いてください。自分のファイルを編集しても、ホスティング側がかけたブロックは外れません。

先に読むこと

この章はAIがサイトを読めるか確認するの続きです。すべてのクローラーが200なら、ここで直すものはありません。403か503が返ったときに戻ってきてください。それがこの章で診断する症状です。

robots.txtが許可してもCDNが止める理由

CDNはオリジンサーバーがリクエストを受け取る前に応答します。ベンダーが配布し、ベンダーの都合で更新する独自のボットルールを適用し、その判断にrobots.txtは使いません。だから両者は恒久的に食い違えます。ファイルは「入れ」と言い、エッジは「だめ」と言い、どちらも設計どおりに動いています。

既定値をあなたの代わりに変える許可を、誰も求めていない。プランを変えたら毎回確認する。

AIクローラーをブロックしているCDNを1コマンドで見つける

知っている必要はありません。レスポンスヘッダーが教えてくれます。大手のエッジは自社のリクエストIDを必ず付けます。1回のcurlでヘッダー名を取り、表と照合します。

curl -sI -A "Mozilla/5.0 (compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot)" \
  https://example.com/ | grep -iE 'server|cf-ray|x-vercel|x-nf-request|x-served-by|x-amz-cf-id|x-cache'
ヘッダーエッジ併記
cf-rayCloudflareserver: cloudflare、cf-cache-status
x-vercel-idVercelserver: Vercel、x-vercel-cache
x-nf-request-idNetlifyserver: Netlify
x-amz-cf-idAWS CloudFrontx-cache
x-served-by + x-cacheFastly独自のserver
なしCDNなし、または隠すCDNserverだけを見る
同じURLへの2つのリクエスト:ブラウザには200、AIクローラーには403が返り、オリジンサーバーより手前のCDNエッジで結果が分かれる

11サイトで試した結果

2026年8月15日、私はこのリクエストをOAI-SearchBotのエージェントで11の有名サイトに送りました。すべて200を返しました。その日、有名ブランドのサイトがエッジでAI検索クローラーを拒否した例はありません。ブロックが自分の側にあると決めつける前に知っておく価値があります。

より役に立ったのは、Cloudflareの背後に誰がいるかでした。shopify.comとwebflow.comはどちらもcf-rayを返しました。これらのプラットフォームで店舗やサイトを運営しているなら、あなたに関係するボットルールはCloudflareのものです。そのアカウントを自分で管理していなくても同じです。

ただし注意が1つあります。この手帳のすべての確認に共通する制限です。リクエストはクローラーのアドレスではなく、私のアドレスから出ています。IP範囲で判定するルールは、このテストでは見えません。

各プラットフォームのAIクローラー設定の場所

メニューの経路ではなく、機能名で探してください。ベンダーはメニューを頻繁に動かします。古い経路をたどると、名前が変わった何かを探し回ることになります。

プラットフォーム探す名前既定
CloudflareAI Crawl Control全プランで利用可能
VercelAIクローラー向け管理ルール無効、Allowと表示
Vercelボット保護の管理ルール無効、Offと表示
Shopifyテーマのrobots.txt.liquidShopifyの既定ルール
Netlify / CloudFrontエージェント単位のWAF・ファイアウォールAI専用ルールなし

Vercelは2つのルールセットを、有効にするまでオフだと文書に書いています。VercelのサイトがAIクローラーを拒否しているときは、別の場所で拒否されていることが多いです。出典:Cloudflare、Vercel、Shopify。

エッジが2段重なると、外側だけが答える

多くのサイトはプラットフォームを別のプラットフォームの前に置いています。Cloudflareの前にVercel、がよくある組み合わせです。外側のサービスが応答するので、見えるヘッダーも効いているルールも外側のものです。内側のプラットフォームのボット設定は、一度も参照されないことがあります。

CloudflareをVercelの前に置いた構成:外側のエッジがAIクローラーに応答してルールを決め、内側プラットフォームのボット設定には届かない

Vercelは自社の文書で明言しています。「Bot Protection doesn't work when a reverse proxy (e.g. Cloudflare, Azure, or other CDNs) is placed in front of your Vercel deployment.」 ヘッダーにcf-rayが出るなら、自分をVercelのサイトだと思っていてもCloudflareから確認してください。

間違えやすい3つ

どれも、答えが最初からなかった場所で半日を失います。

  1. 403を直すためにrobots.txtを編集する。 403はリクエストが拒否されたという意味です。robots.txtはレスポンスを受け取った後に読むファイルなので、拒否を取り消せません。エッジを直し、そのうえでrobots.txtに希望を書きます。
  2. ブラウザで試して問題なしと結論する。 ボットルールはエージェントで判定します。ブラウザは、その問題を再現しないことが保証されたクライアントです。必ずクローラーのエージェントで再テストしてください。
  3. 外側が拒否しているのに内側のプラットフォームを直す。 設定を変える前にヘッダーを見てください。リクエストを一度も受け取っていないサービスを操作することになります。

よくある質問

ホストはAIクローラーを止めていないと言います。なぜ403が返るのですか

管理WAFルール、レート制限、チャレンジページは、AIブロックという名前がなくても拒否を返します。中間ページ付きの503はチャレンジで、クローラーはチャレンジを解きません。ブロックとして扱ってください。

CDNのブロックとサーバーのブロックは区別できますか

たいていは区別できます。エッジの拒否は速く返り、CDNのヘッダーだけが付いて、アプリケーションのヘッダーはありません。自分のフレームワークのヘッダーやアプリが描画したページが含まれていれば、リクエストは届いています。

なぜクリック手順の画面写真がないのですか

ベンダーの更新ごとに再確認できないメニュー経路を公開することになり、間違った経路は何もないより悪いからです。機能名はメニューよりずっとゆっくりしか変わりません。

次の一歩

すべてのクローラーが200を返すようになると、問題は「到達できるか」から「クロールする価値があるか」に移ります。勝ちに近い検索を選ぶ段階で、手帳は配管からコンテンツへ進みます。

ブロックの診断はすぐ終わります。変更して公開し、インデックス用に更新を送るところで、多くのサイトが止まります。

収録: QueryWinガイド · レベル1

CDNがAIクローラーを止めていて、robots.txtが効かないとき