php我有添加路由的方法:
public function addRoutes()
{
$front = Zend_Controller_Front::getInstance();
$redirect = $front->getRouter();
$router = new Zend_Controller_Router_Route_Regex(
"p/(a-zA-Z0-9).htm",
array(
'controller'=>'page',
'action'=>'index',
1=>'ja.htm'
),
array( 1 => 'page_name')
);
$route2 = new Zend_Controller_Router_Route_Regex("(a-zA-Z0-9).html",
array('controller'=>'page',
'action'=>'index',
1=>'ja.html'),
array(1=>'page_name'));
$redirect->addRoute('pages',$router);
$redirect->addRoute('hmtmled',$route2);
$front->setRouter($redirect);
}
我试图输入类似于p/ja.htm的url,但我得到错误:指定的控制器无效(p)。我知道这是默认路线的原因,但如何改变呢?
该方法是Bootstrap
类的一部分吗?如果是,你确定它正在运行吗?请记住,自动调用的Bootstrap
方法是形式为_initXXX()
的方法(注意前导下划线)。
此外,正如@Tim Fountain在评论中敏锐地指出的那样,正则表达式需要是:
p/([0-9A-Za-z]+).htm
您尝试删除默认路由:
//摘录自ZF参考资料24.5.4。默认路线。。。如果你这样做不希望在路由架构中使用此特定的默认路由,您可以通过创建自己的"默认"路由来覆盖它(即存储它以"default"的名称)或通过使用removeDefaultRoutes():
// Remove any default routes
$router->removeDefaultRoutes();