0

人々が着陸する可能性のある存在しないファイルを特定のファイル (landing.php) にリダイレクトしようとしていますが、これらの 404 状況のリファラーも記録したいのですが、どうすればよいでしょうか?

現在、.htaccess ファイルに単純な ErrorDocument 404 /landing.php エントリがありますが、ユーザーがカスタム ランディング ページに到達したときにどのように/どこから来たリファラーを実際にキャプチャできますか (他の通常の訪問者が来るでしょう)そのページのすべてのリファラーを記録することはできないので、404 トラフィックのみを分離する方法はありますか?)

4

2 に答える 2

1

人やソフトウェアが簡単に微調整できるため、リファラーが利用可能であることに依存することはできません。私の経験では、ほとんどの人はそうしないので、追跡する価値はありますが、使用する前に設定されているかどうかを確認してください.

あなたのように 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 があなたのサイトと同じドメインを使用していても、外部リダイレクトが発生し、環境変数が設定されません。

あなたはすでにこれを正しく行っているようですが、将来のユーザーのためにこれを含めると思いました.

于 2013-04-11T07:10:35.063 に答える
0

あなたのlanding.phpファイルで:

$referer = $_SERVER['HTTP_REFERER'];

次に、変数を使用して必要なことを何でも行うことができます$referer

于 2013-04-11T04:16:46.180 に答える