2012-02-06 21 views
0

これは私のルートファイルです。コントローラーが見つからない場合、どのようにしてarray( 'controller' => 'pages'、 'action' => 'display'、 'home')にリダイレクトできますか?コントローラが見つからなかった場合のリダイレクト方法は? (cakephp)

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); 
Router::connect('/login', array("controller"=>"user","action"=>"login")); 
Router::connect('/settings', array("controller"=>"user","action"=>"settings")); 
Router::connect('/logout', array("controller"=>"user","action"=>"logout")); 
Router::connect('/video', array("controller"=>"video","action"=>"index")); 
Router::connect('/video/page/*', array("controller"=>"video","action"=>"page")); 
Router::connect('/video/*', array("controller"=>"video","action"=>"view")); 
Router::connect('/upcoming', array("controller"=>"user","action"=>"upcoming")); 
+0

私はこのページに移動します。 http://example.com/cakephp/controller_that_doesnt_exists – Vizualni

+1

同様の質問で返信を探してください: http://stackoverflow.com/questions/4108382/cakephp-redirecting-all-404-errors-to-the-homepage/ 10669893#10669893 – trante

答えて

1

これは非常に簡単です。今

<?php 
class AppError extends ErrorHandler { 


    function missingController($params) { 
     extract($params, EXTR_OVERWRITE); 

     $this->controller->redirect('/'); 
    }  


} 

、これはあなたの問題を解決する必要があります:あなた/ appディレクトリ内app_error.phpファイル、それが完了すると

、次のように入れて(あなたがapp_model.phpapp_controller.phpためだろうだけの方法)を作成します。コンポーネントとbeforeFilters/Rendersを呼び出す必要がある場合は、それらをコンストラクタから呼び出すことができます。

+0

動作していません..... – Confused

+0

何のために働いていませんか?どのバージョンのケーキ? –

1

ユーザーをホームページにリダイレクトするカスタムの例外ハンドラを作成する必要があります。このトピックのdocumentationを参照してください。おそらく

(未テストが、ちょうどあなたがここから行くためのアイデアを与えるために)このような何か:あなたが必要

class AppErrorHandler { 
    public static function handleException($error) { 
     if ($error instanceof MissingControllerException) { 
      // Redirect home, $this->redirect will probably not work, 
      // since the Error Handler doesn't extend the AppController. 
      header('Location: /'); 
      exit; 
     } 
    } 
} 
1

hereはきちんと説明し、偉大な働いている>これはあなたを助けることを願っています。

OR

ゴーHERE

関連する問題