2012-08-13 11 views
5

Estoy luchando un poco cuando trato de mostrar una página de error 404 personalizada utilizando el Silex micro-framework.Página personalizada 404 con Silex no procesada en la configuración de prod

Mi proyecto está configurado de la siguiente manera:

  • tiene una página de index.php para funcionar en el modo de producción , cargando un archivo de configuración prod.php
  • consiguió una index_dev.php para funcionar en depurar el modo. También utiliza el archivo de configuración prod.php, pero algunos ajustes se reemplaza por un archivo dev.php, como $app['debug'] se establece en cierto.

Así que, básicamente, la configuración es la misma.

he definido un controlador de errores de la siguiente manera:

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

}); 

Al intentar acceder http://localhost:8888/index_dev.php/my-non-existing-page, me sale mi plantilla 404 rendido y que muestra como se esperaba.

Al intentar acceder al http://localhost:8888/my-non-existing-page, mi plantilla 404 no se procesa y en su lugar aparece una página de error estándar de 404.

podría ser difícil para que me ayude. Siéntase libre de pedir más detalles si es necesario. Simplemente estoy dispuesto a comprender mejor lo que está sucediendo aquí.

+0

¿Cómo es su htaccess? – gunnx

+0

No tengo ningún archivo htaccess definido todavía. Solo la configuración global en mi servidor local (usando MAMP). ¿Piensas en una configuración específica? La cuestión es que la página de inicio se muestra correctamente, el problema es realmente que el controlador de errores no muestra la página 404 personalizada en la configuración "prod". –

+1

Hubiera esperado que tuviera un archivo htaccess. Aquí hay uno muy básico que uso con proyectos de silex. RewriteEngine En RewriteCond% {REQUEST_FILENAME}! -f RewriteRule^index.php [L, QSA] – gunnx

Respuesta

3

Usted tendrá que volver a escribir peticiones a su archivo index.php. Vea a continuación un ejemplo básico para que esto funcione.

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