So - what if I have a url that might be matched against many routes... which route will win? Which action will be dispatched?
Is it simple- first defined - first dispatched?
Here's routes for example:
'route-catchall' => array(
'type' => 'regex',
'options' => array(
'regex' => '/api/v1/.*',
'defaults' => array(
'controller' => 'IndexController',
'action' => 'apiCatchAll',
),
),
),
'route-test1' => array(
'type' => 'literal',
'options' => array(
'route' => '/api/v1/route1',
'defaults' => array(
'controller' => 'IndexController',
'action' => 'apiRoute1',
),
),
),
Would this url example.com/api/v1/route1
be routed to apiRoute1
or apiCatchAll
?
Since routes attached to the route stack are stored in a priority list, the first matched route will win.
Routes are attached to the main route with a
priority
setting. Higher priority means the route is checked first. By default, the first attached route is read (if they all have same priority or no priority at all).In this example,
route-test1
will be matched first because of its high priority.