CakePHP 3.X 中的自定义 404 页面

2024-05-12

我想为生产环境中出现的所有错误创建一个自定义 404 页面。例如,如果我收到缺少控制器或视图错误,那么它将重定向到http://example.com/404.html,另外在某些情况下我会故意重定向它http://example.com/404.html

在 CakePHP 2.x 的早期版本中,它是通过在 AppContoller.php 中添加以下操作来完成的

public function appError($error) {
    $this->redirect('/page-not-found.html',301,false);
} 

但它在 CakePHP 3.x 中不起作用,我想在 CakePHP 3.x 中复制相同的行为


不重定向

如果页面呈现 404,应采取的正确操作是渲染 404.

重定向到另一个页面会让用户感到困惑,特别是因为许多浏览器缓存 301 响应,导致原始 URL 无法访问。这也会影响例如搜索引擎作为静态文件404.html将有一个 200 响应代码(除非你修改你的网络服务器配置),所以它会说 404 但根本不是。

博客教程 http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/part-two.html所有开发人员在开始项目之前都应该这样做,它将引导您走向正确的方向:

public function view($id)
{
    $article = $this->Articles->get($id);
    $this->set(compact('article'));
}

表法get http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#getting-a-single-entity-by-primary-key返回单个实体对象或抛出异常:

如果 get 操作未找到任何结果,则会引发 Cake\Datasource\Exception\RecordNotFoundException。您可以自己捕获此异常,也可以允许 CakePHP 将其转换为 404 错误。

本示例中的控制器代码不需要任何“如果它不存在怎么办”处理,因为默认情况下如果记录不存在,则结果为 404。

更改 404 模板

如果您想更改 404 或 500 页面的外观更改模板文件 http://book.cakephp.org/3.0/en/development/errors.html#exception-renderer

对于所有 4xx 和 5xx 错误,分别使用模板文件 error400.ctp 和 error500.ctp。

