【问题标题】:Show error 404 page using Php [duplicate]使用 PHP 显示错误 404 页面 [重复]
【发布时间】:2013-06-06 04:48:06
【问题描述】:

我创建了一个自定义错误 404 页面,并使用 .htaccess 来使用它: 错误文档 404 “error_page.php”

现在的问题是我有一个 profile.php 页面,我可以在其中显示用户个人资料。如果 URL 中提到的用户名不存在,那么我会重定向到 index.php。相反,我想用我的自定义错误页面显示错误 404 页面。这足以有效地做到这一点吗?

header("HTTP/1.1 404 Not Found");
include 'error_page.php';
exit();

谢谢。

【问题讨论】:

  • 这将与 Apache 的错误页面具有相同的效果,但是不会在错误日志中进行日志条目。这可能与您相关,也可能不相关。
  • 我希望获得与用户访问不存在的页面时相同的效果。我怎样才能做到这一点?即,我怎样才能在错误日志中找到它?我认为显示标题也会在错误日志中添加一个条目。

标签: php http-status-code-404 custom-error-pages


【解决方案1】:

它应该可以工作,但您也可以重定向到错误页面(但您会丢失当前 URL)。

header('Location: /error_page.php');
die();

编辑:如果你真的想要它在错误日志中,一个便宜(和丑陋)的方法是重定向到一个不存在的页面:

header('Location: /404'.$_SERVER['REQUEST_URI']);
die();

这样您将获得带有 /404/path/to/profile.php?userid=9999 的日志,以便您了解所请求的内容。

【讨论】:

  • 我知道这一点,但这不会给搜索引擎带来错误 404。而且用户也不知道他在 url 中实际输入了什么。
  • 如果你想让搜索引擎知道这是一个 404,你必须在你的 error_page.php 文件的顶部放置header("HTTP/1.1 404 Not Found");
  • 如果你真的希望它出现在错误日志中,首选的方法是使用error_log function
  • 那么我上面提供的代码可以吗?我应该添加error_log函数吗?
  • 根据我的经验,error_log() 似乎工作/不工作基于 php 的调用方式(SAPI、CGI 等)并最终在错误的位置(系统日志、事件日志)进行记录,具体取决于在您的设置上。此外,除非您非常小心地使您的条目与 apache 的完全一样,否则日志记录格式将与真正的 404 不同。
猜你喜欢
  • 2021-12-11
  • 2013-08-13
  • 1970-01-01
  • 2016-05-31
  • 2010-10-19
  • 1970-01-01
  • 2014-11-10
  • 2012-11-22
相关资源
最近更新 更多