【问题标题】:how to create page 404 error in custom PHP MVC?如何在自定义 PHP MVC 中创建页面 404 错误?
【发布时间】:2021-02-07 03:46:20
【问题描述】:

在我的自定义 PHP MVC 中,如何将错误页面重定向到 .htaccesss 中的 page404?比如example.com/controller/method,当控制器或方法不存在时,它必须重定向到page404,但我不知道该怎么做。

在 .htaccess 脚本中,我使用过 ErrorDocument 404 /page404.php page404 在根目录中,我把它放在里面 example.com/index/page404,但它不起作用。我该如何解决这个问题?

【问题讨论】:

  • 你可以在路由代码上做,你只需要检查url路由是否指向你的函数或路由数组
  • 使用您的路由器。你试过什么?
  • 在我的自定义系统中,我有一个 front controller,它会进行一些初始检查、解析和清理任何请求数据并设置要注入的数据负载等。在这里,我有一个检查服务如果路由有效并且是否有任何预期的数据。如果不是,我将响应代码设置为 404(或任何相关),然后加载我丢失的页面/丢失的消息(取决于它是 api 调用还是网页请求)
  • @Jerson 我已经做到了,没有问题,但我想通过.htaccess 来做,因为当我使用简单路由时,谷歌索引找到我的page404作为站点地图页面并抛出错误关于它的格式
  • @jibsteroos 我在上面提到

标签: php .htaccess redirect http-status-code-404


【解决方案1】:

你可以在你分析过路由格式的地方,检查那个控制器中的这个方法是否存在,如果没有方法或控制器,把它重定向到你的404页面。

控制器示例:

if (file_exists($controller . '.php')) {
   // Controller does exist
} else {
   header("Location: {path_of_views}/404.php");
}

方法示例:

if (method_exists($controller, $methodName)) {
   // Method does exist
} else {
    header("Location: {path_of_views}/404.php");
}

更新:

ErrorDocument 添加到您的 .htaccess:

ErrorDocument 404 http://www.example.com/error.html

您可以在link 中阅读更多内容。

【讨论】:

  • 我已经完成了,没有问题,但我想通过 .htaccess 执行此操作,因为当我使用简单路由时,谷歌索引发现我的 page404 作为站点地图页面并抛出关于它的格式
  • 为什么要重定向它,否则你可以包含整个 404page html 以避免谷歌索引 url
【解决方案2】:

您可以使用 PHP 中的路由代码来实现。如果您仍然想使用 .htaccess 进行此操作,则应首先检查 apache 配置并将其设置为目录上的“Allowoverride All”以授权 .htaccess 文件。

【讨论】:

  • 我已将其作为回复发送给您
  • 你能访问apache日志吗(假设你使用apache)?当您尝试访问 404 页面时会发生什么?
  • 不幸的是,我不知道我是怎么做到的
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2014-01-30
  • 1970-01-01
相关资源
最近更新 更多