在指向自定义404错误页面时,页面未返回404

时间:2013-08-27 04:28:19

标签: php .htaccess redirect http-status-code-404

我在我的网站上创建了一个名为file-not-found.php 的自定义404页面。我将 .htaccess 文件更改为

ErrorDocument 404 /file-not-found.php

这工作完全正常,我还使用Google网站管理员工具获取了一个不存在的网址,并显示正确的404错误。

我在特定时间段后删除了我的文章。所以我决定做的是如果用户要查找已移除的内容,请将用户的文件名为“找不到状态代码”的用户重定向。所以在文章页面中我写了以下代码

<?php 
if(mysql_num_rows($sql)!=0){
//display content
}else{
//redirect to custom error page
header('HTTP/1.0 404 Not Found');
header('location:file-not-found.php');
exit();
}
?>

现在,如果用户请求删除的内容,则会重定向到自定义404页面。

但问题是,如果我从Google网站管理员工具中获取已删除的内容链接,则会返回状态200而不是404.

那么问题出在哪里请帮我纠正这个问题。谢谢。

1 个答案:

答案 0 :(得分:1)

  1. file-not-found.php文件应包含header('HTTP/1.0 404 Not Found');
  2. header('HTTP/1.0 404 Not Found');之前删除header('Location:file-not-found.php');,因为如果永久移动,则重定向代码应为301,或者302进行正常重定向。 source