PHP实现页面跳转最常用且推荐的方法是使用header()函数发送Location头,必须在任何HTML输出前调用并配合exit终止脚本,否则会报“headers already sent”错误;还可通过Refresh头实现延迟跳转,或在无法控制输出时退而使用JavaScript或meta标签跳转。

在 HTML 的 <head> 中使用 PHP 实现页面跳转,不能直接用 HTML 的 <meta> 或 JavaScript 跳转来“加 PHP 标签”,而是要利用 PHP 的 HTTP 响应头(Header) 功能,在页面输出任何内容之前,用 header() 函数发送 Location 头,触发浏览器重定向。
关键点:
✅ 必须在任何 HTML 输出(包括空格、换行、<!DOCTYPE>)之前执行;
❌ 不能在 <head> 标签内部写 <?php header(...) ?> 然后期望它“生效”,因为此时可能已隐式输出;
⚠️ header() 是服务器端行为,不是往 HTML 里“加标签”。
1. 正确写法:PHP 在最顶部执行跳转
<?php
// 必须放在整个文件最开头,前面不能有任何输出(包括空行、BOM、echo、HTML)
header('Location: https://example.com/login.php');
exit; // 跳转后立即终止脚本,防止后续代码执行
?>✅ 这段代码不依赖
<head>,也不需要放在<head>里。它在 HTTP 响应头中设置重定向指令,浏览器收到后自动跳转。
2. 如果你必须在 HTML 结构中动态控制跳转(比如带条件)
确保 PHP 逻辑完全前置,例如:
<?php
$user_logged_in = false;
if (!$user_logged_in) {
header('Location: /login.php');
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>会员中心</title>
<!-- 此处不会再执行,因为未登录时上面已跳转并 exit -->
</head>
<body>
<h1>欢迎回来</h1>
</body>
</html>3. 常见错误 & 如何避免
-
❌ 错误:在
<head>里写:立即学习“PHP免费学习笔记(深入)”;
<head> <?php header('Location: ...'); ?> </head>→ 报错
Warning: Cannot modify header information - headers already sent,因为<head>前已有 HTML 开始符或空白。 -
✅ 正确做法:把所有
header()调用放在<!DOCTYPE>之前,且确保:- 文件保存为 UTF-8 无 BOM 格式;
-
.php文件开头没有空格、空行、中文注释(如<!-- 注释 -->不行,那是 HTML); - 不要
echo、print、var_dump任何东西在header()之前。
4. 替代方案(仅当无法控制输出顺序时)
如果真没法保证前置(如被框架/模板限制),可用 HTML meta 刷新(非 PHP Header,但能实现跳转):
<head> <meta http-equiv="refresh" content="0;url=https://example.com/login.php"> </head>
⚠️ 注意:这不是 PHP header(),不安全(可被禁用)、不即时(有延迟)、SEO 不友好,仅作备用。
PHP 的 header() 跳转本质是发 HTTP 响应头,和 <head> 里的 HTML 标签无关。核心就一条:早于一切输出执行,然后 exit。



















