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

时间:2012-07-16 09:54:10

标签: php html apache

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

我想要正确处理404错误,因此我在.htaccess文件中有ErrorDocument 404 /404.php,我想向搜索引擎header("HTTP/1.1 404 Not Found")发送正确的标题以忘记该页面,我想将访问者重定向到/index.php?code=404,以便我可以告诉他他所寻找的内容不可用,但仍然将他留在网站上。

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

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

我该怎么办?

3 个答案:

答案 0 :(得分:5)

尝试这样的事情:

<?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响应,然后被正确地重定向到了另一个页面。

答案 1 :(得分:3)

另一个建议我建议修改.htaccess来处理404.

添加如下内容:

ErrorDocument 404 /404.php

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

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

ErrorDocument 404 /errors/404.php

当然可以很好地处理事情和其他错误消息。

答案 2 :(得分:0)

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