.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 が返ることを確認しましょう。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Linux 入門