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

kmbjn2e3  于 2022-11-16  发布在  Apache
关注(0)|答案(3)|浏览(159)

我有一个动态的评论系统,每页显示30条评论,当达到30条评论时,它会被分页。
/评论/城市/波士顿/
/评论/城市/波士顿/第/2页/
/评论/城市/波士顿/第/3页/
等等等等
不幸的是,谷歌似乎是通过什么似乎推理索引页面-如
/评论/城市/波士顿/第/65页/
这个页面绝对不存在,我想通知谷歌。目前它显示了一个评论页面,但没有评论。我不能想象这是非常好的搜索引擎优化。所以,我试图做的,如果首先检查#的结果从我的MySQL查询,如果没有结果返回404,并将其转发到主页或其他页面。
这就是我目前所拥有的。

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

我的思路对吗?

kognpnkq

kognpnkq1#

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

if (!$validRevQuery) {
    http_response_code(404);
    // output full HTML right here, like include '404.html'; or whatever
    exit;
}

**请注意,您不能在此处使用重定向。**重定向是一个状态代码,就像404一样。您不能有两个状态代码。

zyfwsgd6

zyfwsgd62#

您不能同时发送404状态代码和重定向(通常为3xx状态代码)。您只能执行其中一项操作:发送404状态代码和错误文档 * 或 * 以重定向响应。

htzpubme

htzpubme3#

正如Pekka所建议的,最好的选择是做一个404状态,然后把你的404页面代码放在那之后。如果你只是301(重定向)页面,这对SEO来说是不好的做法,因为搜索引擎会继续访问页面,看看重定向是否仍然存在。

相关问题