我发现了我能找到的关于Zend_Controller_Router_Route的所有内容,但我无法找到如何设置默认控制器或从网址中排除某些内容,例如:
www.example.com/test/controler/action
我怎么能忽略“测试”?
现在我总是将“test”作为默认控制器..
谢谢, Ventsislav Angelov
答案 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()语句。
希望其中一位路由器专家会为更好的解决方案而徘徊。
祝你好运......