0

我正在尝试将人们可能登陆的不存在的文件重定向到特定文件(landing.php),但我也想为这些 404 情况记录一个引荐来源...那我该怎么做呢?

现在,我的 .htaccess 文件中有一个简单的 ErrorDocument 404 /landing.php 条目,但是当用户登陆自定义登录页面时,我如何/在哪里实际捕获用户来自的引荐来源网址(将会有其他常规访问者来到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然后你可以用var做任何你需要的事情。

于 2013-04-11T04:16:46.180 回答