【发布时间】:2015-09-06 09:01:58
【问题描述】:
我想为生产环境中进入网站的所有错误创建一个自定义 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的customize the template。 -
是的,但在某些情况下,当用户在域内手动更改网址时,我必须将该用户重定向到 404 页面
-
“当用户手动更改网址时”是什么意思?如果用户输入了一个不正确的 url,那么 cake 会抛出一个错误并显示 404 错误,你不应该将他们重定向到自定义页面。
-
假设我有一个 url 结构 example.com/blogs/24 其中 blogs 是一个目录,24 是博客的 id,我使用这个 id 进行数据库查询。现在,如果某些用户在浏览器中更改(此 ID)并查询结果为空数据,在这种情况下,我想将用户重定向到自定义 404 页面
-
如果发生这种情况,您应该抛出
Cake\Network\Exception\NotFoundException而不是重定向,如果配置得当,这将呈现 404 错误。
标签: cakephp