header('HTTP / 1.0 404 Not Found');什么都不做

问题描述 投票:44回答:7

我在我的网站的主目录中有一个404.php文件,我使用header('Location: 404.php');一段时间,直到有人说你应该使用header('HTTP/1.0 404 Not Found');代替。所以我用它替换它然后添加:ErrorDocument 404 /404.php到我的apache配置文件并重新启动服务器但它不起作用。

我尝试了不同的变化,包括ErrorDocument 404 404.phpErrorDocument 404 mywebite/404.php但无济于事。

我的意思是不起作用是早些时候使用header('Location: 404.php');它会重定向到404.php文件,但当我用header('HTTP/1.0 404 Not Found');替换它时,它似乎只是跳过线,没有做任何事情。它肯定不是重定向。我调用重定向的原因是因为如果无法识别$ _GET标头值,页面应为404。

php header http-status-code-404
7个回答
75
投票

不,它可能确实在起作用。它只是不容易看到。而不是只使用header调用,尝试这样做,然后包括404.php,然后调用die

您可以通过使用以下内容创建名为HTTP/1.0 404 Not Found的PHP文件来测试test.php的工作原理:

<?php

header("HTTP/1.0 404 Not Found");
echo "PHP continues.\n";
die();
echo "Not after a die, however.\n";

然后用curl -D /dev/stdout查看结果显示:

HTTP/1.0 404 Not Found
Date: Mon, 04 Apr 2011 03:39:06 GMT
Server: Apache
X-Powered-By: PHP/5.3.2
Content-Length: 14
Connection: close
Content-Type: text/html

PHP continues.

25
投票

您可以尝试指定HTTP响应代码using an optional parameter

header('HTTP/1.0 404 Not Found', true, 404);

7
投票

使用这些代码找不到404。

if(strstr($_SERVER['REQUEST_URI'],'index.php')){
  header('HTTP/1.0 404 Not Found');
  readfile('404missing.html');
  exit();
}

404missing.html是您未找到的设计页面。 (它可以是.html或.php)


4
投票

我想这会对你有所帮助

.htaccess的内容

ErrorDocument 404 /error.php ErrorDocument 400 /error.php ErrorDocument 401 /error.php ErrorDocument 403 /error.php ErrorDocument 405 /error.php ErrorDocument 406 /error.php ErrorDocument 409 /error.php ErrorDocument 413 /error.php ErrorDocument 414 /error.php ErrorDocument 500 /error.php ErrorDocument 501 /error.php

error.php和.htaccess应该放在同一个目录中[在这种情况下]


2
投票

另一个原因可能是您在此重定向之前添加了任何html标记。仔细看,您可能会在此行之前留下DOCTYPE或任何HTML注释。


0
投票

对于PHP> = 5.4,您可以使用更简单的函数:http_response_code(404); PHP Documentation


-1
投票

写完之后

header('HTTP/1.0 404 Not Found');

为您网站上任何不存在的页面添加一个标题。它确实有效。

header("Location: http://yoursite/nowhere");
die;
© www.soinside.com 2019 - 2024. All rights reserved.