ads.txtの警告が消えないのは.htaccessのSSL自動転送設定に間違いがあったからだった/Google Adsense

Google Adsense を触ったことがある人なら、ads.txt未設置の警告文を一度は見たことがあると思います。設置方法の解説はネット上に山ほどあり、それに習ったつもりでいましたが、半年以上警告文を出しっぱなしにしていまいました。

ようやく解決できたので、レアケースとして記録しておきます。

ads.txt について

ads.txtについての説明や設置方法はGoogle公式を参考にしてください。

当ケースの確認方法とか解決方法の要約

条件

該当サイトにおいて常時SSL化を行っている場合

確認方法

http://サイトURL/ads.txtにアクセスし、ads.txtの内容が表示されるか確認する

ads.txtの内容が表示されなかった場合

http://サイトURL/ads.txtにアクセスした際、https://サイトURL/ads.txtへ転送されるように設定する

ads.txtの内容が正しく表示された場合

当ケースには当てはまらない(=問題は他にある)

SSL自動転送化設定が間違っていた

当ケースで警告文が消えなかった理由は、.htaccessファイル内で行っていたSSL自動転送化設定の記述が間違っていたからでした。

SSL自動転送化はサイトURLのhttp://をhttps://に置き換えることです。例えば『http://サイトURL.com』なら自動で『https://サイトURL.com』となります。

このSSL自動転送を行うためには、.htaccessファイルを編集し、サイトのルートディレクトリにアップロードします。

しかし、Google Adsenseの警告文が消えなかったサイトの場合は、以下のような間違った表記をしてしまっていました(赤字が誤り部分)。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [L,R=301]

間違った.htaccessファイルをアップロードして『http://テストURL/ads.txt』にアクセスしたところ、『https://サイトURL/ads.txt/ads.txt』に転送され、404 NotFound(ページが見つかりません)と表示されてしまいます。

これを踏まえ、.htaccessファイルを以下のように修正しました。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

結果、『http://テストURL/ads.txt』は『https://テストURL/ads.txt』へ正しく転送されるようになり、adsenseページの警告文も表示されなくなりました。

ads.txtはhttpとhttpsのどちらからもアクセスできるようにする

当ケースと同じようにhttp→httpsへ自動で転送しているサイトは多いかと思います。この場合、ads.txtファイルはhttpとhttpsどちらからもアクセスできるようにする必要があります。

つまり『http://サイトURL/ads.txt』と『https://サイトURL/ads.txt』のどちらもグーグルに認識してもらわなければなりません。

正しく転送設定が行われていれば、グーグルが確認した際にも『http://サイトURL/ads.txt』から『https://サイトURL/ads.txt』へ転送されるため、どちらのケースでもads.txtが存在していると判断されます。

しかし今回の場合、転送設定が間違っていたせいで『http://』でのads.txtファイルが存在しないと見なされ、結果、警告文が表示され続けてしまったというわけです。

設定修正後に警告が消えるまでの時間

当ケースの場合、ads.txtに関する警告文は.htaccess を修正してから一晩で非表示になりました。ただしGoogle公式によれば、ads.txtの反映には数日、最長で1か月はかかるとのことです。それ以上経過してもダメそうなら、なんらかの設定ミスを疑ったほうがよさそうです。

間違っている間のアドセンスはどうだったのか?

警告文は常に表示されていましたが、ads.txtファイルが間違っていた半年以上の間、アドセンス自体は普通に表示されていました。正しく設置し直した後と内容の違いも見つかりません。

解決前に行った一般的な対策

ads.txtの保存用文字コードの確認

ads.txtファイルは文字コードを『UTF-8(BOM)なし』で保存してアップロードする必要があります。対応するエディタにて文字コードを確認し、正しいものであることを確認しました。

.htaccessでads.txtの文字コードを指定

Ads.txtのチェックツールにて『”ISO-8859-1″ は誤った文字コードです。utf-8で作成してください。』とエラーがでたので、.htaccessに以下のコードを追記し、明示的にads.txtの文字コードを指定しました。

<Files ads.txt>
AddType "text/plain; charset=utf-8" .txt
</Files>

ただ当ケースの場合、このコードがなくても警告文は非表示になったので、必須ではないようです。


どうして今回の間違いをしたかをいろいろと考えてみたのですが、そういう説明をしているサイトは見つかりませんし、わざわざ文字列を追加するとも思えず、結局はわからないままでした。解決できたからよかったものの、ads.txt以外のページも間違って転送され続けていたことになるので、ただただ反省するばかりです。