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
相关产品推荐
相关产品推荐

