.htaccess で ads.txt へのアクセスのみ HTTP/HTTPS 両方を許可する方法
Web サイトをホスティングサーバー上の Apache (Web サーバー) で運用している場合、 .htaccess というファイルに、各種設定を記述します。
例えば、HTTP プロトコルでアクセスされた場合に、HTTPS でのアクセスに 301 リダイレクトする、というのも .htaccess でよく行われる設定です。
具体的に言えばこの場合、Apache の Rewrite モジュールを有効にして、 「もし HTTPS が OFF なら、https://(元のホスト名)(URI) に 301 リダイレクト。以上、このルール終わり。」 という風に書きます。
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond はリライトする条件を書くところ、RewriteRule は書き換えルールそのもの。 最後の L が「このルール終わり」の部分です。
ads.txt 利用時のサーバー設定の問題とは?
最近は IAB が推めている活動に伴い、Google の AdSense などの広告を掲載するにあたり、 認定デジタル販売者ファイル (ads.txt) をサーバーに配置する必要がでてきています。
その際 Google は、クローラが正しく認識できるよう ads.txt へ HTTP と HTTPS の両方のプロトコルでアクセスできるようにするよう推奨しています。
ところが、最近は常時 HTTPS アクセスが普通になっていますので、.htaccess で HTTP でのアクセス全体を HTTPS にリダイレクトする、 という設定を行なっている人も多いと思います。
.htaccess で HTTP アクセス全体を HTTPS にリダイレクトしている場合に、ads.txt へのアクセスだけは HTTP も許可したい。この場合どうすれば良いでしょうか。
.htaccess での対応は簡単
状況を説明するために、前置きが長ったらしくなってしまいましたが、対策は簡単です。
次のように、リライトルールの先頭に一行追加しておけば OK です。
RewriteEngine on RewriteRule ads\.txt - [L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
この設定によって、ads.txt へのアクセスの場合は、それ以降のルールが適用されないようになります。
なお、設定後は POSTMAN などで特定のファイルにアクセスして、確かに 200 OK が返ることを確認しましょう。