问题:
设置一个301的php代码,如果ua倒数60位中含aBcd,区分大小写,就跳转到指定网址,带参数,如果不含51st的ua就返回403,
如前台网址是https://www.301qian.com/app301/st2.php/st.php?user=${userInfo.username} ,返回https://www.301tiaozhuan.com/st.php?user=${userInfo.username},
如前台网址是https://www.301qian.com/app301/st2.php ,返回https://www.301tiaozhuan.com。
如前台网址是https://www.301qian.com/app301/st2.php/任意后缀 ,返回https://www.301tiaozhuan.com/任意后缀
直接上代码
以下是满足您需求的 PHP 代码,实现了基于 User-Agent 的 301 跳转和 403 拒绝访问功能
<?php
// 获取User-Agent
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
// 获取UA的最后60个字符
$uaSuffix = substr($userAgent, -60);
// 检查是否包含"aBcd"(区分大小写)
if (strpos($uaSuffix, 'aBcd') !== false) {
// 获取当前请求的URI路径
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
// 原始基础路径
$originalBase = '/app301/st2.php';
// 目标基础域名
$targetBase = 'https://www.301tiaozhuan.com';
// 提取需要保留的路径部分
if (strpos($requestUri, $originalBase) === 0) {
$path = substr($requestUri, strlen($originalBase));
} else {
$path = '';
}
// 构建目标URL
$targetUrl = $targetBase . $path;
// 发送301跳转响应
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $targetUrl);
exit;
} else {
// 不满足条件,返回403
header('HTTP/1.1 403 Forbidden');
exit;
}
?>
代码说明:
- 首先获取 User-Agent 信息,并提取其最后 60 个字符进行检查
- 严格区分大小写地检查是否包含 “aBcd” 字符串
- 当满足条件时:
- 提取当前请求的路径部分
- 保留原始 URL 中 st2.php 之后的所有路径和参数
- 将基础域名替换为目标域名 (https://www.301tiaozhuan.com)
- 发送 301 永久重定向响应
- 当不满足条件时,返回 403 Forbidden 响应
这个代码可以处理您描述的所有情况:
- 带参数的 URL 会保留参数跳转
- 根路径会跳转到目标域名根路径
- 带任意后缀的路径会保留后缀跳转
请注意将此代码保存为 st2.php 文件并放置在 /app301 / 目录下。














