【Google AdSense】広告設定のプレビューで「お探しのページが見つかりません」

Blog-Thumbnail_Google-01

はじめに

この記事では、Google AdSense を設定時の問題と対策について説明します。

遭遇した問題の概要

問題は、KUDs Blog で Google AdSense を設定する際に発生しました。

Google AdSense の「広告設定のプレビュー」で、「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」というエラーメッセージが表示されました。

Google AdSense | 広告のプレビュー | blog.kuds.win 「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」
Google AdSense | 広告のプレビュー | blog.kuds.win 「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」

トップレベルドメインの Live Highlight Finder は問題なく表示されるのに、なぜサブドメインの KUDs Blog だけ表示されないんだ?と、困った次第です。

Google AdSense | 広告のプレビュー | kuds.win 「Live Highlight Finder | そっしーの足跡 | KUDs」
Google AdSense | 広告のプレビュー | kuds.win 「Live Highlight Finder | そっしーの足跡 | KUDs」

今回の記事は、私がこの事象を解決した方法を共有します。
あくまでエラー発生の可能性の一つとして、参考までにご覧くださいませ。

問題の詳細

Google AdSenseの「お探しのページが見つかりません」エラー

Google AdSense で広告設定のプレビューを行うと、「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」というエラーメッセージが表示されました。
一般的には、メッセージの通り URL が間違っていることが原因です。
なお、ドメインの指定を誤って記載する人が多いようです。
この辺りは皆さんもお気を付けくださいませ。

しかし、私はそんなミスしておりませんでした。
もちろん、KUDs Blog は正常に動作しておりました。

$ curl https://blog.kuds.win -o /dev/null  -w '%{http_code}\n'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  277k    0  277k    0     0   265k      0 --:--:--  0:00:01 --:--:--  265k
200

※ステータスコード 200 は Success

KUDs Blog のアーキテクチャ

draw.io「AWS 2d architecture for KUDs Blog WordPress」
draw.io「AWS 2d architecture for KUDs Blog WordPress」

KUDs Blog は、AWS の ELB と EC2 を使用してホストされています。
なお、ELB はインターネットから HTTPS 通信のみを受け付けています。
また、ELB と EC2 間の通信はHTTPで行われています。

セキュリティ上の理由から、サイトへの接続は HTTPS のみ許可してます。
そのため、HTTP で接続しようとすると、タイムアウトします。

$ curl http://blog.kuds.win -o /dev/null  -w '%{http_code}\n'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:31 --:--:--     0
522

※ステータスコード 522 は Connection timed out

これによって、Google AdSense のエラーが発生していた可能性がありました。
具体的には、Google AdSense の「広告設定のプレビュー」が HTTP を使用してサイトに接続しようとした場合、接続はタイムアウトし、結果としてエラーメッセージが表示された可能性がありました。
正直、HTTPS に対応してれば大丈夫だろうと思っていたのですが、そうではなかったというのが結論です。

解決策

Cloudflare での「常にHTTPSを使用」設定

Cloudflare「常に HTTPS を使用: ON」
Cloudflare「常に HTTPS を使用: ON」

kuds.win では、DNS と SSL 証明書を Cloudflare で管理しています。
そこで、Cloudflare の「SSL/TLS」タブにある「常に HTTPS を使用」の設定を有効にすることで、すべての HTTP リクエストを HTTPS にリダイレクトするようにしました。

これらの変更によって、私のブログサイトは HTTP と HTTPS の両方でアクセス可能になり、かつ HTTP リクエストはすべて HTTPS にリダイレクトされるようになりました。

$ curl http://blog.kuds.win -o /dev/null  -w '%{http_code}\n'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
301

※ステータスコード 301 は Moved permanently

そして、Google AdSense の「広告設定のプレビュー」も正常に動作するようになりました。

Google AdSense | 広告のプレビュー | blog.kuds.win 「KUDs Blog」
Google AdSense | 広告のプレビュー | blog.kuds.win 「KUDs Blog」

その他の解決策: ELB

私の場合は Cloudflare でリダイレクト設定しました。
しかし、Cloudflare を利用していない方もいるかと思います。
ここでは、ELB を用いた HTTPS リダイレクト設定の手順を説明します。

前述の通り KUDs Blog では、ELB と EC2 でホストしています。
また、インターネットからは HTTPS のみアクセス許可していました。
そのため、HTTP のアクセスはすべて拒否しておりました。

以下の手順では、ALB で HTTP リクエストを HTTPS にリダイレクトできます。

  1. AWS Management Consoleにログイン
  2. 「EC2」を選択
  3. 左側のナビゲーションパネルで、「Load Balancers」をクリック
  4. 編集したい Load Balancer を選択
  5. 「Listeners」タブの「Add listener」をクリック
  6. Protocol: HTTP, Port: 80, Default actions: Redirect 選択
  7. リダイレクト先を HTTPS / 443 に設定し、Add をクリック

以上で、HTTP での接続は自動的に HTTPS へリダイレクトされます。

より詳細な内容は、AWS 公式の記事も参照になるかと思います。

Application Load Balancer で HTTP を HTTPS にリダイレクトする
Application Load Balancer のリスナールールを使用して、HTTP リクエストを HTTPS にリダイレクトしたいと考えています。

ELB の SG も修正を忘れずに

なお、HTTP を許可するために SG も必要に応じて修正してください。
以下の手順で修正可能です。

  1. AWS Management Consoleにログイン
  2. 「EC2」を選択
  3. 左側のナビゲーションパネルで、「Security Groups」をクリック
  4. 編集したいセキュリティグループを選択
  5. 「Inbound rules」タブを選択し、「Edit inbound rules」をクリック
  6. 「Add rule」をクリック
  7. 新しいルールの「Type」で「HTTP」を選択
  8. 「Source」を「Anywhere」または特定のIP範囲に設定
  9. 「Save rules」をクリックしてルールを保存

これによって、HTTP からの接続が ALB に対して許可されます。
そして、先ほど説明した HTTP から HTTPS へのリダイレクトの設定を組み合わせることで、HTTP で接続しようとするユーザーが HTTPS へリダイレクトされるようになります。

その他の解決策: CloudFront

今回のケースでは、Cloudflare、ELB を用いていました。
しかし、CloudFront を用いている方もいるかと思います。
以下の手順では、CloudFront で HTTPS へリダイレクトすることが可能です。

  1. AWS Management Console にログイン
  2. 「CloudFront」を選択
  3. 修正したいディストリビューションの ID をクリック
  4. 「Behaviors」タブを選択
  5. 既存のビヘイビアを選択し、「Edit」をクリック
  6. 「Viewer Protocol Policy」の設定を「Redirect HTTP to HTTPS」に変更
  7. 「Save changes」をクリックして変更を保存

これによって、HTTP 経由でアクセスが行われた場合に自動的に HTTPS にリダイレクトされるようになります。

さいごに

本記事では、Google AdSense の「広告設定のプレビュー」で「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」と表示される問題に遭遇し、その原因と解決策を詳しく解説しました。

正直、HTTP がタイムアウトになることで、プレビューが見れなくなることは想定外でした。
もしかしたら、このような内容が Google AdSense の審査にも影響があるのかもしれません。
可能性の一つとして、試していただけますと幸いです。
(もし別の原因だった場合、Comment にて共有頂けますと幸甚の至りです。。。)

以上です!

コメント