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

如何实现基于自定义参数的域名URL动态跳转功能?

域名自定义跳转实现方案

方案一:用Nginx重写规则(无需后端/数据库)

直接通过Nginx配置解析URL参数实现即时跳转,全程不需要数据库或复杂后端逻辑。

在你的Nginx配置文件中添加以下规则:

server {
    listen 80;
    server_name stackguy.com;

    # 处理通用redirect参数跳转
    if ($args ~* "^redirect=(.+)") {
        set $target_url $1;
        # 自动补全http/https协议(若用户未指定)
        if ($target_url !~* "^https?://") {
            set $target_url "https://$target_url";
        }
        return 302 $target_url;
    }

    # 处理YouTube专属的red参数跳转
    if ($args ~* "^red=(.+)") {
        return 302 "https://youtube.com/watch?v=$1";
    }
}

配置完成后重启Nginx即可生效。用户访问stackguy.com/redirect=youtube.com/watch/xxx会自动跳转到https://youtube.com/watch/xxx,访问stackguy.com/red=abc123则跳转到https://youtube.com/watch?v=abc123。

方案二:轻量级后端脚本(PHP/Node.js)

如果服务器支持后端脚本,用几行代码就能实现更灵活的控制,同样无需数据库。

PHP示例(放在域名根目录的index.php)

<?php
if (isset($_GET['redirect'])) {
    $target = $_GET['redirect'];
    // 补全协议头
    if (!preg_match('/^https?:\/\//', $target)) {
        $target = 'https://' . $target;
    }
    // 可选:添加域名白名单限制,防止恶意跳转
    header("Location: $target", true, 302);
    exit;
}

if (isset($_GET['red'])) {
    $videoId = $_GET['red'];
    header("Location: https://youtube.com/watch?v=$videoId", true, 302);
    exit;
}
// 无参数时的默认提示
echo "请使用redirect或red参数指定跳转目标";
?>

Node.js示例(基于Express框架)

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    if (req.query.redirect) {
        let target = req.query.redirect;
        if (!target.startsWith('http://') && !target.startsWith('https://')) {
            target = 'https://' + target;
        }
        res.redirect(302, target);
    } else if (req.query.red) {
        res.redirect(302, `https://youtube.com/watch?v=${req.query.red}`);
    } else {
        res.send('请使用redirect或red参数指定跳转目标');
    }
});

app.listen(80, () => {
    console.log('跳转服务已启动');
});

方案三:纯前端跳转(仅适合个人测试)

如果暂时没有后端/服务器配置权限,可以用纯HTML+JS实现,但存在被用于恶意跳转的风险,不推荐生产环境使用:

<!DOCTYPE html>
<html>
<head>
    <script>
        const params = new URLSearchParams(window.location.search);
        if (params.has('redirect')) {
            let target = params.get('redirect');
            if (!target.startsWith('http://') && !target.startsWith('https://')) {
                target = 'https://' + target;
            }
            window.location.href = target;
        } else if (params.has('red')) {
            window.location.href = `https://youtube.com/watch?v=${params.get('red')}`;
        }
    </script>
</head>
<body>
    请使用redirect或red参数指定跳转目标
</body>
</html>

关键注意事项

  • 生产环境建议添加域名白名单验证,限制可跳转的网站范围,避免被用于钓鱼等恶意行为;
  • 优先选择Nginx或后端脚本方案,稳定性和安全性远高于纯前端方案;
  • 跳转状态码推荐用302(临时跳转),若为固定永久跳转场景可改用301。

内容的提问来源于stack exchange,提问作者r4zoRK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:50:31