第2の人生の構築ログ

自分の好きなことをやりつつ、インカムもしっかりと。FIRA60 (Financial Independence, Retire Around 60) の実現を目指します。SE を生業としていますが、自分でプログラミングしながら自分が欲しいと思うアプリケーションを作ることが楽しみです。旅行と温泉、音楽と読書は欠かすことができません。

はてなブログPro独自ドメインで Google AdSense (アドセンス) の審査をようやく通過

このサイトを 2019/02/17 に Pro(有料版)へ切り替え、独自ドメインに変更してから Google AdSense の審査申請も出しておりました。

www.morelife.work

以前、と入っても大分前ですが、AdSense の審査を申請した際にはそれほど苦労せずに通過していたので、今回もそんなもんだろうと思っていたのですが、条件がいくらか変わってきているようで、一発でスンナリとはいきませんでした。しばらく放置していたのもあったのですが、先日ようやく通過することができました。

いろいろと情報を見ていても、実際に苦労されている方は多いようで、今後もハマる方もいらっしゃるかもしれませんので、私の場合の対応方法を記載しておきます。

まず、対応を行うにはその原因をキチンと掴んでおくことがセオリーです。審査をリジェクトされた場合に、AdSense のサイトにその理由が書かれるのですが、その記載内容を正確に掴むのに苦労しました。

サイトは広告を表示できない状態です

お客様のサイトで複数のポリシー違反が確認されたため、サイトに広告を表示できない状態です。
サイトの停止または利用不可

お客様のサイトが停止しているか、利用できないことが判明いたしました。お申し込みの際に送信された URL にお間違えがないかご確認ください。サイトが正常に機能している場合は、お申し込みを再送信していただけますようお願いいたします。弊社であらためて審査いたします。

上記が審査結果として書かれているのですが、「複数のポリシー違反」と「サイトが停止しているか、利用できない」と2つのことが書いてあります。すぐに適切な対応がうてなかったのがこの2つの理由で、矛盾しているように思えるんですよね・・・サイトが停止しているのであれば、内容は見えないはずで、「複数のポリシー違反」ってコンテンツの内容のことを言っているはずなのに何で?と混乱しておりました。

しばらく上記の2つが出ていたのですが、後から「サイトの停止」だけがでるようになり、今回の原因が特定できたのでした。

当初やっていたのは、以下のはてなブログの記事に内容にそった項目で、コンテンツに関しては「プライバシーポリシー」の追加までやっていました。

help.hatenablog.com

AdSense の審査が通らなかった理由

結論から言いますと、問題は「サイトの停止」と判断される要因で、www無し(ホスト名無し/サブドメイン無し)でのアクセスが行えていない点でした。 この「サイト」という言葉は曖昧で、おそらくですが、以前はこの「サイト」はホスト名込み(サブドメイン有り)の FQDN (xxx.example.com)を指しており、現在は審査をホスト名無しのドメイン名だけ(example.com)でやっているように思え、ホスト名無し(www無し/サブドメイン無し)でのアクセスは必須となっているように思えます。

このことは、はてなさんのヘルプの審査の手順の画面でもわかるのですが、以下のようになっています。

f:id:dr_taka_n:20190421070036p:plain:w500

www 込みの FQDN で入れています。しかし、現在の AdSense の審査はそうではありません。

f:id:dr_taka_n:20190421065534p:plain:w600

「URLを入力してください」とありますが、ここには厳密にはドメイン名(example.com)しか入力できません。wwwのようなホスト名を入れるとエラーになります。ということは、審査はホスト名無しの「URL」でしか出せないということになります。この入力だけで審査の申請ができるということですので、審査にはドメイン名だけのURLでアクセスにいくということです。

はてなブログ Pro で独自ドメインを利用する場合には、ホスト名無しの URLでのアクセス提供はサポートされていません。理由は、サイトのホスト名の名前解決にはCNAME が使われており、はてな側でのコンテンツ配信はバーチャルホストを利用して配信を振り分けているからだと思います。まずはそもそもの名前解決のところで、ホスト無しのドメイン名でのCNAMEができない(RFCの規約)以上、ここでアウトになります。

これは当初からわかっていたのですが、すぐに対応することもできず、AdSense の申請時に一応サブドメインの追加ができ、ホスト名込みのFQDNの登録が行えますので、申請時(画面は審査完了後です)には以下のようなドメイン+サブドメインで申請を行い、Google Search などでも wwwあり/無しが同じサイトだよ、というような設定を入れて、何とか審査に通らないものかと期待しておりました。

f:id:dr_taka_n:20190421070507p:plain

この状態で2度ほどリジェクトされ、やはりホスト名無しでのアクセス手段を提供しておかないとダメなんだろうな、と判断しました。

対応

