我知道这三个路由可以浓缩成一个路由,其中:year和:month是可选参数,但如果没有给出确切的参数,我迄今为止所尝试的一切都只是将我重定向到索引。例如,"www.domain.com/blog/archive/"匹配第一个规则,但是"www.domain.com/blog/archive/2013"在我添加另一个特定规则来匹配它之前一直落入索引规则。
Router::connect("/$slug/archive", array(
'plugin' => 'blog',
'controller' => 'blog_posts',
'action' => 'archive'
)
);
Router::connect("/$slug/archive/:year", array(
'plugin' => 'blog',
'controller' => 'blog_posts',
'action' => 'archive'
),
array('pass' => array('year') )
);
Router::connect("/$slug/archive/:year/:month", array(
'plugin' => 'blog',
'controller' => 'blog_posts',
'action' => 'archive'
),
array('pass' => array('year', 'month') )
);
Router::connect("/$slug/*", array(
'plugin' => 'blog',
'controller' => 'blog_posts',
'action' => 'index'
));
要创建一条路由规则,请使用以下代码匹配"archive"、"archive/2013"one_answers"archive/2013/02"
Router::connect("/$slug/archive/*", array(
'plugin' => 'blog',
'controller' => 'blog_posts',
'action' => 'archive'
)
);