2

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

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

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

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

我应该怎么办?

4

3 回答 3

5

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

添加类似的东西:

ErrorDocument 404 /404.php

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

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

ErrorDocument 404 /errors/404.php

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

于 2013-07-14T15:14:06.073 回答
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 响应,然后成功正确地重定向到了不同的页面。

于 2012-07-16T10:03:48.797 回答
0

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

于 2012-07-16T10:02:26.880 回答