はじめに
この記事では、Google AdSense を設定時の問題と対策について説明します。
遭遇した問題の概要
問題は、KUDs Blog で Google AdSense を設定する際に発生しました。
Google AdSense の「広告設定のプレビュー」で、「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」というエラーメッセージが表示されました。
トップレベルドメインの Live Highlight Finder は問題なく表示されるのに、なぜサブドメインの KUDs Blog だけ表示されないんだ?と、困った次第です。
今回の記事は、私がこの事象を解決した方法を共有します。
あくまでエラー発生の可能性の一つとして、参考までにご覧くださいませ。
問題の詳細
Google AdSenseの「お探しのページが見つかりません」エラー
Google AdSense で広告設定のプレビューを行うと、「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」というエラーメッセージが表示されました。
一般的には、メッセージの通り URL が間違っていることが原因です。
なお、ドメインの指定を誤って記載する人が多いようです。
この辺りは皆さんもお気を付けくださいませ。
しかし、私はそんなミスしておりませんでした。
もちろん、KUDs Blog は正常に動作しておりました。
$ curl https://kuds.blog -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 のアーキテクチャ
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を使用」設定
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 の「広告設定のプレビュー」も正常に動作するようになりました。
その他の解決策: ELB
私の場合は Cloudflare でリダイレクト設定しました。
しかし、Cloudflare を利用していない方もいるかと思います。
ここでは、ELB を用いた HTTPS リダイレクト設定の手順を説明します。
前述の通り KUDs Blog では、ELB と EC2 でホストしています。
また、インターネットからは HTTPS のみアクセス許可していました。
そのため、HTTP のアクセスはすべて拒否しておりました。
以下の手順では、ALB で HTTP リクエストを HTTPS にリダイレクトできます。
- AWS Management Consoleにログイン
- 「EC2」を選択
- 左側のナビゲーションパネルで、「Load Balancers」をクリック
- 編集したい Load Balancer を選択
- 「Listeners」タブの「Add listener」をクリック
- Protocol: HTTP, Port: 80, Default actions: Redirect 選択
- リダイレクト先を HTTPS / 443 に設定し、Add をクリック
以上で、HTTP での接続は自動的に HTTPS へリダイレクトされます。
より詳細な内容は、AWS 公式の記事も参照になるかと思います。
ELB の SG も修正を忘れずに
なお、HTTP を許可するために SG も必要に応じて修正してください。
以下の手順で修正可能です。
- AWS Management Consoleにログイン
- 「EC2」を選択
- 左側のナビゲーションパネルで、「Security Groups」をクリック
- 編集したいセキュリティグループを選択
- 「Inbound rules」タブを選択し、「Edit inbound rules」をクリック
- 「Add rule」をクリック
- 新しいルールの「Type」で「HTTP」を選択
- 「Source」を「Anywhere」または特定のIP範囲に設定
- 「Save rules」をクリックしてルールを保存
これによって、HTTP からの接続が ALB に対して許可されます。
そして、先ほど説明した HTTP から HTTPS へのリダイレクトの設定を組み合わせることで、HTTP で接続しようとするユーザーが HTTPS へリダイレクトされるようになります。
その他の解決策: CloudFront
今回のケースでは、Cloudflare、ELB を用いていました。
しかし、CloudFront を用いている方もいるかと思います。
以下の手順では、CloudFront で HTTPS へリダイレクトすることが可能です。
- AWS Management Console にログイン
- 「CloudFront」を選択
- 修正したいディストリビューションの ID をクリック
- 「Behaviors」タブを選択
- 既存のビヘイビアを選択し、「Edit」をクリック
- 「Viewer Protocol Policy」の設定を「Redirect HTTP to HTTPS」に変更
- 「Save changes」をクリックして変更を保存
これによって、HTTP 経由でアクセスが行われた場合に自動的に HTTPS にリダイレクトされるようになります。
さいごに
本記事では、Google AdSense の「広告設定のプレビュー」で「お探しのページが見つかりません。URL をご確認のうえ、もう一度お試しください。」と表示される問題に遭遇し、その原因と解決策を詳しく解説しました。
正直、HTTP がタイムアウトになることで、プレビューが見れなくなることは想定外でした。
もしかしたら、このような内容が Google AdSense の審査にも影響があるのかもしれません。
可能性の一つとして、試していただけますと幸いです。
(もし別の原因だった場合、Comment にて共有頂けますと幸甚の至りです。。。)
以上です!
コメント