PHP页面重定向问题-无法修改标题信息

PHP页面重定向问题-无法修改标题信息,php,redirect,error-handling,http-status-code-301,Php,Redirect,Error Handling,Http Status Code 301,我有一个显示各种元素的页面,即使它从数据库中调用的id不存在或已被删除(这会引发各种难看的错误,搜索引擎会继续列出不存在的页面) 如果$id不存在,是否可以修改下面显示的页面代码的第一部分以发送404(或者至少发送到具有404头的projecterror.php)?非常感谢 <?php include_once("includes/linkmysql.php"); $adda=$_GET['a']; $cont=$_GET['c']; $select="SELECT * FROM pr

我有一个显示各种元素的页面,即使它从数据库中调用的id不存在或已被删除(这会引发各种难看的错误,搜索引擎会继续列出不存在的页面)

如果$id不存在,是否可以修改下面显示的页面代码的第一部分以发送404(或者至少发送到具有404头的projecterror.php)?非常感谢

<?php
include_once("includes/linkmysql.php");
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'";
$qselect = mysql_query($select);
while ($row = mysql_fetch_array($qselect)) { 
第22行和第23行是两个标题行,如下所示:

header("HTTP/1.1 301 Moved Permanently");
header( 'Location: http://examplesite.domain/errorpage' ) ;

发送任何要查看的内容之前(浏览器中的文本)。 检查您的模型id是否有效。 如果id无效,请重定向到错误页面

header("HTTP/1.1 301 Moved Permanently");
header( 'Location: http://examplesite.domain/errorpage' ) ;

我有更简单的解决方案给你-它很简单!只需在php源代码的最开始添加以下命令:

ob_start();
这将开始缓冲输出,这样在PHP脚本结束之前(或手动刷新缓冲区之前),不会真正输出任何内容,并且在此之前不会发送任何头文件!
因此您不需要重新组织代码,只需在代码的开头添加这一行即可:-)

在使用php header()重定向之前,不应将任何内容发送到浏览器。如果已经发送了头,您可以尝试javascript重定向

if( mysql_num_rows( $qselect ) === 0 )
{
   echo "<script type='text/javascript'>window.location.href='{http://examplesite.domain/errorpage}'</script>";
   exit;
}
if(mysql\u num\u行($qselect)==0)
{
echo“window.location.href=”{http://examplesite.domain/errorpage}'";
出口
}

但我不确定javascript重定向是否对搜索引擎友好

您在放入标题之前发送了一些文本。在发送任何视图之前,这些内容都会出现。(浏览器中的任何内容)文本在哪里?我解不出来…这是你的整页代码吗?或者部分codeproject.php是主页,上面有这样的内容(header1.php是上面写的代码):
我想包括一次(“header1.php”);正在发送标题和数据。做得很好-这完全符合预期,非常感谢!工作得很好!。谢谢
ob_start();
if( mysql_num_rows( $qselect ) === 0 )
{
   echo "<script type='text/javascript'>window.location.href='{http://examplesite.domain/errorpage}'</script>";
   exit;
}