所以-如果我的网址可能与许多路线相匹配,哪条路线会获胜呢?将采取哪个行动?
它是简单的-首先定义-首先 dispatch 吗?
例如,以下路线:
'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',
),
),
),
该网址
example.com/api/v1/route1
是否会路由到apiRoute1
或apiCatchAll
?
最佳答案
由于附加到路由堆栈的路由存储在priority list中,因此第一个匹配的路由将获胜。
路线通过 priority
setting附加到主路线。较高的优先级意味着首先检查路由。默认情况下,读取第一个附加路由(如果它们都具有相同的优先级或根本没有优先级)。
'route-catchall' => array(
'type' => 'regex',
'options' => array(
'regex' => '/api/v1/.*',
'defaults' => array(
'controller' => 'IndexController',
'action' => 'apiCatchAll',
),
),
'priority' => -1000,
),
'route-test1' => array(
'type' => 'literal',
'options' => array(
'route' => '/api/v1/route1',
'defaults' => array(
'controller' => 'IndexController',
'action' => 'apiRoute1',
),
),
'priority' => 9001, // it's over 9000!
),
在此示例中,由于
route-test1
具有高优先级,因此将首先对其进行匹配。
关于zend-framework2 - ZF2-如果路由器匹配多个路由,将调度什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122366/