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

标签 php zend-framework2 zend-route

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

www.bmob.co.uk           -> DtCompanyData\Controller\CompanyMap   
wage.bmob.co.uk          -> DtWage\Controller\Wage  
wage.bmob.co.uk/brighton -> DtWage\Controller\WageBrighton  

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

当我有

// In Application/config/module.config.php:

'home' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'www.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtCompanyData\Controller',
            'controller' => 'DtCompanyData\Controller\CompanyMap',
            'action' => 'index',
        ),
    ),
),

// In DtWage/config/module.config.php:

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWage\Controller',
            'controller' => 'DtWage\Controller\Wage',
            '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__' => 'DtCompanyData\Controller',
            'controller' => 'DtCompanyData\Controller\CompanyMap',
            'action' => 'index',
        ),
    ),
),

// In DtWage/config/module.config.php:

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWage\Controller',
            'controller' => 'DtWage\Controller\Wage',
            'action' => 'index',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'wagebrighton' => array( 
            'type' => 'literal',
            'options' => array(
                'route' => '/brighton',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWage\Controller',   // Have also tried without this line, same result
                    'controller' => 'DtWage\Controller\WageBrighton',
                    '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

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

最佳答案

我会尝试两种配置:

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

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWage\Controller',
        ),
    ),
    'may_terminate' => false,
    'child_routes' => array(
        'wagehome' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWage\Controller',
                    'controller' => 'DtWage\Controller\Wage',
                    'action' => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'wagebrighton' => array(
                    'type' => 'literal',
                    'options' => array(
                        'route' => '/brighton',
                        'defaults' => array(
                            '__NAMESPACE__' => 'DtWage\Controller',
                            'controller' => 'DtWage\Controller\WageBrighton',
                            'action' => 'index',
                        ),
                    ),
                ),
            ),
        ),
    ),
),

编辑:这个怎么样:

'wage' => array(
    'type' => 'hostname',
    'options' => array(
        'route' => 'wage.bmob.co.uk',
        'defaults' => array(
            '__NAMESPACE__' => 'DtWage\Controller',
        ),
    ),
    'may_terminate' => false,
    'child_routes' => array(
        'wagehome' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWage\Controller',
                    'controller' => 'DtWage\Controller\Wage',
                    'action' => 'index',
                ),
            ),
        ),
        'wagebrighton' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/brighton',
                'defaults' => array(
                    '__NAMESPACE__' => 'DtWage\Controller',
                    'controller' => 'DtWage\Controller\WageBrighton',
                    'action' => 'index',
                ),
            ),
        ),
    ),
),

关于php - 具有子路由的子域的 ZF2 路由器配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933401/

相关文章:

php - Zend Framework 2中如何访问route、post、get等参数

php - 如何将XXXX/XX/XX等数据插入表字段?

php - fatal error : Class 'WP_Customize_Control' not found - WordPress

zend-framework2 - 如何在 Zend Framework 2 中使用自定义第三方库

php - 从 ZF2 中的 Controller 调用另一个 Controller 操作的最佳实践

php - 在 Zend Framework 2 中无法正确解析包含特殊字符的路由

php - Zend Framework 2 段路由需要段

javascript - 使用 php 而不是 javascript 重定向页面

php - CodeIgniter:如果我使用 die() 函数,则不会加载 View

zend-framework2 - Zend框架2 : 403 forbidden error when trying to access localhost