楽天セール開催中!ポイント最大11倍! セール会場へ

WordPress│Referrer-Policyをレスポンスヘッダーに追加する方法

Referrer-Policyとは、Webページが別のページへリンクするときに、参照元(リファラー)の情報をどのように送信するかを制御するHTTPヘッダーです。

これにより、ユーザーのプライバシーを保護し、送信されるデータの内容を制限できます。

SEO施策のツールでReferrer-Policyがないことを指摘されたのでレスポンスヘッダーに追加してみました。

その解説記事です。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

送信先で確認したRefererの違い

スクロールできます
確認するリクエスト送信先で受け取った値分かること
同一オリジンの画像取得参照元のパスとクエリーを含むURLフラグメントは送られなかった
別オリジンの画像取得参照元のオリジンのみパス・クエリーは送られなかった
画像にreferrerpolicy=”no-referrer”を指定Refererヘッダーなし個別要素の指定も確認する必要がある

掲載フィルターを読み込んだ隔離WordPressで、strict-origin-when-cross-originのHTTPヘッダーを出し、ブラウザーの画像取得を送信先で確認しました。試験では同じHTTPのホスト名違いを別オリジンにしています。HTTPSからHTTPへの移動、リンクのクリックによる遷移、CDNでの上書きはこの試験に含みません。

WordPressのsend_headersによる実HTTPでも、未設定への追加、大小文字が混在した既存ヘッダーの保持、フィルター停止後の復帰を確認しました。導入先ではHTMLと送信先の両方を確認してください。

WordPressでReferrer-Policyをレスポンスヘッダーに追加する方法

まず対象のHTMLレスポンスに既存のReferrer-Policyがあるか確認します。診断の警告だけを理由に、サイト全体のポリシーを変更しません。

子テーマのfunctions.phpへ追加します。WordPressのwp_headersにReferrer-Policyが既にあれば、大文字・小文字の違いがあっても上書きしません。サーバー、CDN、他のプラグインが別の方法で付ける値はこの判定の対象外です。そちらで設定済みなら、管理する場所を1つにまとめてください。

Code Snippetのプラグインから挿入してもOKです

add_filter( 'wp_headers', function ( $headers ) {
    foreach ( array_keys( $headers ) as $name ) {
        if ( 'referrer-policy' === strtolower( $name ) ) return $headers;
    }
    $headers['Referrer-Policy'] = 'strict-origin-when-cross-origin';
    return $headers;
} );

Referrer-Policy オプション

例ではstrict-origin-when-cross-originを指定しています。no-referrer-when-downgradeはHTTPS同士の別サイトへパス・クエリーを送る場合があるため、同じ保護範囲ではありません。

ユーザーのプライバシーとセキュリティを保護しつつ必要な情報の共有をコントロールしましょう。

オプション説明
no-referrer参照元情報を全く送信しない。
no-referrer-when-downgradeHTTPS → HTTP のようなダウングレード時には送信しない。それ以外はパス・クエリーを含むURLを送信する。
same-origin同一オリジンの場合のみ参照元情報を送信する。
strict-origin同一・別オリジンともオリジンのみを送信。HTTPSからHTTPには送信しない。
strict-origin-when-cross-origin同一オリジンはパス・クエリーを含むURL、別オリジンはオリジンのみ。HTTPSからHTTPには送信しない。
origin参照元のオリジンのみを常に送信する。
origin-when-cross-origin同一オリジンは完全なURLを送信、クロスオリジンはオリジンのみを送信。
unsafe-url常に完全なURLを送信する。
Referrer-Policy オプション

確認方法

このコードが設定するのはHTTPレスポンスヘッダーです。別の指定方法としてHTMLのmeta要素や個別要素のreferrerpolicy属性もあります。

ブラウザーの開発者ツールでNetworkを開き、対象ページを再読み込みします。HTML文書のResponse HeadersでReferrer-Policyを確認し、リンク先や画像のRequest HeadersにあるRefererとは分けて読みます。

Google Chromeのネットワーク画面でReferrer-Policyを検索して設定内容を確認する様子。

以上です。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。

このフィルターはWordPressが生成するレスポンスの範囲に適用します。静的ファイル、CDNキャッシュ、REST API等まで一律に設定するものではありません。Networkで対象HTMLのレスポンスヘッダーを確認し、実際の移動先へのリクエストのRefererとは区別してください。戻す場合は追加したフィルターを削除しキャッシュを消します。URLに秘密情報を含めないことは別途必要です。

