记录一次帮用户解决网站异常 301 跳转的问题

代码笔记1周前更新
150 0

最近有位用户向我反馈,说他的网站页面总是跳转到另一个网址,无论怎么修改跳转地址、清除缓存都无效。他尝试了各种方式,甚至修改了 index.html 中的跳转语句,也依旧没有效果。

记录一次帮用户解决网站异常 301 跳转的问题

记录一次帮用户解决网站异常 301 跳转的问题

我觉得这可能不是前端文件的问题,于是开始帮他一步步排查,最后定位到了问题的根源:Nginx 配置中被设置了强制的 301 永久跳转规则


📍 用户初始设置

用户的 index.html 文件中,使用了如下的跳转语句:

<meta http-equiv="Refresh" content="0;url=跳转网址" />

这是前端常用的 HTML 跳转方式,意思是页面加载后 0 秒跳转到指定网址。但奇怪的是,即使他更换了跳转网址、刷新浏览器、清空缓存,网页仍然总是跳到同一个固定页面


🔍 排查过程

我们先排除了以下可能:

  • ✅ meta 标签是否生效:用户修改了内容无效,说明跳转不是前端控制

  • ✅ 本地浏览器缓存:用户尝试清除缓存,仍旧被强制跳转

  • ✅ CDN 缓存:未使用 CDN,排除

  • ✅ HTML 文件真实内容:index.html 确实已更新,跳转语句无误

于是我建议他登录宝塔面板查看站点配置,很快就在 Nginx 配置的“伪静态”或“重定向规则”中发现了以下内容:

#REWRITE-START
    if ($host ~ '^域名'){
        return 301 你要跳转的域名;
    }

    if ($host ~ '^域名'){
        return 301 你要跳转的域名;
    }

    if ($host ~ '^域名'){
        return 301 你要跳转的域名;
    }
#REWRITE-END

这是一个典型的 Nginx 重定向规则。return 301 表示永久重定向,也就是说,浏览器一旦记录了这个跳转行为,即使后续修改配置或清除 HTML 文件,也可能仍然继续跳转,直到缓存过期或被手动清除。


✅ 解决方案

  1. 登录宝塔面板;

  2. 打开网站设置 → 配置文件;

  3. 查找是否存在 return 301 类似语句;

  4. 删除这些重定向规则或根据实际需求修改;

  5. 重载 Nginx 配置;

  6. 提醒用户使用 Ctrl + F5 强刷页面,或在浏览器隐私窗口中访问测试。

问题顺利解决,用户也成功恢复了对跳转的控制。


🧠 总结建议

  • 301 跳转具有强缓存性,一旦配置,不容易被前端代码覆盖;

  • 尽量避免在 Nginx 配置中添加多余的 301 跳转规则,除非明确知道其用途;

  • 建议优先使用 HTML 或 JavaScript 控制页面跳转,Nginx 跳转应慎用;

  • 宝塔面板中的“伪静态”和“重定向”配置要定期检查,防止被误改或恶意修改;

  • 遇到“跳转改不掉”的问题,优先怀疑后端或 Nginx 层面的重写规则。

© 版权声明

暂无评论

本文暂时没有评论,来添加一个吧(●'◡'●)