2

我把我能找到的关于 Zend_Controller_Router_Route 的所有东西都涂红了,但我无法找到如何设置默认控制器或从 url 中排除某些内容,例如:

www.example.com/test/controler/action

我怎么能忽略“测试”?

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

谢谢,文齐斯拉夫·安杰洛夫

4

2 回答 2

3

这可以在 /public 子目录的 .htaccess 中完成。

像这样添加另一个 RewriteCond:

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

这应该解决它。

于 2012-06-21T13:17:13.917 回答
0

在您的示例中,如果您使用默认路由,则url '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() 语句。

希望其中一位路由器专家能提供更好的解决方案。

祝你好运...

于 2012-06-21T13:31:42.523 回答