Google AdSense に以下のワーニングがでるようになりました。
要注意 - ads.txt ファイルが含まれていないサイトがあります。収益に重大な影響が出ないよう、この問題を今すぐ修正してください。
「要注意」となっておりますが、さてこれは対応必須なのでしょうか。また、はてなブログでこれを設定することはできるのでしょうか。
ちなみに、このワーニングに気づいてこのサイトを確認したところ、PC/Mac といったデスクトップでのページに広告が入らないようになっていました。スマートフォンの方はこれまで通り広告が入っています。広告が表示されていない理由がこのワーニングのads.txt
の問題なのかはわかりません。とりあえず気になりますので、対応してみようと思います。
前提としまして、現在このサイトは、はてなブログ Pro で独自ドメインを使った運用となっています。
まず、はてなの FAQ には以下のようにあります。
最近よくあるお問い合わせ
はてなブログで ads.txt を配信する方法はありますか
「要注意 - ads.txt ファイルが含まれていないサイトがあります。収益に重大な影響が出ないよう、この問題を今すぐ修正してください。」 というエラーが表示されるようになったというお問い合わせをいただいております。
現在のところ、はてなが提供しているドメイン ( *.hatenablog.com 等) か独自ドメインを設定しているブログかに関わらず、ads.txt を配信する機能は提供していません。
多くの方が利用されているGoogle AdSense ads.txtに関するヘルプにも記載してあります通り、ルートドメインにファイルを設置することができない場合はads.txtを使用する必要はありません。また、現時点のAdSenseの仕様やその他の広告業界動向を鑑みてもads.txtがない場合に広告が配信されなくなるケースは極めて限定的と判断しています。
はてなブログが提供するドメインのルートドメインでも現在のところ ads.txt を設置する予定はありません。これはユーザー様のGoogle AdSenseの広告配信に影響をださないための措置です。
また、独自ドメイン設定をご利用の場合には、ご自身で zone apex (ルートドメイン) にサーバを用意していただき ads.txt を配信することで対応可能です。ただし、この方法についてははてなでサポートすることができません。何卒ご了承ください。
また、直接問い合わせてもみましたが、同じ回答でやはり提供する予定はないようです。
ということで、独自対応します。
何をやればよいかと言いますと、以下に記載があります。
google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
という内容の記載されたads.txt
を用意する。- このファイルを
example.com/ads.txt
の URI で参照できるようにする。
ですね。
このサイトは、www 無し(zone apex (ルートドメイン))でのアクセスがあった場合は、はてなのホストではなく、個人的に管理している別のサーバにアクセスするよう DNS で設定しています。アクセスされたサーバでは、はてなのホストに www を付けて転送します。
このような設定になっている理由は、www 無し(zone apex (ルートドメイン))でのアクセスを許容したいのですが、はてなで独自ドメインを使う場合は CNAME を行う必要があります。www 無し(zone apex (ロートドメイン)) のレコードへの CNAME は設定できないのですね。そのための対応です。
この設定は以前記載した以下の記事の対応のところを参照ください。
今回の対応としては、www 無し(zone apex (ルートドメイン))でads.txt
にアクセスした際(morelife.work/ads.txt
)に Google の指定してるコンテンツを返せればよいので、
www 無し(zone apex (ルートドメイン))のリクエストを受付ているサーバに ads.txt
を置き、morelife.work/ads.txt
へのアクセスだけはそのサーバにおいた ads.txt
を参照させ、それ以外はこれまで通り www 有りに転送するようにしておきます。
さて、前回の設定により nginx の設定は以下の設定となっています。
server { listen 80; server_name morelife.work; return 301 http://www.morelife.work$request_uri; }
これに先に記載した要件を追加します。location
ディレクティブで操作します。
server { listen 80; server_name morelife.work; location / { return 301 http://www.morelife.work$request_uri; } location /ads.txt { root /usr/share/nginx/html; } }
morelife.work/ads.txt
でアクセスしてきた時だけ、ローカルのファイルにアクセスさせます。それ以外は www を付けてリダイレクトさせます。
設定反映後、確認します。ホスト名でアクセスします。
$ curl -v morelife.work * Rebuilt URL to: morelife.work/ * Trying 000.000.000.245... * TCP_NODELAY set * Connected to morelife.work (000.000.000.245) port 80 (#0) > GET / HTTP/1.1 > Host: morelife.work > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Server: nginx/1.11.1 < Date: Tue, 04 Jun 2019 12:39:10 GMT < Content-Type: text/html < Content-Length: 185 < Connection: keep-alive < Location: http://www.morelife.work/
これまで通り転送されており、問題なしです。念のため、別の URI でも試しておきます。
$ curl -v morelife.work/entry/2019/04/21/hatenablog-pro-and-google-adsense * Trying 000.000.000.245... * TCP_NODELAY set * Connected to morelife.work (000.000.000.245) port 80 (#0) > GET /entry/2019/04/21/hatenablog-pro-and-google-adsense HTTP/1.1 > Host: morelife.work > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Server: nginx/1.11.1 < Date: Tue, 04 Jun 2019 12:39:49 GMT < Content-Type: text/html < Content-Length: 185 < Connection: keep-alive < Location: http://www.morelife.work/entry/2019/04/21/hatenablog-pro-and-google-adsense
大丈夫ですね。
では、今回ターゲットとなるmorelife.work.ads.txt
はどうでしょうか。
$ curl -v morelife.work/ads.txt * Trying 000.000.000.245... * TCP_NODELAY set * Connected to morelife.work (000.000.000.245) port 80 (#0) > GET /ads.txt HTTP/1.1 > Host: morelife.work > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.11.1 < Date: Tue, 04 Jun 2019 12:40:39 GMT < Content-Type: text/plain < Content-Length: 59 < Last-Modified: Tue, 04 Jun 2019 12:33:58 GMT < Connection: keep-alive < ETag: "5cf66536-3b" < Accept-Ranges: bytes < google.com, pub-0673245750xxxxxx, DIRECT, f08c47fec0942fa0 * Connection #0 to host morelife.work left intact
OK です。はてなのホストに転送されずに、ローカルに用意した ads.txt
を参照しています。
これで様子をみます。
2019/08/03 後記
記載するのをうっかりしておりました。 ここに記載した対応を行った後、しばらくしてこのワーニングは表示されなくなっています。