
本文介绍如何通过客户端 JavaScript 将旧网站的任意页面,按相同路径随机跳转到多个新域名(如 site1.com、site2.com、site3.com)之一,确保路径保留、协议安全,并提供可直接部署的代码与关键注意事项。
本文介绍如何通过客户端 javascript 将旧网站的任意页面,按相同路径随机跳转到多个新域名(如 site1.com、site2.com、site2.com、site3.com)之一,确保路径保留、协议安全,并提供可直接部署的代码与关键注意事项。
在网页迁移或 A/B 测试场景中,常需将旧站点(如 legacy.com)的全部请求,按原始路径(如 /products/item.html)随机分发至多个新站点(如 site1.com/products/item.html、site2.com/products/item.html 等)。由于服务端重定向(如 Nginx 或 CDN 规则)更稳定可靠,但若受限于仅能操作前端(例如静态托管无服务端权限),可使用以下轻量级 JavaScript 方案:
// ✅ 推荐写法:支持 HTTPS、路径精准继承、避免双斜杠
const targetSites = ["site1.com", "site2.com", "site3.com"];
const randomSite = targetSites[Math.floor(Math.random() * targetSites.length)];
const newPathname = window.location.pathname || "/";
const redirectUrl = `https://${randomSite}${newPathname}`;
// 开发时建议先 console.log 验证,上线前取消注释下一行
console.log("Redirecting to:", redirectUrl);
// window.location.href = redirectUrl;
✅ 关键说明与最佳实践:
-
强制 HTTPS:使用
https://而非http://,避免混合内容警告及现代浏览器拦截; -
路径健壮性:显式处理
window.location.pathname为空的情况(如根路径/),防止生成site.com(缺/); -
调试友好:上线前务必注释掉
window.location.href = ...,先用console.log验证跳转逻辑与 URL 拼接是否正确; -
SEO 与用户体验注意:纯前端重定向对搜索引擎不友好(无法传递 301 状态码),且用户可能看到白屏延迟。强烈建议优先采用服务端方案(如 Nginx 的
return 301 https://$upstream$request_uri;配合 upstream 随机负载); -
扩展性提示:如需按权重分配(如 site1 占 50%,其余各 25%),可改用加权随机算法,而非等概率
Math.random()。
该方案简洁、零依赖、兼容所有现代浏览器,适用于快速验证或临时分流场景,但请始终将其视为服务端重定向的补充而非替代。











