2012-08-13 7 views
5

Sto faticando un po 'durante il tentativo di visualizzare una pagina di errore 404 personalizzata usando il micro-framework Silex Silex.Pagina 404 personalizzata con Silex non sottoposta a rendering in configurazione

Il mio progetto è configurato come segue:

  • ottenuto una pagina index.php per l'esecuzione in produzione modalità, il caricamento di un file di configurazione prod.php
  • ottenuto un index_dev.php a correre nella modalità debug. Utilizza anche il file di configurazione prod.php, ma alcune impostazioni vengono sovrascritte da un file dev.php, ad esempio $app['debug'] impostato su true.

Quindi in pratica la configurazione è la stessa.

ho definito un gestore di errori nel modo seguente:

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

}); 

Quando si cerca di accedere a http://localhost:8888/index_dev.php/my-non-existing-page, ottengo il mio modello 404 reso e visualizzato come previsto.

Quando si tenta di accedere a http://localhost:8888/my-non-existing-page, il modello 404 non viene visualizzato e viene visualizzata una pagina di errore 404 standard!

Potrebbe essere difficile aiutarmi. Sentiti libero di chiedere maggiori dettagli se necessario. Sono semplicemente disposto a capire meglio cosa sta realmente accadendo qui.

+0

Che aspetto ha il tuo htaccess? – gunnx

+0

Non ho ancora definito un file htaccess. Solo la configurazione globale sul mio server locale (usando MAMP). Pensi ad un setting specifico? Il fatto è che la home page è visualizzata correttamente, il problema è in realtà il gestore degli errori che non visualizza la pagina 404 personalizzata sulla configurazione "prod". –

+1

Mi sarei aspettato che tu avessi un file htaccess. Ecco una base che uso con i progetti Silex. RewriteEngine On RewriteCond% {REQUEST_FILENAME}! -f RewriteRule^index.php [L, QSA] – gunnx

risposta

3

È necessario riscrivere le richieste nel file index.php. Vedi sotto per un esempio di base per farlo funzionare.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L,QSA]