设置默认控制器或从url zend框架中排除某些内容

时间:2012-06-21 12:52:23

标签: php zend-framework frameworks

我发现了我能找到的关于Zend_Controller_Router_Route的所有内容,但我无法找到如何设置默认控制器或从网址中排除某些内容,例如:

www.example.com/test/controler/action

我怎么能忽略“测试”?

现在我总是将“test”作为默认控制器..

谢谢, Ventsislav Angelov

2 个答案:

答案 0 :(得分:3)

这可以在/ public subdir的.htaccess中完成。

添加另一个像这样的RewriteCond:

RewriteCond %{REQUEST_URI} !^/test* [OR]

这应该解决它。

答案 1 :(得分:0)

在您的示例中,如果您使用默认路线,则网址'test'将成为模块。

www.example.com/test/controler/action //module = test, controller = controler, action = action

您可以使用以下行在application.ini中指定所有这三个的默认值:

 resources.frontController.defaultcontrollername = 'index'
 resources.frontController.defaultaction = 'index'
 resources.frontController.defaultmodule = 'default'

您可能感兴趣的其他可用设置:

resources.frontController.useDefaultControllerAlways = false

<强> [编辑] 如果您确实需要从路由/请求中过滤字符串。你可以用一条路线做到这一点,但我不知道路线是否足以帮助解决这个问题。另一个选择(除了.htaccess)将是测试和重定向。也许是这样的:

public function preDispatch() {
       $request = $this->getRequest();
       if ($request->getController() = 'test' || $request->getAction() = 'test' || $request->getModule() = 'test' ) {
           $this->_redirect('url');
      }
    }

这可以放在每个控制器中,但作为一个插件可能会更好。当然你可以使用switch()而不是讨厌的if()语句。

希望其中一位路由器专家会为更好的解决方案而徘徊。

祝你好运......