ads.txtを作れというから作ったら文字コードが違うと怒られた

少し前から、Googleアドセンスにログインすると以下のような警告文が出るようになりました。

要注意 – ads.txt ファイルが含まれていないサイトがあります。収益に重大な影響が出ないよう、この問題を今すぐ修正してください。

今回はこの指摘にしたがってads.txtを作ってみたこと、そしてその際に発生した問題に対処したことを紹介します。

ads.txt とは

ads.txt についての詳しい説明は下記のページにてGoogleさんが説明をしてくれています。 ads.txt で認定販売者を宣言する - AdSense ヘルプ

正直わかりづらい文言が多いんですが、ザックリいうとなりすましなどの広告詐欺を防止する仕組みのようです。 サイト運営者にとってのメリットとしてはads.txtを導入しておいたほうが、広告主からサイトを信用してもらいやすくなると言ったところでしょうかね。

ads.txtの対象はドメインごとになるため、レンタルブログサービス等でサイト運用をされている方は自分で対応できない可能性があります。 自前のサーバやVPSAWS,GCEのように仮想サーバまるごとレンタルしている方、FTPやSCP,SFTPなどでファイルの追加が可能かつ独自ドメインで運用している方などが対象となると思います。

ads.txt導入手順

ads.txt はその名の.txtが示す通りテキストファイルです。 これを所定の場所に、所定の書式で設置するだけです。

SSHなどで直接コンソールが触れるサーバであればvimなどで編集、FTPなどでのファイル転送となる場合は手元のPCで作成したads.txtをアップロードしましょう。

ads.txtの設置場所

ads.txtはルートドメインの直下に設置します。

例えば、 https://example.com/ads.txt などです。 https://www.example.com/ads.txt ではサブドメインになるため不適合となります。

Webサーバが Apacheであれば /var/www/html/ads.txt nginxであれば、/usr/share/nginx/html/ads.txt などですね。、 (ドキュメントルートが違う場合は適宜読み替えてください)

ads.txtの書式

ads.txtの書式は以下のようになっています。

ads.txt書式

(1) 広告配信元のドメインGoogleアドセンスであれば、google.comです

(2) (1)の配信元から広告掲載サイトごとに割り当てられているIDです。 Googleアドセンスであれば、メニューの[アカウント]→[アカウント情報]を開くと[サイト運営者ID]として記載されています。 ads.txt ID確認

(3) アカウントタイプ。DIRECTRESELLER の2種類があり、契約の仕方により変わります。 Googleアドセンスの場合はDIRECTが指定されています。

(4) 認証機関で広告システムを識別するIDです。 Googleアドセンスの場合はf08c47fec0942fa0となります。

なお、文字コードUTF-8 で作る必要があります。Windows環境で作成する人は特に注意が必要かと思います。

ads.txtを設置したらチェックサイトで確認

DataSign FE なるサイトでads.txtの書式チェックができるので、設置したらひとまず確認をしておきましょう。 下記のリンクで開くページにチェックしたいサイトのURLを入力するだけなので簡単です。 Ads.txt 管理 | DataSign FE

私はこのチェックで以下のようなエラーが出てしまいました。

”ISO-8859-1″は誤った文字コードです。utf-8で作成してください。

上記のようにUTF-8で作ることは意識していたんですけどね…。

文字コードが違うと怒られた場合の対処

上記のエラーメッセージで検索するとApacheでの対処方法がいっぱい出てきました。

どうやら、 .htaccess に以下の内容を追記すればいいようです。

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

ただし、私の使っているWebサーバはnginxなのでこのやり方では対応できません。 対処方法としては、以下のサイトが参考になりました。 オデの日記@WEB系: nginxにデフォルトの文字コードをセットしちゃる

nginxのconfファイルに、以下を追記します。 記載するディレクティブは server, http, location などです。私はserverディレクティブに記載しました。

charset utf-8;

これを追記することで、テキストファイルなどの(HTMLと違い)ファイル自体が文字コードを宣言しないファイルの場合に、レスポンスヘッダに charset=UTF-8 を追加してくれるようです。 それによって、ads.txtをチェックした際にUTF-8として認識されるようになります。

なお設定変更後はnginxをリロードしましょう。

$ sudo systemctl reload nginx

設定変更したら再度DataSign FEでチェックします。 Ads.txt 管理 | DataSign FE

先程出ていたエラーがでなくなれば成功です。

まとめ

以上でads.txtの設置作業は終了です。 文字コードの問題以外は本当に簡単でしたね。

やはりWebサーバとしてApacheに比べるとまだまだnginxは使用例が少ないのか、情報を検索してもApacheのものが引っかかることが多いですねぇ。(nginxってキーワードを無視しないでほしい…)