在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页面?
答案 0 :(得分:4)
此处的问题是,除非URL处理管道找不到URL指向的文件(或处理程序),否则不会处理由ErrorDocument
表示的自定义错误文档。在你的情况下,处理管道确实找到一个文件,你的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();
答案 1 :(得分:0)
您只需向浏览器发送404代码,然后尝试重定向到您的错误404页面
header('location: http://youdomain.com/404.html'); exit;