具有子路由的子域的 ZF2 路由器配置



我需要我的路由器配置如下:

www.bmob.co.uk           -> DtCompanyDataControllerCompanyMap   
wage.bmob.co.uk          -> DtWageControllerWage  
wage.bmob.co.uk/brighton -> DtWageControllerWageBrighton  

阅读文档和此处的许多类似问题后,我可以让路由适用于子域或子路由,但不能同时使用两者。

当我有

// In Application/config/module.config.php:
'home' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'www.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtCompanyDataController',
            'controller' => 'DtCompanyDataControllerCompanyMap',
            'action' => 'index',
        ),
    ),
),
// In DtWage/config/module.config.php:
'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWageController',
            'controller' => 'DtWageControllerWage',
            'action' => 'index',
        ),
    ),
    'may_terminate' => true,
),

我得到:

www.bmob.co.uk - works  
wage.bmob.co.uk - works  
wage.bmob.co.uk/brighton - goes to same page as wage.bmob.co.uk

当我有:

// In Application/config/module.config.php:
'home' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'www.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtCompanyDataController',
            'controller' => 'DtCompanyDataControllerCompanyMap',
            'action' => 'index',
        ),
    ),
),
// In DtWage/config/module.config.php:
'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWageController',
            'controller' => 'DtWageControllerWage',
            'action' => 'index',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'wagebrighton' => array( 
            'type' => 'literal',
            'options' => array(
                'route' => '/brighton',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWageController',   // Have also tried without this line, same result
                    'controller' => 'DtWageControllerWageBrighton',
                    'action' => 'index',
                ),
            ),
        ),
    ),
),

我得到:

www.bmob.co.uk - works  
wage.bmob.co.uk - 404 The requested URL could not be matched by routing.  
wage.bmob.co.uk/brighton - works

我在这里做错了什么?如何让 wage.bmob.co.uk 和 wage.bmob.co.uk/brighton 同时工作?谢谢。

我会尝试两种配置:

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk/',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWageController',
            'controller' => 'DtWageControllerWage',
            'action' => 'index',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'wagebrighton' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/brighton',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWageController', // Have also tried without this line, same result
                    'controller' => 'DtWageControllerWageBrighton',
                    'action' => 'index',
                ),
            ),
        ),
    ),
),

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWageController',
        ),
    ),
    'may_terminate' => false,
    'child_routes' => array(
        'wagehome' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWageController',
                    'controller' => 'DtWageControllerWage',
                    'action' => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'wagebrighton' => array(
                    'type' => 'literal',
                    'options' => array(
                        'route' => '/brighton',
                        'defaults' => array(
                            '__NAMESPACE__' => 'DtWageController',
                            'controller' => 'DtWageControllerWageBrighton',
                            'action' => 'index',
                        ),
                    ),
                ),
            ),
        ),
    ),
),

编辑:这个呢:

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWageController',
        ),
    ),
    'may_terminate' => false,
    'child_routes' => array(
        'wagehome' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWageController',
                    'controller' => 'DtWageControllerWage',
                    'action' => 'index',
                ),
            ),
        ),
        'wagebrighton' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/brighton',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWageController',
                    'controller' => 'DtWageControllerWageBrighton',
                    'action' => 'index',
                ),
            ),
        ),
    ),
),

最新更新