各値の定義はW3C Referrer Policy仕様を参照してください。URLのフラグメントやユーザー情報は送信対象から除かれます。

Apache側の設定とPHPの設定を分けて確認する

2026年10月3日、隔離したApache 2.4.69・PHP CGI 8.2.29・WordPress 7.1.2でも、掲載フィルターによるstrict-origin-when-cross-originを記事のHTML応答で確認しました。

静的ファイルには、このPHPフィルターの値は付きませんでした。

ルートの.htaccessにno-referrerを置いた試験では、静的ファイルにはその値が付きました。

一方、ScriptAliasを使う今回のCGI構成の記事ページには届かず、PHPフィルターの値が残りました。

同じサーバーでも応答の生成経路によって設定範囲が異なるため、HTML・静的ファイル・別のサービスの応答を個別に確認します。

これはレスポンスヘッダーの確認です。

以前に確認した画像取得のRefererとは別の試験で、HTTPSからHTTPへの移動、リンクのクリック、CDNによる上書きは今回も未検証です。

よくある質問:Referrer-Policyをレスポンスヘッダーに追加する方法

Referrer-Policyとは、何ですか?

記事では、Referrer-Policyは、Webページが別のページへリンクするときに、参照元(リファラー)の情報をどのように送信するかを制御するHTTPヘッダーです。ユーザーのプライバシーを保護し、送信されるデータの内容を制限できます。SEO施策のツールでReferrer-Policyがないことを指摘されたのでレスポンスヘッダーに追加した解説記事です。

主な値は、どう違いますか?

記事の表では、no-referrerは参照元情報を全く送信しない、same-originは同一オリジンの場合のみ送信、strict-originは同一・別オリジンともオリジンのみを送信(HTTPSからHTTPには送信しない)、strict-origin-when-cross-originは同一オリジンはパス・クエリーを含むURL、別オリジンはオリジンのみ(HTTPSからHTTPには送信しない)、unsafe-urlは常に完全なURLを送信、といった違いがあります。各値の定義はW3C Referrer Policy仕様を参照してください。

この記事のコードは、どの値を出しますか? 何に適用されますか?

記事では、掲載フィルターでstrict-origin-when-cross-originのHTTPヘッダーを出します。このコードが設定するのはHTTPレスポンスヘッダーで、WordPressが生成するレスポンスの範囲に適用します。静的ファイル、CDNキャッシュ、REST API等まで一律に設定するものではありません。別の指定方法としてHTMLのmeta要素や個別要素のreferrerpolicy属性もあります。

設定したら、実際にどんなRefererが送られましたか?

記事の確認では、同一オリジンの画像取得は参照元のパスとクエリーを含むURL(フラグメントは送られない)、別オリジンの画像取得は参照元のオリジンのみ、画像にreferrerpolicy=”no-referrer”を指定した場合はRefererヘッダーなしでした。個別要素の指定も確認する必要がある、としています。

設定の確認方法を教えてください。

記事では、まず対象のHTMLレスポンスに既存のReferrer-Policyがあるか確認します。ブラウザーの開発者ツールでNetworkを開き、対象ページを再読み込みして、HTML文書のResponse HeadersでReferrer-Policyを確認し、リンク先や画像のRequest HeadersにあるRefererとは分けて読みます。

.htaccessの設定とは、どう違いますか?

記事では、隔離したApache 2.4.69・PHP CGI 8.2.29・WordPress 7.1.2で、静的ファイルにはこのPHPフィルターの値は付かず、ルートの.htaccessにno-referrerを置いた試験では静的ファイルにはその値が付きましたが、ScriptAliasを使うCGI構成の記事ページには届かず、PHPフィルターの値が残りました。同じサーバーでも応答の生成経路によって設定範囲が異なるため、HTML・静的ファイル・別のサービスの応答を個別に確認します。

元に戻すには、どうしますか? 確認していない範囲は?

戻す場合は追加したフィルターを削除しキャッシュを消します。記事では、HTTPSからHTTPへの移動、リンクのクリックによる遷移、CDNでの上書きは今回も未検証です。URLに秘密情報を含めないことは別途必要です。最新は公式で確認してください。

  • URLをコピーしました!

内部SEOを本格的に見直すなら

WordPressのSEO対策

内部構造の調査は¥30,000〜、継続的なSEO対策は月額 ¥50,000〜(税込・最低6ヶ月)。専任のコンサルタントが定期ミーティングで施策を進めます。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのSEO対策のサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次