これを行うには 2 つの方法があります (私はいつもこのフレーズで回答を開始しているようです)。
まず、すべてのカスタム URL を手動で記述します。
Router::connect('/error/404', array('controller' => 'errors', 'action' => 'error404'));
Router::connect('/error/500', array('controller' => 'errors', 'action' => 'error500'));
これはかなり醜いようです。ただし、それを配列内に配置して、きれいにすることができます。
$errorTypes = array('403', '404', '500')
foreach ($errorTypes as $error)
    Router::connect('/error/'.$error, array('controller' => 'errors', 'action' => 'error'.$error));
または、もっとケーキっぽいこともできます(と思います)
Router::connect('/error/:code', 
     array('controller' => 'errors',  'action' => 'generalError'),
     array('pass' => array('code'),
           'code' => '[0-9]+'));
これは、コードを受信してさまざまなアクションに送信する ErrorsController に新しい関数が必要であることを意味します
class ErrorsController extends AppController {
    public function generalError($code) {
       if ($code == 404)
          $this->error404();
       else if ($code == 500)
          $this->error500();
       /*etc*/
    }
}
どちらも機能しますが、それはあなたの行動に依存します。より多くのパラメーターを処理する場合、何がよりきれいだと思いますか...