1

在 PHP 中,我使用以下代码来指示找不到页面:

header("HTTP/1.0 404 Not Found");exit();

.htaccess文件中,我有以下行来处理 404 自定义文档:

ErrorDocument 404 /404.html

现在,当我发送 PHP 404 标头时,我希望它显示自404.html定义定义,.htaccess而是显示一条消息“此链接似乎已损坏”。因此它不会显示自定义 404 页面,如果我从中删除该行.htaccess仍然不会显示服务器的常规 404 页面,并且还会显示断开的链接消息。

那么,当我在 PHP 中发送标头时,如何让它显示 404 页面呢?

4

2 回答 2

4

ErrorDocument这里的问题是,除非 URL 处理管道找不到 URL 指向的文件(或处理程序),否则不会处理由 表示的自定义错误文档。在您的情况下,处理管道确实找到了一个文件,即您的 php 文件,因此它本身永远不会达到 404,因此ErrorDocument永远不会应用。

当 apache 使用 php 处理程序运行您的 php 文件,并且您的php 文件决定返回 404时,您不仅需要提供 404 响应代码,还需要提供 HTML 错误文档。您看不到默认的 apache 错误文档,因为 apache 从不认为请求是 404(它会将请求交给您的 php 文件)。所以你需要做这样的事情:

header("HTTP/1.0 404 Not Found");
include('404.html');
exit();
于 2013-04-06T08:05:33.817 回答
0

您只需向浏览器发送 404 代码尝试重定向到错误 404 页面

header('location: http://youdomain.com/404.html'); exit;
于 2013-04-05T22:43:25.443 回答