【问题标题】:Correct way to display 404 page in PHP?在 PHP 中显示 404 页面的正确方法?
【发布时间】:2015-12-30 23:41:07
【问题描述】:

因此,目前当用户加载不存在的页面或出现问题时 - 我在 PHP 中使用 header 将用户重定向到 404 页面:

header('Location: www.website.com/404'); //This is simplified intentionally

此页面显示一个 404 图标,带有返回主页的链接,以及一些其他信息

最近在 Google 网站管理员工具中,我收到了一些消息,说我没有正确返回 404 页面。

显示 404 页面时我应该返回 http_response_code 吗?还是我应该以不同的方式处理 404?

【问题讨论】:

  • 不要那样做。重定向将浏览器发送到一个新页面,然后该页面将收到200 OK 响应。您需要输出一个实际的 404 状态代码作为错误页面的一部分。因此,您无需重定向,而是直接执行header('http/1.1 404 not found'); echo 'not found'
  • 你应该使用.htaccess,或者将页面重定向到301或302重定向

标签: php html http-status-code-404


【解决方案1】:

你可以使用这个......你需要在你的根文件夹上创建 .htaccess

.htaccess

Redirect 301 /index.html http://example.com/newdirectory/

【讨论】:

    【解决方案2】:

    任何互联网爬虫/蜘蛛或工具都有 404 状态代码未找到,因此您最好输出状态代码,以便知道页面是什么

    你可以通过输出这样的原始标题来做到这一点

    <?php
    if(!authorized){
      header("HTTP/1.0 404 Not Found");
      header("Location: http://www.website.com/404");
    }
    echo "*OUTPUT*";
    ?>
    

    但仅此一项就会导致安全问题,因为其余页面输出正在输出并且仍在执行:

    $ curl http://localhost/stackoverflow/404.php
    *OUTPUT*
    

    所以你应该重定向后退出,所以代码是这样的:

    <?php
    if(!authorized){
      header("HTTP/1.0 404 Not Found");
      header("Location: http://www.website.com/404");
      exit;
    }
    echo "*OUTPUT*";
    ?>
    

    现在它会在重定向后停止执行

    $ curl http://localhost/stackoverflow/404.php
    $
    

    为了更安全,请使用 htaccess。

    【讨论】:

      【解决方案3】:

      htaccess 404 错误代码

      设置完 404 页面后,您只需将网址不正确的访问者发送到此页面即可。为此,只需将以下行添加到您的 .htaccess 文件中:

      错误文档 404 /404.php

      大多数情况下,.htaccess 文件将位于您服务器上的主根 public_html 文件夹中。这可能会发生变化,例如,如果您从 public_html 中的特定文件夹运行您的网站或博客。

      或者,您可以将 404 错误模板放置在文件夹中的任意位置。例如,您可以将所有错误消息放在名为 errormessages 的文件夹中,将 404 错误引用到页面的 url。

      ErrorDocument 404 /errormessages/404.php

      仅此而已。

      现在,当访问者在您的网站上查看不正确的网址时,他们会看到您的自定义 404 错误消息。这很好解释 here.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        • 2016-06-28
        • 2018-08-26
        • 1970-01-01
        相关资源
        最近更新 更多