5

Silexマイクロ フレームワークを使用してカスタム 404 エラー ページを表示しようとしているときに、少し苦労しています。

私のプロジェクトは次のように構成されています。

  • 本番モードで実行するindex.phpページを取得し、構成ファイル をロードしますprod.php
  • デバッグモードで実行するindex_dev.phpを取得しました。構成ファイルも使用しますが、 trueに設定するなど、一部の設定はファイルによって上書きされます。prod.phpdev.php$app['debug']

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

次のようにエラーハンドラーを定義しました。

$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 エラー ページが表示されます。

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

4

1 に答える 1

3

index.phpファイルにリクエストを書き換える必要があります。これを機能させるための基本的な例については、以下を参照してください。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L,QSA]
于 2012-08-16T08:26:52.687 に答える