2014-02-21 3 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', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 

EDIT: что об этом один:

'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