I'm trying to access sitename /news/id/1, but it gives me this error. I've been trying to fix it for the past 30 mins and I can't figure out what I'm doing wrong.
The config:
//...
'application' => array(
'type' => 'Literal',
'options' => array(
'route' => '/application',
'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_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
),
),
),
),
),
'news' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/news/id[/:id]',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'news',
),
),
),
),
),
//...
Your news
Route is of Type literal
. But it Should be of Type Segment
.
See http://framework.zend.com/manual/current/en/modules/zend.mvc.routing.html#http-route-types for the different Route types.
I assume you're expecting this to match your 'default' route. Since that route is a child route of your application route, example.com/application/news/id/1
would match, but not example.com/news/id/1
. I would get rid of the application route and just have the default route in its place.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.