Insert [/]
to fix it. try:
'route' => '/admin[/:controller[/:action]][/]',
Question
I have two modules Admin and Application. In the module application I have the following route in my module.config.php:
'admin' => array(
'type' => 'Segment',
'options' => array(
'route' => '/admin[/:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array (
'__NAMESPACE__' => 'Admin\Controller',
'module' => 'Admin',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'wildcard' => array(
'type' => 'Wildcard'
)
)
),
The problem is that it is matching
example.com/admin
and is not matching
example.com/admin/
How do I fix that?
Solution
Insert [/]
to fix it. try:
'route' => '/admin[/:controller[/:action]][/]',
OTHER TIPS
You can add an optional child-route which matches only a /. That should also work for the same problem with a wildcard (sub)route.
'admin' => array(
'type' => 'Segment',
'options' => array(
'route' => '/admin[/:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array (
'__NAMESPACE__' => 'Admin\Controller',
'module' => 'Admin',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'wildcard' => array(
'type' => 'Wildcard'
'may_terminate' => true,
'child_routes' => array(
'ts' => array(
'type' => 'literal',
'options' => array('route' => '/' )
),
)
),
'ts' => array(
'type' => 'literal',
'options' => array('route' => '/')
),
)
),