You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

外部域名访问用户重定向至tracking.php跟踪页面的实现方案咨询

外部跳转跟踪重定向实现方案

以下提供三种不同场景的实现方式,可根据你的服务器环境选择:

方案1:Apache 服务器 .htaccess 配置实现

无需修改业务代码,直接在站点根目录新建/编辑 .htaccess 文件写入以下规则即可:

RewriteEngine On
# 排除tracking.php本身,避免重定向死循环
RewriteCond %{REQUEST_URI} !^/tracking.php$ [NC]
# 校验HTTP_REFERER是否不属于本站域名
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?aaa\.com(/.*)?$ [NC]
# 若不需要拦截空REFERER(用户直接在地址栏输入网址访问的场景),保留以下规则,否则删除
RewriteCond %{HTTP_REFERER} !^$
# 302临时重定向到tracking页面,追加QSA参数可保留原请求的查询字符串
RewriteRule ^(.*)$ /tracking.php?origin=$1 [L,R=302,QSA]

方案2:Nginx 服务器配置实现

在站点对应的server配置块中添加以下规则,重载Nginx配置后生效:

# 排除tracking.php避免死循环
if ($request_uri !~* "^/tracking.php$") {
    # 校验REFERER是否不属于本站域名
    if ($http_referer !~* "https?://(www\.)?aaa\.com(/.*)?$") {
        # 若不需要拦截空REFERER,解除下一行注释与对应的闭合括号即可
        # if ($http_referer != "") {
            rewrite ^/(.*)$ /tracking.php?origin=$1 redirect;
        # }
    }
}

若需要使用永久重定向,将末尾的redirect改为permanent即可。

方案3:PHP 代码层全局实现

如果不方便修改服务器配置,在所有请求都会加载的公共入口文件(如框架入口index.php、全局公共头文件)的最开头加入以下逻辑:

<?php
// 排除tracking.php自身,避免死循环
if (basename($_SERVER['PHP_SELF']) !== 'tracking.php') {
    $siteDomain = 'https://aaa.com';
    $referer = $_SERVER['HTTP_REFERER'] ?? '';
    // 校验REFERER是否不是本站开头
    if (strpos($referer, $siteDomain) !== 0) {
        // 若不需要拦截空REFERER,在上述判断条件追加 && !empty($referer) 即可
        // 跳转时携带用户原本要访问的地址
        $redirectUrl = '/tracking.php?origin=' . urlencode($_SERVER['REQUEST_URI']);
        header('Location: ' . $redirectUrl);
        exit;
    }
}
?>

注意:HTTP_REFERER由客户端浏览器主动上报,本身不具备强可靠性,存在被篡改、隐私模式下不发送的情况,该方案仅可覆盖大多数普通用户的访问场景。

内容的提问来源于stack exchange,提问作者Tomislav Tomi Nikolic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:54:05