搭建教程:
支付宝聚合链接轮转系统 — 搭建教程
一、系统简介
做支付宝活动推广时,单个活动链接有点击/转化上限,跑满后需要手动换链接。
如果同时投放多个渠道,手动管理既低效又容易出错。
本系统核心能力:
- 多链接轮转:给一个推广路径绑定多条活动链接,按设定的点击上限自动轮转,跑满一条自动切下一条
- 跳过中间页:服务端预解析 ur.alipay.com 的跳转链路,直接 302 到最终活动页,省掉支付宝中间加载页
- 高并发:热路径纯 Redis 计数 + SQLite 持久化,单机扛得住每秒数千次跳转
- 多账号管理:总后台管账号,每个账号一个独立推广路径,互不干扰
- 零依赖部署:不需要 MySQL,不需要安装向导,上传即用
适用场景:支付宝活动投放(得物、汽水音乐等口令活动)、多渠道推广统一管理链接。
二、系统架构
系统分三层:
总后台 (admin.php) → 管理后台 (manage.php) → 跳转入口 (go.php) → 支付宝活动页
各层职责:
总后台 admin.php 创建/删除管理后台账号,分配路径标识 系统管理员
管理后台 manage.php 添加/删除活动链接,设置点击上限、轮转模式 推广操作人员
跳转入口 go.php 接收推广链接访问,按规则 302 跳转到活动页 终端用户(自动)
文件结构:
/www/wwwroot/你的域名/
├── admin.php # 总后台页面
├── admin_api.php # 总后台 API(增删改账号)
├── manage.php # 管理后台页面
├── manage_api.php # 管理后台 API(增删改链接)
├── config.php # 配置文件 + 核心函数库
├── go.php # 302 跳转入口(对外推广链接)
├── cron_sync.php # Redis 计数同步到 SQLite(定时任务)
└── data.db # SQLite 数据库(自动创建,勿删)
数据流:
用户点击推广链接 → go.php 读取 Redis → 选中链接 原子计数+1 → 302 跳转到活动页
(Redis 实时计数 → cron_sync 每分钟刷回 SQLite → 管理后台展示统计)
存储设计:
SQLite 必须 持久化存储账号、链接、点击计数(自动创建 data.db,WAL 模式,无需 MySQL)
Redis 可选 高速计数缓存 + 链接列表缓存 + 解析结果缓存(没有也能跑,有则扛更高并发)
三、环境要求
操作系统 Linux(推荐 CentOS / Ubuntu / TencentOS)
Web服务器 Nginx(推荐)或 Apache
PHP版本 7.4 及以上(8.x 也兼容)
PHP扩展 sqlite3、curl(必须) redis(可选)
Redis 6.x+(可选,宝塔商店一键安装)
HTTPS 必须(投放平台基本都要求 HTTPS)
检查 PHP 扩展:
php -m | grep -E “sqlite3|curl|redis”
四、部署步骤
从零到上线,完整 6 步:
【第1步】宝塔建站 + HTTPS
宝塔面板 → 网站 → 添加站点,填入域名,PHP 版本选 7.4+。
建站后点 SSL → Let’s Encrypt → 申请证书,一键开启 HTTPS。
注意:域名需提前解析到服务器 IP,否则 SSL 证书申请会失败。
【第2步】上传代码
将 7 个 PHP 文件上传到网站根目录(如 /www/wwwroot/你的域名/)。
宝塔操作:文件 → 进入网站根目录 → 上传 → 解压。
⚠️ 自检(重要!)
解压后,根目录下必须直接看到这 7 个 PHP 文件。
如果多套了一层文件夹,进入该文件夹 → 全选 → 剪切 → 回根目录粘贴。
文件不在根目录会导致 404 白屏。
【第3步】设置文件权限
全选所有文件 → 权限设为 755,所有者设为 www。
PHP 需要在网站目录里自动创建 data.db,所以目录必须有写权限。
命令行操作:
cd /www/wwwroot/你的域名
chmod 755 *.php
chown www:www *.php
【第4步】修改总后台密码
打开 config.php,找到第一行配置区,修改 ADMIN_PASSWORD:
define(‘ADMIN_PASSWORD’, ‘你的强密码’); // 改成你自己的密码
⚠️ 务必修改默认密码,否则总后台形同裸奔。
【第5步】配置 Redis(可选)
如果服务器装了 Redis,在 config.php 中确认连接配置:
define(‘REDIS_HOST’, ‘127.0.0.1’);
define(‘REDIS_PORT’, 6379);
define(‘REDIS_SOCKET’, ‘/tmp/redis.sock’); // Unix Socket 优先,没有就留空走 TCP
define(‘REDIS_PASSWORD’, ”); // 没设密码就留空
define(‘REDIS_DB’, 0); // 数据库编号,多套系统同机部署用不同 db 隔离
没装 Redis 的跳过这步,系统会自动降级用 SQLite 计数。
【第6步】访问验证
浏览器打开 https://你的域名/admin.php,应看到总后台登录页面。
看到登录页 = 部署成功!用刚才设置的密码登录,开始创建管理后台账号。
五、配置说明
所有配置集中在 config.php 顶部配置区:
define(‘ADMIN_PASSWORD’, ‘你的密码’); // 总后台登录密码
define(‘DB_FILE’, DIR . ‘/data.db’); // SQLite 数据库路径
define(‘REDIS_HOST’, ‘127.0.0.1’); // Redis 地址
define(‘REDIS_PORT’, 6379); // Redis 端口
define(‘REDIS_SOCKET’, ‘/tmp/redis.sock’); // Unix Socket(优先),没有则走 TCP
define(‘REDIS_PASSWORD’, ”); // Redis 密码,没有留空
define(‘REDIS_DB’, 0); // Redis 数据库编号
define(‘ANTI_FLOOD_SECONDS’, 0); // 防刷秒数,0=不限制
define(‘LINK_PREFIXES’, [ // 允许的支付宝链接前缀
‘https://ur.alipay.com/’,
‘https://qr.alipay.com/’,
‘https://render.alipay.com/’
]);
define(‘DEFAULT_USE_SCHEME’, false); // 全局默认是否跳过中间页
配置项详解:
ADMIN_PASSWORD 字符串 必须修改,总后台登录密码
DB_FILE 路径 默认 ./data.db,一般不用改
REDIS_HOST 字符串 Redis 服务器地址
REDIS_SOCKET 路径 Unix Socket 优先使用,不存在自动降级 TCP
REDIS_PASSWORD 字符串 Redis 密码,没有留空
REDIS_DB 整数 多套系统同机部署用不同 db 隔离
ANTI_FLOOD_SECONDS 整数 同一 IP 两次访问最小间隔秒数,0 表示不限制
LINK_PREFIXES 数组 管理后台添加链接时的白名单校验前缀
DEFAULT_USE_SCHEME 布尔 新建账号默认是否开启”跳过中间页”
Redis Key 前缀说明:
系统所有 Redis Key 使用 lr: 前缀,包括:
lr:links:{pathKey} 链接列表
lr:count:{pathKey}:{linkId} 点击计数
lr:resolve:{md5} 解析缓存
lr:mode:{pathKey} 轮转模式
lr:scheme:{pathKey} 跳过中间页开关
lr:idx:{pathKey} 轮转指针
lr:flood:{ip} 防刷记录
多套系统同机部署时,通过不同的 REDIS_DB 隔离即可。
六、使用教程
【第一步】总后台创建账号
- 访问 https://你的域名/admin.php,输入密码登录
- 点击「添加账号」,填写:
- 用户名:管理后台登录用
- 密码:管理后台登录用
- 路径标识:推广链接的 key,如 zhangsan,之后投放链接就是 /go.php?key=zhangsan
- 显示名称:后台展示用,方便区分
- 保存后,该账号就可以登录管理后台了 注意:路径标识只允许字母、数字、下划线和短横线,长度 1-64 字符。一旦创建不可修改。
【第二步】管理后台添加链接
- 访问 https://你的域名/manage.php,用刚才创建的账号登录
- 点击「添加链接」,填入支付宝活动链接(ur.alipay.com/xxx 格式)
- 设置点击上限:该链接最多被访问多少次,跑满后自动切下一条
- 可批量添加:每行一个链接,统一设上限
- 可选:设置轮转模式和跳过中间页开关
【第三步】投放推广链接
管理后台会显示你的推广链接,格式为:
https://你的域名/go.php?key=你的路径标识
配置伪静态后可以使用更短的格式:
https://你的域名/go/你的路径标识
将这个链接填入投放平台(巨量引擎、快手磁力等),用户点击后系统自动 302 跳转到支付宝活动页。
完整操作流程:
总后台建账号 → 管理后台加链接+设上限 → 复制推广链接 → 填入投放平台 → 用户点击自动302
七、功能详解
【轮转模式】
顺序轮转:第1条链接跑满上限 → 自动切第2条 → 以此类推(适合优先消耗某条链接)
循环轮转:1→2→3→1→2→3 循环分配,每条各分一次点击(适合多链接均匀分配流量)
【跳过中间页】
这是本系统的核心优化功能。支付宝 ur.alipay.com 短链默认会经过一个中间加载页(”支”字转圈),
多一次跳转就意味着多一层流失。
关闭跳过中间页(默认):
go.php →302→ ur.alipay.com →302→ render.alipay.com/p/s/i/(中间页)→JS→ 活动页
开启跳过中间页:
go.php →curl预解析→ ur.alipay.com(服务端跟踪302)→ 拿到最终活动页地址 → 直接302 → 活动页
实现原理:
开启后,go.php 在服务端用 curl 跟踪 ur.alipay.com 的 HTTP 302 跳转链,拿到最终活动页地址
(render.alipay.com/p/c/…),然后直接 302 到该地址,完全跳过中间页。
解析结果缓存在 Redis 中 1 小时,不会每次请求都 curl,不影响并发性能。
解析失败时自动降级为直接跳原始链接。
【高并发计数】
有 Redis:链接列表、计数器、轮转指针全部在 Redis 内存中,go.php 不碰 SQLite,单机扛每秒数千次跳转
无 Redis:降级走 SQLite 计数,性能略低但功能完整,中小流量完全够用
计数同步:cron_sync.php 每分钟把 Redis 计数刷回 SQLite,管理后台看到的是 SQLite 数据
【链接管理】
单条/批量添加:批量添加每行一个链接,统一设上限
点击上限:跑满后状态自动变为”已用尽”,轮转切下一条
置顶:优先消耗某条链接
备注:给链接加备注方便管理
批量操作:批量设上限 / 批量恢复 / 批量删除
全部重置:一键清零所有链接计数
实时进度条:每条链接显示当前点击数/上限,带进度条
自动刷新:后台每 10 秒自动刷新统计数据
【防刷】
在 config.php 中设置 ANTI_FLOOD_SECONDS:
0 = 不限制(默认)
3 = 同一 IP 3 秒内重复访问,直接返回当前链接不计数(避免恶意刷量消耗上限)
八、伪静态配置
不配伪静态,投放链接是 /go.php?key=xxx,功能完整。
想让链接更短更专业(/go/xxx),在宝塔 → 站点设置 → 伪静态中添加:
# 支付宝聚合链接轮转系统 – 伪静态规则
# /go/路径标识 → /go.php?key=路径标识
location ~ ^/go/([a-zA-Z0-9_-]+)$ {
rewrite ^/go/([a-zA-Z0-9_-]+)$ /go.php?key=$1 last;
}
配置后投放链接变为:
之前:https://你的域名/go.php?key=zhangsan
之后:https://你的域名/go/zhangsan
安全规则(建议加上),禁止外网直接访问敏感文件:
# 禁止直接访问配置文件和定时任务
location ~ ^/(config.php|cron_sync.php) {
deny all;
}
九、定时任务
如果启用了 Redis,建议配置定时任务,每分钟把 Redis 中的实时计数同步到 SQLite。
宝塔配置:
- 宝塔面板 → 计划任务 → 添加任务
- 任务类型:Shell 脚本
- 任务名称:链接轮转计数同步
- 执行周期:每 N 分钟(推荐 1 分钟)
- 脚本内容:
php /www/wwwroot/你的域名/cron_sync.php
不配定时任务会怎样?
跳转功能完全正常,只是 Redis 里的点击计数不会自动刷回 SQLite。
如果 Redis 重启,未同步的计数会丢失。管理后台看到的计数可能与实际有最多 1 分钟的延迟。
十、常见问题
Q:访问 admin.php 显示 404
A:文件没放在网站根目录。检查根目录下是否直接有 admin.php,不是放在子文件夹里。
Q:访问 admin.php 显示 403
A:文件权限不对。全选文件设为 755,所有者设为 www。
Q:页面白屏 / 500 错误
A:检查 PHP 扩展:php -m | grep sqlite3。如果没输出,在宝塔 PHP 设置中安装 sqlite3 扩展,然后重启 PHP。
Q:添加链接提示”格式不正确”
A:系统只允许支付宝官方链接前缀:https://ur.alipay.com/、https://qr.alipay.com/、https://render.alipay.com/。
确保链接以这些前缀开头。如需支持其他前缀,修改 config.php 中的 LINK_PREFIXES。
Q:跳转后出现”支”字转圈中间页
A:这是支付宝 ur.alipay.com 自带的加载页。在管理后台开启”跳过中间页”开关即可。
注意:部分链接(如 qr.alipay.com)解析出的目标是 alipays:// 协议,无法用于 HTTP 302,
系统会自动降级为直接跳原始链接,这类链接无法跳过中间页,属正常行为。
Q:链接全部跑满后访问提示”活动链接已用完”
A:所有链接的点击上限都已用完。在管理后台添加新链接,或对已有链接执行「恢复」操作重置计数。
Q:data.db 是什么文件?
A:SQLite 数据库文件,系统自动创建,存储所有账号、链接和计数数据。切勿删除。
备份数据只需下载这一个文件。包含 data.db-wal 和 data.db-shm 两个辅助文件(WAL 模式),备份时三个一起拷贝。
Q:多套系统同机部署会冲突吗?
A:不会。每套系统使用独立的 data.db 文件(各自网站目录下),Redis 通过不同 REDIS_DB 编号隔离。
Q:Redis 挂了会影响跳转吗?
A:不会。系统检测到 Redis 不可用时自动降级为 SQLite 计数,跳转功能不受影响,只是并发性能降低。
=====================================
支付宝聚合链接轮转系统 · 搭建教程
基于 PHP + SQLite + Redis · 零依赖 · 高并发 · 跳过中间页
本站资源大多来自网络,如有侵犯权益请联系管理员,我们会第一时间审核删除。站内资源仅供学习测试,未经许可禁止商用,请在24小时内删除。
遇到付费内容?升级终身VIP即可全站免费畅享所有资源,可以联系我的微信进行开通。










暂无评论内容