[PR] 本記事にはプロモーションが含まれています。

【Cloudflare】AdSense自動広告のプレビューが404になるとき|WAFでGoogleを通す設定と、管理画面を守ったままにする注意点

Cloudflare

【2026年7月15日時点の情報です】

Google AdSenseで自動広告を設定しようとしたところ、プレビュー画面に「お探しのページが見つかりません」(404)と表示され、自分のサイトが映りませんでした。

このブログは、自宅サーバーの前にCloudflareを置いていて、WAFのカスタムルールで海外からのアクセスを制限しています。AdSenseのプレビューはGoogleのサーバーからサイトを読みに来るので、そのアクセスが「海外からのアクセス」として止められていたのが原因でした。

この記事では、Googleのアクセスを通すルールの作り方と、そのときにログイン画面の制限まで外してしまわないための注意点、それでも直らないときの切り分け方をまとめます。Cloudflareの仕組みは「Cloudflareとは?仕組みと無料プランでできること」で紹介しています。

まず確かめる:Cloudflareで止められているか

Cloudflareの管理画面で、セキュリティの「イベント(Events)」を開きます。AdSenseのプレビューを更新した直後に、止められたアクセスがないかを確かめます。

確かめるところは次の3つです。

  • アクション:
    ブロック(Block)やチャレンジ(Challenge)になっているか
  • AS番号(ASN):
    15169(Google)か
  • どのルールで止められたか:
    自分で作ったカスタムルールか、それ以外の機能か

AS番号は、インターネット上の「ネットワークの持ち主」ごとの番号です。Googleのネットワークは15169なので、この番号でGoogleからのアクセスを見分けられます。イベントに自分のカスタムルールで止められた AS15169 のアクセスがあれば、次の設定で直せます。

Googleのアクセスを通す設定

方法:海外ブロックのルールに「Googleは除く」を足す

いちばん安全なのは、海外からのアクセスを止めているルールの式に、「AS15169は除く」という条件を足す方法です。たとえば「日本以外からのアクセスをブロックする」ルールなら、式を次のように変えます。

Plaintext
(ip.src.country ne "JP" and ip.src.asnum ne 15169)

「日本以外からのアクセスで、かつGoogleのネットワークではないもの」だけをブロックする、という意味です。式は、ルールの編集画面で「式を編集」を開くと直接書き換えられます。自分のルールの式がこれと違う場合は、末尾のカッコの内側に and ip.src.asnum ne 15169 を足します。

ログイン画面やphpMyAdminを守るルールは別のルールのままなので、そちらは今までどおり効きます。このブログで使っているルールは「WAFのカスタムルールで自宅サーバーのWordPressを守る」で紹介しています。

Cloudflareの管理画面は、メニューの名前や場所が変わることがあります。カスタムルールは、「セキュリティ」の中の「WAF」や「セキュリティルール」にあります。

注意:「残りのルールをすべてスキップ」は使わない

よく紹介されているのが、「AS15169 なら、残りのカスタムルールをすべてスキップする」というルールを一番上に置く方法です。私も最初はこの方法を使いましたが、これには弱点があります。

  • ログイン画面の制限までスキップされる:
    「残りすべて」なので、ログイン画面やphpMyAdminを守るルールも当てはまらなくなります
  • AS15169はGoogleのクローラーだけではない:
    Googleのネットワーク全体の番号なので、Googleのいろいろなサービスからの通信が含まれます

スキップのルールを使う場合は、管理画面へのアクセスを式から外しておきます。phpMyAdminのパスは、自分の環境に合わせて書き換えてください。

Plaintext
(ip.src.asnum eq 15169
 and not http.request.uri.path contains "/wp-login.php"
 and not starts_with(http.request.uri.path, "/wp-admin")
 and not starts_with(http.request.uri.path, "/phpmyadmin"))

Cloudflareのルールは上から順に評価されるので、スキップのルールは海外ブロックのルールより上に置きます。

それでも直らないときの切り分け

サーバーまで届いているかを、Apacheのログで確かめる

サーバーにSSHで接続し、アクセスログを見ながらAdSenseのプレビューを更新します。

Bash
sudo tail -f /var/log/httpd/access_log | grep -i google

AlmaLinuxのApacheの初期設定では、アクセスログは /var/log/httpd/access_log にあります。バーチャルホストごとにログを分けている場合は、そのファイル名に変えます。また、Cloudflare Tunnelを使っている場合、CF-Connecting-IPを読む設定をしていないとログのIPアドレスはすべて 127.0.0.1 になるので、IPアドレスではなく、User-Agentに含まれる「Google」で探しています。

ログの様子考えられること次にすること
ステータス 200 のログが出るサーバーはページを返せている少し時間を置いてプレビューを開き直す
ステータス 403 や 404 のログが出るApacheやWordPressのプラグインが拒否しているセキュリティ系のプラグインや .htaccess の設定を見直す
何も出ないサーバーに届く前、Cloudflareで止まっているセキュリティのイベントをもう一度見る

ログに何も出ないときは、カスタムルール以外を疑う

Cloudflareには、カスタムルールとは別に、ボットを止める機能(Bot Fight Mode)などがあります。これらがオンになっていると、カスタムルールでGoogleを通しても、別のところで止められることがあります。イベントの「どのサービスで止められたか」を見て、カスタムルール以外の名前が出ていないか確かめます。

私の場合

海外ブロックのルールにGoogleを除く条件を足したところ、プレビューが表示されるようになりました。

まとめ

  • AdSenseのプレビューはGoogleのサーバーからアクセスするので、海外からのアクセスを制限していると止められることがある
  • まずCloudflareのセキュリティのイベントで、AS15169のアクセスが止められていないか確かめる
  • 直すときは、海外ブロックのルールに and ip.src.asnum ne 15169 を足すのが安全
  • 「残りのルールをすべてスキップ」は、ログイン画面の制限まで外れるので使わないか、管理画面を式から外す
  • 直らないときは、Apacheのログでサーバーまで届いているかを確かめ、届いていなければカスタムルール以外の機能を疑う

コメント