【发布时间】:2011-11-02 02:39:02
【问题描述】:
我正在尝试在 PHP 中抛出我自己的 404,具体取决于某些 GET 变量。但以下不起作用。我可以确认 pge 标头返回“404 状态代码”。 .htaccess 似乎没有正确重定向。 我错过了什么吗?
PHP 代码:
if(!$_GET['page']){
header('HTTP/1.0 404 Not Found');
}
.htaccess 代码:
ErrorDocument 404 /404.html
非常感谢!
【问题讨论】:
-
我猜 Apache 不会抛出 404 错误,因为该页面确实存在。也许你应该在 php 中添加一个重定向到 404 页面?
-
不要重定向到 404 错误页面,这会将其变成 200 请求。只需让 PHP 包含错误页面的内容即可。
-
@Marc 但是他已经用 404 状态码响应了,他不应该删除那部分。
-
@Andre 是的,但是要进行重定向,它必须是 301 错误代码。你不能输出 404 not found + 301 去别处。 Apache 不会进行重定向来提供 404 页面。这只是一个内部重写,它会转储指定 404 页面的内容,而无需进行重定向。
-
如果页面存在并且对网络可见,那么 404 是不合适的。由于您正在检查值并在值不合适时引发错误,因此 412 Precondition Failed 错误可能会更好。
标签: php .htaccess redirect http-status-code-404