我正在使用Zend Framework 2编写一个应用程序,它将从几个不同的子域运行,并且我希望每个子域都有不同的模块,以保持整洁。
我的问题是,当我添加多个子域到路由中时,它会丢失其中一个子域。
例如:这个设置是可以工作的 testbed.localhost(module/Application) a.testbed.localhost(module/A)
如果我添加一个额外的子域,它将路由所有对A的请求到Application Index Controller
例如: testbed.localhost(module/Application),a.testbed.localhost(module/A),b.testbed.localhost(module/B)
这是module/A的module.config.php文件:
'router' => array(
'routes' => array(
'ads' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'a.testbed.localhost',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'__NAMESPACE__' => 'A\Controller',
'controller' => 'A\Controller\A',
'action' => 'index',
),
),
以下是module/B中module.config.php文件中的路由:
'router' => array(
'routes' => array(
'ads' => array(
'type' => 'Hostname',
'options' => array(
'route' => 'b.testbed.localhost',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'__NAMESPACE__' => 'B\Controller',
'controller' => 'B\Controller\B',
'action' => 'index',
),
),
现在两个module.config.php文件中的命名空间都是正确的,我注意到如果我从config/application.config.php中删除对子域a.testbed.localhost的引用,它将可以正常工作。
<?php
return array(
'modules' => array(
'Application',
'A',
'B', <--- A doesn't work if B is here
),
如果我在上面的模块数组中交换A和B,那么B将被转发到应用程序模块,而A将起作用。因此,它似乎存在多个子域的问题。有人有什么想法/遇到过同样的问题吗?