この対応ですが、お名前ドットコムのようなサービスでは親切にもリダイレクトの機能が提供されているようですが、私のところではそのようなサービスを見つけられませんでした。ですので、自前で対応します。幸いテスト用に使って公開サーバがありますので、そのサーバにwww無しでのアクセスを振り向け、そのサーバからはてなにリダイレクトをかける対応を入れることにしました。

  1. DNS の設定
    www 無しでのアクセスを 2 の Web サーバホストに向けておきます。
  2. Web サーバを使ったリダイレクト設定
    はてなのサイト(www.morelife.work)に 301 redirect します。

1. DNS の設定

VALUE-DOMAIN では以下の設定を DNS の設定として追加しました。www なし(サブドメイン無し)を特定の IP にポイントします。この IP は2.で使うリダイレクト Web サーバになります。

a @ 157.7.196.245

しばし、時間をおいて確認してみます。

$ dig morelife.work

; <<>> DiG 9.10.6 <<>> morelife.work
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13528
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;morelife.work.                 IN      A

;; ANSWER SECTION:
morelife.work.          120     IN      A       157.7.196.245

;; AUTHORITY SECTION:
morelife.work.          165710  IN      NS      ns12.value-domain.com.
morelife.work.          165710  IN      NS      ns13.value-domain.com.
morelife.work.          165710  IN      NS      ns11.value-domain.com.

;; ADDITIONAL SECTION:
ns11.value-domain.com.  160232  IN      A       54.199.222.7
ns12.value-domain.com.  867     IN      A       52.79.97.2
ns12.value-domain.com.  867     IN      AAAA    2406:da12:6a:64c1:f137:f10d:4fc2:9941
ns13.value-domain.com.  138537  IN      A       13.113.251.9

;; Query time: 9 msec
;; SERVER: 210.131.159.80#53(210.131.159.80)
;; WHEN: Sat Apr 20 09:57:53 JST 2019
;; MSG SIZE  rcvd: 207

OK です。

ちなみに、www ありの方は以下のようになっています。www.morelife.workは CNAME で hatenablog.com. に向けています。

$ dig www.morelife.work

; <<>> DiG 9.10.6 <<>> www.morelife.work
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36401
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.morelife.work.             IN      A

;; ANSWER SECTION:
www.morelife.work.      120     IN      CNAME   hatenablog.com.
hatenablog.com.         26      IN      A       13.115.18.61
hatenablog.com.         26      IN      A       13.230.115.161

;; AUTHORITY SECTION:
hatenablog.com.         1749    IN      NS      ns-206.awsdns-25.com.
hatenablog.com.         1749    IN      NS      ns-562.awsdns-06.net.
hatenablog.com.         1749    IN      NS      ns-1380.awsdns-44.org.
hatenablog.com.         1749    IN      NS      ns-1997.awsdns-57.co.uk.

;; ADDITIONAL SECTION:
ns-1380.awsdns-44.org.  15812   IN      A       205.251.197.100
ns-1380.awsdns-44.org.  15812   IN      AAAA    2600:9000:5305:6400::1
ns-1997.awsdns-57.co.uk. 15918  IN      A       205.251.199.205
ns-1997.awsdns-57.co.uk. 15918  IN      AAAA    2600:9000:5307:cd00::1
ns-206.awsdns-25.com.   114184  IN      A       205.251.192.206
ns-206.awsdns-25.com.   114184  IN      AAAA    2600:9000:5300:ce00::1
ns-562.awsdns-06.net.   107159  IN      A       205.251.194.50
ns-562.awsdns-06.net.   107159  IN      AAAA    2600:9000:5302:3200::1

;; Query time: 14 msec
;; SERVER: 210.131.159.80#53(210.131.159.80)
;; WHEN: Sun Apr 21 17:38:55 JST 2019
;; MSG SIZE  rcvd: 419

2. Web サーバを使ったリダイレクト設定

Web サーバは nginx を使っております。nginx の設定ファイルに以下の設定を追加し、www無し(ホスト名なし/サブドメインなし)で www.morelife.work へのリダイレクトを入れています。

server {
  listen      80;
  server_name morelife.work;
  return      301 http://www.morelife.work$request_uri;
}

設定をリロードしておいて、

$ nginx -s reload

確認します。

$ curl -v morelife.work
* Rebuilt URL to: morelife.work/
*   Trying 157.7.196.245...
* TCP_NODELAY set
* Connected to morelife.work (157.7.196.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: Sun, 21 Apr 2019 08:52:18 GMT
< Content-Type: text/html
< Content-Length: 185
< Connection: keep-alive
< Location: http://www.morelife.work/
< 
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.11.1</center>
</body>
</html>
* Connection #0 to host morelife.work left intact

OK ですね。

コンテンツにはまったく触らずに以上2つの作業を行ったところ、申請後一日以内に OK がでました。