CakePHP: перенаправить все 404 ошибки на домашнюю страницу? - PullRequest
0 голосов
/ 05 ноября 2010

Есть ли способ или функция в контроллере, которая сообщает, была ли вызвана ошибка 404?Я хотел бы, чтобы все перенаправляли на домашнюю страницу вместо просмотра страницы 404.

Спасибо!

Ответы [ 4 ]

7 голосов
/ 05 ноября 2010

Чтобы перехватить и обработать 404 ошибки, вам нужно расширить класс ErrorHandler и переопределить метод error404. Для этого создайте файл app/app_error.php со следующим кодом:

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

Руководство

0 голосов
/ 27 июля 2016

CakePHP v 2.x

Использование AppController :: appError ()

Реализация этого метода является альтернативой реализации пользовательского обработчика исключений.Он в первую очередь предназначен для обратной совместимости и не рекомендуется для новых приложений.Этот метод контроллера вызывается вместо рендеринга исключений по умолчанию.Он получает выброшенное исключение в качестве единственного аргумента.Вы должны реализовать обработку ошибок в этом методе:

Шаг 1 :: Файл: app / Controller / AppController.php

class AppController extends Controller {
    public function appError($error) {
        // custom logic goes here. Here I am redirecting to a custom page
        header("Location : /pages/notfound");
    }
}

Шаг 2 :: Создать пользовательское представление.app / View / pages / notfound.ctp

Написать пользовательское сообщение в этом файле.

Ссылка:

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

0 голосов
/ 17 ноября 2015

Простой способ поместить это в ваше приложение / Config / core.php

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

Обратите внимание, что анонимные функции в качестве обратного вызова поддерживаются PHP v5.3 +

0 голосов
/ 03 сентября 2014

Для 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
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...