简体   繁体   中英

The requested URL could not be matched by routing

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM