处理404错误的最佳方法是重定向到主页


Best way to handle 404 error with redirect to homepage

我搜索了很多,读了很多,但仍然找不到实现目标的方法。现在我甚至认为这是不可能的。是吗?

我想正确处理404个错误,这样我在.htaccess文件中就有了ErrorDocument 404 /404.php,我想向搜索引擎header("HTTP/1.1 404 Not Found")发送正确的标题来忘记那个页面,我想将我的访问者重定向到/index.php?code=404,这样我就可以通知他他所找的内容不可用,但仍然让他留在网站上。

现在似乎一切都很好,直到我想重定向用户:然后服务器发出一条302消息,覆盖了我之前的404标头,所以虽然我可以将用户发送到所需的位置,但我仍然无法告诉搜索机器人地址错误。

如果我在标题行后面添加include("index.php?code=404"),它将不起作用,服务器会说该文件不存在。

我该怎么办?

试试这样的东西:

<?php
    header("HTTP/1.0 404 Not Found");
    echo '<html>
            <head>
                <meta http-equiv="Refresh" content="0;url=http://www.mysite.com/index.php?code=404" />
            </head><body></body>
          </html>';

?>

我使用的是meta重定向,因为否则您会收到一个错误,即标头已经发送。

我使用Fiddler在localhost上测试了这一点,得到了正确的404响应,然后成功地被正确重定向到了另一个页面。

我建议修改.htaccess以处理404。

添加类似以下内容:

ErrorDocument 404 /404.php

到你的.htaccess会很好地为你处理事情。

您可以将404错误模板放置在任何您想要的位置。例如,您可以将所有错误消息放在名为"错误"的文件夹中

ErrorDocument 404 /errors/404.php

处理得很好,当然还有其他错误消息。

您可以在没有代码参数的情况下将include("index.php")添加到404页面上吗;然后在index.php中包含一个部分,用于检查当前页面的URL。因此,如果页面URL包含404.html,请包含错误消息,否则正常显示主索引。