4

我想知道是否有可能使apache服务器从header() 函数中设置的错误代码自动重定向到其默认错误页面。

假设我有我的 page.php,这个页面有这个:

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

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

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

4

3 回答 3

1

如果我没记错的话,您可以在 httpd.conf 中将 Apache 配置为使用特定的 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>
于 2012-11-04T01:36:46.033 回答
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" );
}
于 2012-11-04T01:39:34.037 回答
0

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

这使您可以“决定”谁获得该页面以及谁跳出。当然,如果他们的 Web 客户端中有“nofollow”指令,它就会失败。

我不知道有一种方法可以在那里有一个 php 页面,并且在检查有问题的页面后让 apache 决定 404。它已经放弃了对 PHP 的控制。因此,您可能需要通过偏转到不存在的文件来将请求推送回 apache。您甚至可以变得有趣并重定向到相同的文件名……但以 .html 而不是 php 结尾,如果不存在则 Poof 您会遇到网络浏览器的 404 错误。

于 2017-08-12T22:55:26.490 回答