2014-02-21 60 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