我的网站主目录中有一个404.php文件,我使用header('Location: 404.php');
一段时间,直到有人说你应该使用header('HTTP/1.0 404 Not Found');
。所以我用它替换了它,然后将ErrorDocument 404 /404.php
添加到我的apache配置文件中并重新启动服务器,但它不起作用。
我尝试了不同的变体,包括ErrorDocument 404 404.php
和ErrorDocument 404 mywebite/404.php
,但无济于事。
我的意思是不起作用的是早先使用header('Location: 404.php');
它会重定向到404.php文件但是当我用header('HTTP/1.0 404 Not Found');
替换它时,它似乎只是跳过了行什么都不做它肯定不是重定向。我调用重定向的原因是因为如果无法识别$ _GET标头值,页面应为404.
答案 0 :(得分:73)
不,它可能确实在起作用。它只是不容易看到。而不是只是使用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.
答案 1 :(得分:25)
您可以尝试指定HTTP响应代码using an optional parameter:
header('HTTP/1.0 404 Not Found', true, 404);
答案 2 :(得分:7)
使用这些代码找不到404。
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
readfile('404missing.html');
exit();
}
此处404missing.html是您未找到的设计页面。 (它可以是.html或.php)
答案 3 :(得分: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应该放在同一个目录中[在这种情况下]
答案 4 :(得分:2)
另一个原因可能是您在此重定向之前添加了任何html标记。 仔细看,您可能会在此行之前留下DOCTYPE或任何HTML注释。
答案 5 :(得分:0)
对于PHP> = 5.4,您可以使用更简单的函数,例如:http_response_code(404);
PHP Documentation
答案 6 :(得分:-1)
写完后
header('HTTP/1.0 404 Not Found');
为您网站上任何不存在的页面添加一个标题。它确实有效。
header("Location: http://yoursite/nowhere");
die;