PHP重定向后页面不渲染,地址栏正确仅显‘1’求解决
问题分析与解决方案
核心问题
你代码里的注释行存在意外输出:
//var_dump($host.$newurl)."<br>";
虽然var_dump被注释了,但后面的)."<br>"会被PHP解析为布尔值true的字符串形式(也就是"1"),这部分输出会在header之前发送,导致浏览器接收到了内容,无法正常触发跳转的渲染逻辑——地址栏URL是浏览器自动跳转后的结果,但页面已经提前收到了输出内容,所以只显示1。刷新时没有了这次意外输出,跳转就正常生效了。
修复步骤
清理意外输出的代码
把那条注释行彻底删除或者修正:// 要么完全删掉这条行,要么注释整行 // var_dump($host.$newurl)."<br>";或者改成正确的多行注释格式:
/* var_dump($host.$newurl)."<br>"; */确保Header输出前无任何内容
- 检查PHP文件开头
<?php标签之前,不能有任何空格、换行或HTML字符。 - 如果代码前有其他潜在输出(比如警告信息),可以开启输出缓冲避免冲突:
ob_start(); // 在代码最顶部添加 $host = "https://example.org/get.php?"; $newurl = file_get_contents($url); $newurl = substr($newurl,stripos($newurl,"who")); $newurl = substr($newurl,0,stripos($newurl,"</")); ob_clean(); // 清空缓冲,确保没有残留输出 header("Location: " . $host.$newurl); exit();
- 检查PHP文件开头
增强错误处理(可选)
避免file_get_contents因网络问题输出警告信息,可以添加错误抑制或异常处理:$newurl = @file_get_contents($url); // @抑制警告 if($newurl === false) { // 处理获取失败的情况,比如输出错误提示 die("Failed to fetch content"); }
内容的提问来源于stack exchange,提问作者Milk Round
相关产品推荐
相关产品推荐

