软404错误:PHP未发送404头

软404错误:PHP未发送404头,php,apache,http-status-code-404,Php,Apache,Http Status Code 404,我有一个php脚本,当在数据库中找不到页面时,我发送http头404notfound,而php发送http 200。谷歌网站管理员工具显示它是一个软404错误 <?php if (mysql_num_rows($rs_press) == 0) { header("HTTP/1.1 404 Not Found"); include('404.shtml'); exit; } ?> GMT中页面的HTTP响应非常奇怪,显示HTTP 200 OK。为什么

我有一个php脚本,当在数据库中找不到页面时,我发送http头
404notfound
,而php发送http 200。谷歌网站管理员工具显示它是一个软404错误

<?php 
if (mysql_num_rows($rs_press) == 0) {

    header("HTTP/1.1 404 Not Found");
    include('404.shtml');
    exit;

}
?>

GMT中页面的HTTP响应非常奇怪,显示HTTP 200 OK。为什么PHP发送200而不是404错误,因为这很奇怪

if代码工作正常,但只有404头没有发送。这是页面的输出

我怎么修理? 我在一台专用服务器上运行PHP 5.6/Apache,Smarty启用了SSL

PHP实际上有3个参数:

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
尝试将代码更改为:

<?php 
if (mysql_num_rows($rs_press) == 0) {

    header("HTTP/1.1 404 Not Found", true, 404);
    include('404.shtml');
    exit;

}
?>


或者,您可以尝试使用该函数。

是否访问if子句?谢谢,我尝试了,http\u response\u code()和更高版本都不起作用。如果我去掉include(404.shml),页面是空白的。@pbu我刚刚在本地服务器上测试了与上面相同的header()调用,它确实返回了404头。当你删除包含时,它会给你一个404标题吗?当我删除包含时,它会显示白色空白页。可能在..@pbu之前发送了头。是的,但是在HTTP头中,当您删除包含时是否返回404?我不确定确切的问题是什么。它在https上的行为不应该有任何不同。我会检查您的apache日志和php日志,看看是否有任何错误或警告消息。如果您在日志中看到一些有趣的内容,您可以将其添加到您的问题中,我将尝试帮助解决该问题。