错误模板是在你的申请中 https://github.com/cakephp/app/blob/master/src/Template/Error/error400.ctp,注意在生产模式下输出非常小 https://github.com/cakephp/app/blob/master/src/Template/Error/error400.ctp#L34-L41.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP 3.X 中的自定义 404 页面 的相关文章

  • CakePhp - 关联数据未保存(但主模型数据确实保存)

    所以 我在 CakePhp 中有一个使用 Formhelper 的表单 此表单中有两个关联模型 Booking 和 Guest 数据库表似乎设置正确 因为页面通过模型中的关联足够准确地填充了值 保存表单数据时 会保存预订信息 但不会保存宾客
  • Cake 无法连接到数据库

    我正在使用 Wamp 服务器 并尝试安装 CakePHP 2 0 0 但遇到了问题 我把 CakePHP 2 0 0 文件放在我的wamp服务器文件夹 www 进而 cake 文件夹 当我输入地址时http localhost cake在我
  • CakePHP 错误:无法配置会话,设置 session.auto_start 失败

    我收到此错误 Error CakeSessionException Unable to configure the session setting session auto start failed 我正在使用 Cakephp 2 2 4
  • cakephp render-false 操作仍然回显 html 模板

    对于控制器中不需要视图的操作 我将禁用布局和模板 如下所示 this gt autoRender false 一切都很好 然而 在同一操作中 我会回显 通过 或 失败 来表明我对结果的看法 问题是一堆文本也被回显 我的 失败 或 通过 在最
  • cakephp - 获取表名称及其列详细信息

    有谁知道如何从模型名称获取表名称 另外我想获取该模型 表名称的所有列名称及其类型 是否有可能获得给定型号名称的此类详细信息 Thanks 表名 要获取该表 请参阅 this gt Model gt table 或者检查类变量的模型 useT
  • CakePHP 总是让我退出

    最近我制作了三个蛋糕应用程序 这三个应用程序都有这个问题 配置大部分是库存的 我使用它作为会话选项 Configure write Session array defaults gt php cookie gt test 经过大量谷歌搜索后
  • CakePHP ajax 帖子不断返回 400 Bad Request

    我正在尝试使用 ajax post 来执行操作 GET 请求工作正常 但当我尝试 POST 时 我在 firebug 中看到 400 Bad Request 并且视图返回 黑洞 响应 这是 Jquery 请求 ajax url usermg
  • CakePHP:控制台命令中的自定义错误报告

    我们当前使用 CakePHP 2 4 7 和自定义错误处理程序 自定义错误处理程序适用于通过 HTTP 或 CronDispatcher 发出的每个请求 不幸的是 当向我们的控制台命令之一发出控制台请求时 错误处理程序被忽略 请参见以下示例
  • Cakephp 图像 - 无法确定 mimetype

    蛋糕PHP 2 3 我正在上传图像 但出现错误 Can not determine the mimetype Error An Internal Error Has Occurred 在我的模型上 这是我的 validation 的一部分
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • CakePHP 3.X 中的自定义 404 页面

    我想为生产环境中出现的所有错误创建一个自定义 404 页面 例如 如果我收到缺少控制器或视图错误 那么它将重定向到http example com 404 html 另外在某些情况下我会故意重定向它http example com 404
  • 登录后如何在其他页面控制器中找到我当前的用户ID?

    我计划在我的事件索引页面上设置权限 该权限只允许某些用户查看我添加事件时设置的权限 用户点击进入我的事件后 事件控制器将首先检查用户 ID 并检查事件数据库 该数据库控制用户可以查看其日历中的哪个事件 当用户创建事件并分享给其他用户时添加权
  • cakephp 3.0 如何使用值而不是 id 填充选择字段

    我一直在寻找以前的答案 但我找到的答案与旧的 cakephp 版本有关 我有两个表 杂志 和 问题 其中存在关系 问题 属于 杂志 问题表如下所示 public function initialize array config this g
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • 在 Bootstrap 中使用 CakePHP 时如何修改包装器 div 错误类

    我在用着Bootstrap 3 0RC1 with CakePHP 2 3 6 尝试利用那些漂亮的课程 例如has error and has warning for 验证状态 http getbootstrap com css forms
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • CakePHP 中没有模型的简单表单

    我正在尝试在产品页面中添加请求附加信息的表单 这是一个简单的表格 包含姓名 国家 地区 电子邮件和问题字段 我创立了这个tutorial http snook ca archives cakephp contact form cakephp
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安

