如果不存在页面#PHP,则返回404

时间:2010-10-13 14:54:34

标签: php mysql apache http-headers http-status-code-404

我有一个动态审核系统,每页显示30条评论,在达到30条评论时,它会被分页。所以我有

这样的页面
  

/评论/城市/波士顿/

     

/评论/城市/波士顿/页/ 2 /

     

/评论/城市/波士顿/页/ 3 /

     

依旧等等

不幸的是,Google似乎正在通过看似推理的内容来索引页面 - 例如

  

/评论/城市/波士顿/页/ 65 /

此页面绝对不存在,我想通知Google。目前它显示评论页面但没有评论。我无法想象这对SEO非常有益。那么,如果首先检查我的MySQL查询的结果数量,并且如果没有结果返回404并将它们转发到主页或其他页面,我想要做什么。

目前,这就是我所拥有的。

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    header("Location: /index.php");
    exit;
}

我是在正确的轨道上吗?

3 个答案:

答案 0 :(得分:4)

重定向是状态代码,就像404一样。您不能拥有两个状态代码。

您需要输出404状态,并同时显示响应正文(=错误页面)。

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    .... output full HTML structure here .....
    exit;
}

答案 1 :(得分:0)

您不能同时发送404状态代码并执行重定向(通常为3xx status code)。您只能执行以下操作之一:发送404状态代码,错误文档通过重定向进行响应。

答案 2 :(得分:0)

正如Pekka建议的那样,最好的选择是进行404状态,然后将404页面代码放在其后。 如果您只是301(重定向)页面,那么搜索引擎优化是不好的做法,因为搜索引擎将继续访问该页面,以查看重定向是否仍在那里。