CakePHP:将所有404错误重定向到主页?

时间:2010-11-05 17:24:42

标签: php cakephp redirect

控制器中是否有方法或函数可以告知是否触发了404错误?我希望每个人都能在主页上重定向,而不是看到404页面。

谢谢!

4 个答案:

答案 0 :(得分:7)

要捕获和处理404错误,您需要扩展ErrorHandler类并覆盖error404方法。为此,请使用以下代码创建文件app/app_error.php

class AppError extends ErrorHandler {
    function error404($params) {
        // redirect to homepage
        $this->controller->redirect('/');
    }
}

Manual

答案 1 :(得分:0)

对于CakePHP 2.x,我使用了

// app/Lib/Error/AppExceptionRenderer.php
<?php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
    public function error400($error) { 
        return $this->controller->redirect('/');
    }

}

//app/Config/Core.php

Configure::write('debug', 0);
Configure::write('Exception', array(
        'handler' => 'ErrorHandler::handleException',
        //'renderer' => 'ExceptionRenderer',
        'renderer' => 'AppExceptionRenderer',
        'log' => true
    ));

答案 2 :(得分:0)

简单的方法是将它放在你的app / Config / core.php

Configure::write('Exception.handler', function ($error) {
    header('Location: https://www.example.com');
});

请注意,PHP v5.3 +

支持匿名函数作为回调

答案 3 :(得分:0)

CakePHP v 2.x

  

使用AppController :: appError()

     

实现此方法是实现自定义的替代方法   异常处理程序它主要是为了向后提供   兼容性,不建议用于新应用程序。这个   调用controller方法而不是默认异常   渲染。它接收抛出的异常作为唯一的参数。您   应该在该方法中实现您的错误处理:

第1步:: 文件:app / Controller / AppController.php

someField

第2步::创建自定义视图。应用/视图/页/ notfound.ctp

在此文件中编写自定义消息。

参考:

http://book.cakephp.org/2.0/en/development/exceptions.html#using-appcontroller-apperror