如何从使用header()函数设置的错误代码服务器重定向到默认错误页面?

时间:2012-11-04 01:34:13

标签: php apache redirect error-handling http-status-code-404

我想知道是否有可能将 apache 服务器自动重定向到默认错误页面标头中设置的错误代码()功能

让我说我有我的page.php,这个页面有这个:

<?php header("HTTP/1.1 404 Not Found"); ?>

浏览器(使用chrome中的web开发工具)显示响应已发送但未重定向到其默认错误页面,可能是因为该文件仍然存在。

我想要做的是,将我自己的特定文件重定向到默认错误页面,但保持在浏览器中显示的确切URL,与输入不存在的URL时服务器执行的操作相同

3 个答案:

答案 0 :(得分:1)

如果我没记错的话,您可以将Apache配置为使用httpd.conf中的特定404页面,它会保持URL相同,但会传递404错误页面:

ErrorDocument 404 /404.php

在/404.php中,只需输入:

<html>
    <head>
        <title>Object not found</title>
    </head>
    <body>
        <h1>Object not found</h1>
        <p>The object <?php echo($_SERVER['PHP_SELF']); ?> could not be found on this server.</p>
    </body>
</html>

答案 1 :(得分:0)

要获取HTTP响应代码,您可以使用http_response_code()功能。例如:

if( http_response_code() == 404 )
{
    // Redirect to your valid custom page
    header("Location: http://www.mypage.com/page_not_found.php" );
}

答案 2 :(得分:0)

重定向到不存在的页面。然后你得到404创建的apache,因为你确实登陆了一个不存在的页面。

这允许您“决定”谁获得该页面以及谁反弹。当然,如果他们的网络客户端有一个“nofollow”指令,它就会失败。

我不知道两者都有办法在那里有一个php页面并且在检查有问题的页面后让apache决定404。它已经放弃了对PHP的控制。因此,您可能需要通过转向不存在的文件将请求推回到apache。你甚至可以搞笑并重定向到相同的文件名...但是以.html而不是php结束它,如果不存在Poof你的网页浏览器有404错误。