apache zend-framework routing routes zend-framework2

apache - El enrutador ZF2 no funciona en la puesta en escena



zend-framework routing (3)

Así que tengo un proyecto ZF2 ejecutándose localmente y funciona muy bien. Cuando lo configuré en un servidor intermedio encontré un problema de enrutamiento. Enruta "/" al controlador apropiado, pero al visitar, digamos "/ blog", buscará una carpeta real y devolverá el siguiente error:

The requested URL /blog was not found on this server.

Normalmente, si no coincide con ninguna ruta definida, ZF2 devolverá un error que indica que la URL no puede coincidir con el enrutamiento. Pero parece que esto está saliendo de toda la aplicación. ¿Alguien más ha tenido problemas similares / ha encontrado una solución?

Gracias.


Realmente no sé si esto puede resolver tu duda, pero en el pasado tuve casi el mismo problema que tú. Esta es la parte del enrutamiento que uso en mi module.config.php:

Para el módulo ''admin'', por ejemplo:

<?php ... ''router'' => array( ''routes'' => array( ''admin'' => array( ''type'' => ''Literal'', ''options'' => array( ''route'' => ''/admin'', ''defaults'' => array( ''__NAMESPACE__'' => ''Admin/Controller'', ''controller'' => ''Index'', ''action'' => ''index'', ), ), ''may_terminate'' => true, ''child_routes'' => array( ''default'' => array( ''type'' => ''Segment'', ''options'' => array( ''route'' => ''[/:controller[/:action[/id/:id]]][/]'', ''constraints'' => array( ''controller'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ''action'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ), ''defaults'' => array( ), ), ), ), ), ), ),

O, para el módulo principal:

<?php ''router'' => array( ''routes'' => array( ''home'' => array( ''type'' => ''Zend/Mvc/Router/Http/Literal'', ''options'' => array( ''route'' => ''/'', ''defaults'' => array( ''controller'' => ''Application/Controller/Index'', ''action'' => ''index'', ), ), ), // The following is a route to simplify getting started creating // new controllers and actions without needing to create a new // module. Simply drop new controllers in, and you can access them // using the path /application/:controller/:action ''application'' => array( ''type'' => ''Literal'', ''options'' => array( ''route'' => ''/'', ''defaults'' => array( ''__NAMESPACE__'' => ''Application/Controller'', ''controller'' => ''Index'', ''action'' => ''index'', ), ), ''may_terminate'' => true, ''child_routes'' => array( ''default'' => array( ''type'' => ''Segment'', ''options'' => array( ''route'' => ''[:controller[/:action[/id/:id]]][/]'', ''constraints'' => array( ''controller'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ''action'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ), ''defaults'' => array( ), ), ), ), ), ), ),


Sus reglas de reescritura no se están utilizando. Si está usando Apache, o no ha cargado su archivo .htaccess en su servidor de transferencia, o su servidor de transferencia no está configurado para leer archivos .htaccess . Por el momento, las solicitudes ni siquiera llegan a su aplicación Zend Framework porque su servidor web no está configurado para enviarlas allí.


Intenta reemplazar tu archivo .htaccess completo con el siguiente código.

esto funcionará seguramente

RewriteEngine en

RewriteCond% {REQUEST_FILENAME} -s [OR]

RewriteCond% {REQUEST_FILENAME} -l [OR]

RewriteCond% {REQUEST_FILENAME} -d

RewriteRule ^. * $ - [NC, L]

RewriteCond% {REQUEST_URI} :: $ 1 ^ (/.+) (. +) :: / 2 $

RewriteRule ^ (. *) - [E = BASE:% 1]

RewriteRule ^ (. *) $% {ENV: BASE} index.php [NC, L]