Php Zend Router-带或不带参数的URL是两种不同的路由

Php Zend Router-带或不带参数的URL是两种不同的路由,php,zend-framework,zend-route,Php,Zend Framework,Zend Route,我目前正在使用Zend Framework创建我的网站的新版本,我遇到了一个过去遇到的小问题 这是我的路线:(一部分) //博客->类别 $route=新的Zend\u控制器\u路由器\u路由( “博客/分类”, 排列( “模块”=>“博客”, “控制器”=>“类别”, '操作'=>'索引' ) ); $router->addRoute('blog-categories',$route); //博客->类别->列出文章(:别名=类别名称) $route=新的Zend\u控制器\u路由器\u路由(

我目前正在使用Zend Framework创建我的网站的新版本,我遇到了一个过去遇到的小问题

这是我的路线:(一部分)

//博客->类别
$route=新的Zend\u控制器\u路由器\u路由(
“博客/分类”,
排列(
“模块”=>“博客”,
“控制器”=>“类别”,
'操作'=>'索引'
)
);
$router->addRoute('blog-categories',$route);
//博客->类别->列出文章(:别名=类别名称)
$route=新的Zend\u控制器\u路由器\u路由(
“blog/categories/:别名”,
排列(
“模块”=>“博客”,
“控制器”=>“类别”,
“操作”=>“列表”,
“别名”=>null
)
);
$router->addRoute('blog-categories-list',$route);
问题是:当我转到
/blog/categories/
时,它会给我带来
列表
操作。我不想要的。我需要
索引

有没有一种方法可以在不使用(例如,
/blog/categories/view/:alias
的情况下修复此问题


注意:对于
/blog/
(列出所有文章)和
/blog/:alias/
(显示单个文章)我也有同样的问题。

通过包含
'alias'=>null
可以指定
:alias
参数的默认值,如果该参数不在URL中,则使用该参数。这就是为什么你的第二条路线总是匹配的原因。删除此项,它将按照您的要求工作。

谢谢您的回答!我已经找了一会儿了。我删除了默认值,现在效果很好:)