我有两个模块应该超过其他网址,基本上
/ management / category / edit / id / 1(编辑类别页面)
/ management / category / index(管理模块中的类别索引页)
/ management / category(管理模块中的类别索引页)
/ women-like-men / category(从/ default / category / view / id / women-like-men路由的URL)
以上规则是:
$router->addRoute('view-category', new Zend_Controller_Router_Route(':id/category/:page', array('module' => 'default', 'controller' => 'category', 'action' => 'view', 'page' => null)));
$router->addRoute('management/category', new Zend_Controller_Router_Route('management/category/', array('module' => 'management', 'controller' => 'category', 'action' => 'index')));
有很多像这样的类似页面“冲突”(画廊,电影,用户)等。
我真正想要的是一个规则,说/ management / *路由到模块管理/控制器/操作并忽略下面的规则,任何与/管理乘坐的规则。无论如何,用户/画廊/电影/类别被称为管理的可能性很低。
有可能吗?
编辑,我已经做到了:
$router->addRoute('administration', new Zend_Controller_Router_Route_Regex('management/?(.*)/?(.*)', array('module' => 'management'), array(1 => 'controller', 2 => 'action')));
/ management / category工作正常,但结果为404后的任何内容
答案 0 :(得分:1)
这应该是直截了当的。定义路由的顺序很重要 - 它们按相反顺序检查,因此管理规则要“覆盖”您希望最后定义的其他规则(即在所有其他路径之后)。这样的东西(基本上就是你的东西)应该有效:
$route = new Zend_Controller_Router_Route(
'management/:controller/:action/*',
array(
'module' => 'management'
'controller' => 'index',
'action' => 'index'
)
);
$router->addRoute('management', $route);
如果您的任何管理URL在此之后仍然是404',那么它们不匹配该路由,因此它需要调整或者您需要一些其他管理路由来匹配其他情况。