Php ZF2文字路由不匹配
我正在尝试使用多个站点特定的模块设置Zend Framework 2。每个模块配置都包含自己的唯一命名文字路径路由。但是,这些路由总是被忽略,而应用程序模块中的主路由则被忽略。URL指向ZF2的index.php文件的物理位置 所以,URL:localhost/zend/module/name/public/ 配置:Php ZF2文字路由不匹配,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我正在尝试使用多个站点特定的模块设置Zend Framework 2。每个模块配置都包含自己的唯一命名文字路径路由。但是,这些路由总是被忽略,而应用程序模块中的主路由则被忽略。URL指向ZF2的index.php文件的物理位置 所以,URL:localhost/zend/module/name/public/ 配置: 'routes' => array( 'moduleByPath' => array( 'type' => 'Litera
'routes' => array(
'moduleByPath' => array(
'type' => 'Literal',
'options' => array(
'route' => '/zend/module/name/public/'
),
'may_terminate' => true,
'child_routes' => $childRoutes,
),
),
但是,我会按照默认应用程序中的定义匹配到home。如果我将主路由从“/”更改为“/doesntexist/”,我会得到一个错误,即路径与路由不匹配
模块被正确地包含,因为我可以添加一个路由以按域匹配,并且所有内容都可以正确加载。ZF2“Literal”路由与物理目录不匹配,它只是指一个Literal URI,而不是一个“Segment”URI,例如,它可以采用诸如:action或:controller等参数 要使该路由在示例中正常工作,您需要将index.php移到root/,确保.htaccess正常工作,并完全删除“zend”物理目录和所有子目录 这将导致ZF2将文本URI/zend/module/name/public/映射到该路由“moduleByPath”,并在必要时处理子路由 另外,通常对于文本路由,您会声明一个默认控制器和一个应该为此URI加载的操作,如下所示:
<?php
return [
'routes' => [
'api' => [
'type' => 'Literal',
'options' => [
'route' => '/api',
'defaults' => [
'controller' => 'api',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
// ...
]
]
]
];
比如说。确保在配置中也将控制器“api”声明为可调用:
<?php
// ...
'controllers' => [
'invokables' => [
'api' => 'MoudleName\Controller\ApiController'
// ... other invokables
]
]
希望这能有所帮助,如果我说的不合理,请告诉我:Happy coding你是说/zend/module/name/public/是一个物理目录吗?是的。这就是index.php文件所在的位置。