随机推荐

  • 数据库不存在。确保名称输入正确

    为什么我会出现这个错误 如果您查看屏幕截图 您将看到数据库 仅当我连接到两个数据库引擎时才会发生这种情况 它仅检测下面数据库引擎中的数据库 而不检测突出显示的数据库 除了关闭应用程序并仅打开一个数据库引擎之外 还有其他方法可以使用我的数据库
  • 如何使用 EclipseLink 处理以 Oracle 类型作为输入或输出的 Oracle 存储过程调用

    我进行了概念验证 以了解使用 EclipseLink 调用存储过程的效率如何 我能够使用带有标量 原始数据类型 链接整数 varchar 等 的 EclispeLink 来调用 Oracle 存储过程 我想了解如何使用集合 Oracle 类
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • Nhibernate 出现 TransactionScope 错误 - DTC 事务预准备阶段失败 - 升级到 Nhibernate 3.0

    在事务 Scope Eg 中使用 Nhibernate 和 ADO Net 操作时 出现以下异常 Nhibernate 2 1 没问题 但现在升级到 3 0 会抛出错误 using var scope new TransactionScop
  • 我怎样才能强制Make一直执行一个菜谱

    当前的 Makefile 有这样的内容 target1 lib1 a lib2 a target2 lib1 a lib3 a target3 lib3 a lib1 a MAKE C sub dir all 我想更改此 Makefile
  • Geopandas 数据框指向多边形

    我有一个 geopandas 数据框 由 id 和由 2D 点填充的几何列组成 我想连接每个唯一 id 的点来创建一个多边形 以便我的新数据框将多边形作为其几何形状 我的代码目前看起来像这样 polygons geopandas GeoDa
  • Cocoa - 在另一个 xib 上显示 xib

    谁能告诉我如何 或指导我有关信息 在另一个 xib 笔尖 上显示 xib 笔尖 我希望如何放置它 以便我可以以编程方式将它移动到主笔尖 就像这样 这显然不起作用 void drawRect NSRect dirtyRect NSRect c
  • 如何多线程从列表中读取字典并输入数据库

    我正在尝试对以下代码进行多线程处理 但似乎无法使其正常工作 以下代码 其中我删除了大部分代码只是为了说明目的 目前运行顺利 但速度很慢 对于 3600 条推文的列表大约需要 5 分钟 import dataset import dateti
  • Heroku 上的 Python 入门 - 未找到 pg_config 可执行文件

    我一直在关注文档 直到安装requirements txt 文件 尝试安装第 6 行 psycopg2 2 5 3 时总是失败 这是消息 Downloading unpacking psycopg2 2 5 3 from r require
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • 在 System.Windows.Forms.RichTextBox 中禁用 VScrollbar 的绘制

    我有一个继承自 RichTextBox 的自定义控件 该控件能够 禁用 富文本编辑 我通过在 TextChanged 事件期间将 Rtf 属性设置为 text 属性来实现此目的 这就是我的代码的样子 private bool lockTex
  • 将文件从一个文件夹移动到 s3 中的另一个文件夹

    首先 我尝试将文件复制到其他文件夹中 但无法删除它 仅当文件复制到目标文件夹时 如何才能删除该文件 const s3Params Bucket bucket CopySource bucket objectkey Key processed
  • Python行、列、矩阵麻烦

    我正在编写一个带有给定的Python程序 matrix A B C D E F G H I 我正在尝试编写代码 以便可以定义每个值的坐标 这样如果我的命令是 get cooperative 矩阵中的任何值 它将打印出矩阵中的行和列 我很难定
  • Jetpack 在可滚动列中组合 LazyColumn

    这是我的情况 我必须在我的应用程序中显示从 API 收到的记录的详细信息 在此视图中 我可能需要也可能不需要基于字段显示来自另一个视图模型的一些数据 这是我的代码 OptIn ExperimentalMaterial3Api class C
  • if 不是 localhost 语句 htaccess

    我目前强迫访问者通过 https 访问我的所有网站 主要是 Wordpress 我使用以下代码 RewriteEngine On RewriteCond HTTPS on RewriteRule https SERVER NAME REQU
  • angularjs - 当 $interval 触发时 ng-show 不会更新类

    尝试使用 Angular 中的 interval 来使用 ng show 更改列表中当前可见的项目 检查 html 我注意到角度将 ng show 从 true false 更改 但它并没有删除 ng hide 类 html 很简单 h1
  • 动态添加 href 到链接

    我有一系列水平 div 框 我需要添加相关的 href 以使用锚链接链接到下一个 由于它们是动态生成的 我需要使用 JavaScript 添加 href 期望的效果将是 div a class next video href post2 N
  • 要发布哪些运行时库?

    我使用 Visual Studio 2008 进行 C C 工作 我相信我并不关心我的代码使用了哪些运行时库 因为我有开发人员设置 但是 当交付可执行文件时 所使用的运行时库也需要一起交付 我对吗 如果是 我如何确定实际使用了哪些共享库 或
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • CakePHP 3.X 中的自定义 404 页面

    我想为生产环境中出现的所有错误创建一个自定义 404 页面 例如 如果我收到缺少控制器或视图错误 那么它将重定向到http example com 404 html 另外在某些情况下我会故意重定向它http example com 404