2010-11-05 42 views
0

控制器中是否有方法或函數來告訴404錯誤是否被觸發?我希望每個人都能在主頁上重定向,而不是看到404頁面。CakePHP:將所有404錯誤重定向到主頁?

謝謝!

+2

只是一個側面說明,這一點很重要,你的缺頁真的是404個網頁發送404頭,否則搜索引擎可能會繼續索引斷開的鏈接。幾乎每個主要網站都支持通過簡單重定向的404頁面。這樣做的好處是,您仍然可以在404頁面上添加功能來建議或允許用戶搜索他們真正在尋找的內容。 – 2010-11-05 17:45:14

回答

7

要捕獲和處理404錯誤,您需要擴展ErrorHandler類並覆蓋error404方法。要做到這一點,創建文件app/app_error.php用下面的代碼:

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

Manual

+2

這隻適用於1.2 – medoix 2012-12-07 08:41:21

+0

手動鏈接已死 – tsukimi 2014-09-03 01:45:43

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 
    )); 
0

最簡單的方法就是把這個在您的應用程序/ Config/core.php

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

請注意,匿名函數爲回調是由PHP V5.3 +

0

CakePHP的2.x的v

使用的AppController :: appError()

實現這個方法是實現自定義 異常處理程序的替代支持。它主要用於向後兼容 ,不推薦用於新應用程序。這個 控制器方法被調用,而不是默認的異常 渲染。它接收拋出的異常作爲唯一的參數。您 應該實現你的錯誤該方法處理:

步驟1 :: 文件:應用程序/控制器/ 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

相關問題