我正在为我的应用程序使用zend框架,并且我使用了一些正则表达式路由来根据url中的选项将用户路由到特定的控制器和操作。
但是当url模式不匹配时,我会收到404错误,例如:找不到页面。
如何指定配置,以便当正则表达式路由与指定的URL匹配时,控件会路由到默认控制器并执行操作?
仅供参考,我想默认路由到“索引”控制器和“索引”操作
答案 0 :(得分:3)
您可以创建自己的“全部捕获”路由并将其放入路由器,以便在正则表达式之后运行。 IIRC,路由器组件循环安装的路由(向后?),第一个返回true的路由器触发进程退出。你的“全部捕获”路线总是会回归真实。
答案 1 :(得分:2)
我正在使用ACL
生成自定义错误
class Management_Access extends Zend_Controller_Plugin_Abstract{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
....
....
....
....
$controller = $request->controller;
$action = $request->action;
if (!$acl->has($controller)) {
$request->setControllerName('error');
$request->setActionName('notfound');
}
修改它可能会对您有所帮助。
答案 2 :(得分:1)
解决方案1:
在引导程序的Front Controller中添加以下参数。
$front->setParam('useDefaultControllerAlways', true);
解决方案2:
修改你的ErrorController,如下所示,
class ErrorController extends Zend_Controller_Action {
public function errorAction() {
$this->_forward('index', 'index');
}
}
?>