The Moneytizer ads.txt の自動統合
Moneytizer の ads.txt ファイルを手動で設置している場合、時々更新が必要ですが、自動的に更新できる方法があるので簡単な手順にまとめました。以下は Moneytizer から届いたお知らせです。
「新しいads.txtの更新」のお知らせの下の方に「ads.txt ファイルの更新にうんざりしていませんか?」とあり、自動更新についての記述があります。
作成日:2024年09月27日
ダッシュボードにアクセス
ダッシュボードに表示されているチュートリアルのビデオやPDFは英語なのと、FTPソフトの使い方の説明から始まっているのでわかりにくいですが、作業は単純です。
大まかな手順としては、PHP ファイル(ads_tm.php)をダウンロードして、現在 ads.txt がある場所と同じフォルダーにアップロードし、.htaccess にリダイレクトの記述を追加するだけです。
※ 以下を行うには、ファイルをサーバーにアップロードする方法や .htaccess ファイルの編集方法を理解している必要があります。
ダッシュボードにアクセスして左側のメニューの設定にある「ADS.TXT」をクリックします。
「サイト」を選択し、右側の「自動」タブで、「PHP ファイルのダウンロード」をクリックします。
「ads_tm.php」という PHP ファイルがダウンロードされます。
ads_tm.php をアップロード
ダウンロードした「ads_tm.php」を FTP ソフトや VS Code などを使って、現在サーバーで ads.txt がある場所にアップロードします。アップロードの方法や手順は省略します。
.htaccess ファイルを編集
サーバーの .htaccess ファイルに以下の2行を追加します。
RewriteEngine On
RewriteRule ^ads.txt$ ads_tm.php
RewriteEngine On
は mod_rewrite の機能(URL の書き換え処理)を有効にします。すでに記述されていれば、その後に次の RewriteRule ^ads.txt$ ads_tm.php
を記述するだけです。
RewriteRule ^ads.txt$ ads_tm.php
は ads.txt にアクセスがあったら ads_tm.php にリダイレクトさせる記述です。RewriteRule ディレクティブは、URL の書き換えを行うディレクティブです。
nginx サーバー
設置ガイドの PDF によると、nginx サーバーを使用している場合は、 nginx.conf ファイルに次の行を追加する必要があるとのことですが、お使いの環境によるかと思います。現在使用しているサーバーは nginx ですが、以下を行わなくても問題なく統合できています。
ちなみに、チュートリアルのビデオにはこの手順は含まれていません。
location = /ads.txt { rewrite ^(.*)$ /ads_tm.php; }
統合の確認
ダッシュボードで「統合の確認」をクリックして、以下のように「自動統合により、ads.txtファイルを更新する必要はありません。」と表示されれば完了です。
これで、今後、ads.txt を更新する必要がなくなります。
必要に応じて、手動で追加していた Moneytizer の記述部分は削除することができます。但し、他の広告パートナー(例 Google Adsense など)の記述は削除しないよう注意が必要です。
ブラウザで ads.txt を確認
ブラウザで「https://自分のドメイン/ads.txt」にアクセスして、実際に ads.txt を開いて確認することもできます。自動統合した場合、 Moneytizer の記述が先にあり、Google Adsense などの記述はその後に追加されています。
ads_tm.php
以下は自動更新のためにアップロードする PHP ファイル ads_tm.php です(参考まで)。
ユーザーのサーバー上にある ads.txt の内容($ads_txt)と Moneytizer のリスト($ads_txt_themoneytizer)をマージして、自動的に必要な行を追加するようになっているようです。
マージする際に重複した値や空の値は削除しています(38行目)。
ads.txt に Google Adsense など Moneytizer 以外の他広告パートナーの記述があれば、それらはテキストの最後に追加されて保存されます。
<?php
header("Content-Type: text/plain");
$filename_adstxt_user = 'ads.txt';
$ads_txt = @file_get_contents($filename_adstxt_user);
$ads_txt_themoneytizer = file_get_contents('https://ads.themoneytizer.com/ads_txt.php?site_id=xxxxxx&id=xxxxxx');
if(empty($ads_txt_themoneytizer)){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://ads.themoneytizer.com/ads_txt.php?site_id=xxxxxx&id=xxxxxx');
$ads_txt_themoneytizer = curl_exec($ch);
curl_close($ch);
}
if(empty($ads_txt)){
file_put_contents($filename_adstxt_user, $ads_txt_themoneytizer);
chmod($filename_adstxt_user, 0777);
//$ads_txt = file_get_contents($filename_adstxt_user);
}
$explode_ads_txt = explode("\n", $ads_txt);
$explode_ads_txt_themoneytizer = explode("\n", $ads_txt_themoneytizer);
$aAdsTxt = array();
$aAdsTxtThemoneytizer = array();
foreach ($explode_ads_txt as $k => $v) {
$aAdsTxt[] = trim(str_replace(' ', '', $v));
}
foreach ($explode_ads_txt_themoneytizer as $k => $v) {
$aAdsTxtThemoneytizer[] = trim(str_replace(' ', '', $v));
}
$merge_ads_txt = array_filter(array_unique(array_merge($aAdsTxtThemoneytizer, $aAdsTxt)));
foreach($merge_ads_txt as $k => $v){
$merge_ads_txt[$k] = str_replace(',', ', ', $merge_ads_txt[$k]);
}
echo implode("\n", $merge_ads_txt);