2012-08-13 15 views
5

Silexマイクロフレームワークを使用してカスタム404エラーページを表示しようとすると少し苦労しています。次のようにSilexがカスタムコンフィグレーションでレンダリングされていないカスタム404ページ

私のプロジェクトが設定されています。

  • prod.php設定ファイルをロードし、生産モードで実行するようにのindex.phpページを持って実行するためのindex_dev.phpを得ましたデバッグモード。また、prod.php設定ファイルを使用しますが、いくつかの設定が$app['debug']に設定されているように、dev.phpファイルによって上書きされます。

そこで、基本的な構成は同じです。

次のように私は、エラーハンドラを定義している:

$app->error(function (\Exception $e, $code) use ($app) { 

    // commented for testing purposes 
    /*if ($app['debug']) { 
     return; 
    }*/ 

    if ($code == 404) { 

     $loader = $app['dataloader']; 
     $data = array(
      'global' => $loader->load('global'), 
      'common' => $loader->load('common', $app['locale']), 
      'header' => $loader->load('header', $app['locale']), 
      'footer' => $loader->load('footer', $app['locale']) 
     ); 

     return new Response($app['twig']->render('404.html.twig', array('data' => $data)), 404); 
    } 

    return new Response('We are sorry, but something went terribly wrong.', $code); 

}); 

http://localhost:8888/index_dev.php/my-non-existing-pageにアクセスしようとしたとき、私は私の404テンプレートレンダリング取得し、期待通りに表示されました。

アクセスhttp://localhost:8888/my-non-existing-pageにしようと、私の404テンプレートがレンダリングされていないと私の代わりに、標準の404エラーページを取得します!

私を助けるのは難しいかもしれません。必要に応じて詳細をお気軽にお尋ねください。私は単にここで実際に起こっていることをよりよく理解していきたいと思っています。

+0

あなたのhtaccessのはどのようなものが見えますか? – gunnx

+0

まだhtaccessファイルが定義されていません。ローカルサーバー上のグローバル設定(MAMPを使用)。あなたは特定の設定を考えますか?問題はホームページが正しく表示されていることです。問題は本当にエラーハンドラで、 "prod"設定のカスタム404ページを表示していないことです。 –

+1

私はhtaccessファイルを持っていると思います。ここでは私がsilexプロジェクトで使用する非常に基本的なものを紹介します。 RewriteEngine On RewriteCond%{REQUEST_FILENAME}!-f RewriteRule^index.php [L、QSA] – gunnx

答えて

3

index.phpファイルにリクエストを書き直す必要があります。これを実現するための基本的な例は下記を参照してください。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L,QSA] 
関連する問題