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

Header Location引发404错误,登录调用header函数异常求助

解决Header Location跳转404的问题

看来你遇到了header跳转404的坑,我来帮你捋捋问题所在——大概率是路径没写对,毕竟你的登录处理文件在includes子目录里,跳转的时候得找准首页的位置才行。

常见问题及修复方案

1. 相对路径指向错误

如果你的代码里写的是header("Location: index.php"),那程序会从includes/login.inc.php所在的目录去找index.php,也就是includes/index.php,但这个文件根本不存在,自然就报404了。

正确的写法有两种:

  • 用根相对路径(从网站根目录htdocs开始,以/开头):
header("Location: /Website/index.php");

要是你的Website目录直接是本地站点根目录(访问时用localhost就能打开首页,不用加/Website),那可以简化成:

header("Location: /index.php");
  • 或者直接用绝对URL:
header("Location: http://localhost/Website/index.php");

2. 跳转前有提前输出

另外要注意,header()函数有个严格要求:必须在任何输出内容之前调用。哪怕是PHP标签前多了个空格、换行,或者在header之前用了echo/print,甚至包含的dbh.inc.php里有输出,都会导致header无法正常发送,间接引发跳转异常。

检查下你的文件:

  • 确保<?php起始标签前面没有任何空格、换行或字符
  • 调用header()之前,不要有任何echo、HTML代码输出
  • 检查dbh.inc.php里有没有提前输出内容(比如调试用的echo)

3. 别忘了加exit()

跳转成功后一定要加上exit();或者die();,防止后续代码继续执行,不然可能会出现跳转后又执行其他逻辑的问题,甚至影响跳转效果。

修正后的示例代码

<?php
session_start();

if (isset($_POST['submit'])) {
    include 'dbh.inc.php';
    
    $gebr = mysqli_real_escape_string($conn, $_POST['gebr']);
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
    
    // 这里补上你的登录验证逻辑...
    
    // 验证通过后跳转,用根相对路径
    header("Location: /Website/index.php");
    exit(); // 必须加这个,终止后续代码执行
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:23:48