2014-02-21 58 views
2

我需要我的路由器配置为工作子域ZF2路由器的配置如下:与子路由

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 

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

回答

2

我会尝试两种配置:

'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', 
       ), 
      ), 
     ), 
    ), 
), 
+0

第一个给我的错误,但第二个是接近。我明白你的孩子的路线。第二个为我提供了“wage.bmob.co.uk”的正确页面,但是对于'wage.bmob.co.uk/brighton',我得到了另一个404请求的URL无法通过路由匹配。 – ellcub

+0

是的!很高兴它终于在工作,谢谢! – ellcub