Php 子_路由时出现ZF2错误404
这是我最后的机会。我试着寻找答案,但说真的,我看不出我做错了什么。。。 我正在尝试在网站上设置一个多域。 使用文字路由时,一切正常。 添加具有主机名路由的其他域时,仍然可以。 但当将子路由添加到该主机名路由时,父路由会触发404。 这是我的module.config:Php 子_路由时出现ZF2错误404,php,routes,zend-framework2,Php,Routes,Zend Framework2,这是我最后的机会。我试着寻找答案,但说真的,我看不出我做错了什么。。。 我正在尝试在网站上设置一个多域。 使用文字路由时,一切正常。 添加具有主机名路由的其他域时,仍然可以。 但当将子路由添加到该主机名路由时,父路由会触发404。 这是我的module.config: 'resources' => $resources, 'router' => array( 'routes' => array( 'example.com' => array(
'resources' => $resources,
'router' => array(
'routes' => array(
'example.com' => array(
'type' => 'Zend\Mvc\Router\Http\Hostname',
'options' => array(
'route' => '[:subdomain.]:domain.:tld', // domain levels from right to left
'contraints' => array(
'subdomain' => 'www',
'domain' => 'example',
'tld' => 'com',
),
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'itdoc',
),
),
'may_terminate' => true,
'child_routes' => array(
'customCatalog2' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/custom-catalog',
'defaults' => array(
'action' => 'customCatalog',
),
),
),
当访问时,我得到一个404。
但儿童路线很好()
但是如果我注释掉子路由(并且可能终止),我可以访问根域
你知道我的代码有什么问题吗
谢谢 我测试了你的代码,事实上这很奇怪,但经过一些测试和阅读文档后,我发现了这一点 ^ 我期待着这个组件,并在文档中发现:
'packages.zendframework.com' => array(
'type' => 'Zend\Mvc\Router\Http\Hostname',
'options' => array(
'route' => ':4th.[:3rd.]:2nd.:1st', // domain levels from right to left
'contraints' => array(
'4th' => 'packages',
'3rd' => '.*?', // optional 3rd level domain such as .ci, .dev or .test
'2nd' => 'zendframework',
'1st' => 'com',
),
// Purposely omit default controller and action
// to let the child routes control the route match
),
// child route controllers may span multiple modules as desired
'child_routes' => array(
'index' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Package\Controller\Index',
'action' = > 'index',
),
),
'may_terminate' => true,
),
),
),
如您所见,它们有子路由,但声明的第一个路由是与此模式匹配的路由:“/”
,这是您的主路由。您必须声明此路由等于下面的代码:
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'itdoc',
),
之后,主路由是正确的,您可以继续使用其他子路由,只是主机名不是实际的主路由
'/'
对!!谢谢胡莉!我想通过“默认值”部分,它会工作的。我确实尝试了doc示例,但可能将“/”路由更改为一个孩子。希望这将有助于其他人澄清child_路线的工作原理。