人やソフトウェアが簡単に微調整できるため、リファラーが利用可能であることに依存することはできません。私の経験では、ほとんどの人はそうしないので、追跡する価値はありますが、使用する前に設定されているかどうかを確認してください.
あなたのように ErrorDocument ディレクティブを使用すると、 Apache は$_SERVER 配列でアクセスできるREDIRECT_STATUS 環境変数を設定し、HTTP ステータス コードを含めます。
if (!empty($_SERVER['REDIRECT_STATUS']) && $_SERVER['REDIRECT_STATUS'] == '404') {
if (!empty($_SERVER['HTTP_REFERER'])) {
// Log the referer
}
}
注:これが常に機能するとは限らないと言う人もいますが、環境変数が設定されるトリガーを見つけることができませんでした。
アップデート
Apache のマニュアルによると、これらの環境変数は、ローカル URL を使用する場合にのみ設定されます。これは、ErrorDocument 404 ディレクティブで相対パスを指定する必要があることを意味します。
Error 404 /landing.php
そこに URL を入れると、URL があなたのサイトと同じドメインを使用していても、外部リダイレクトが発生し、環境変数が設定されません。
あなたはすでにこれを正しく行っているようですが、将来のユーザーのためにこれを含めると思いました.