如何创建匹配"archive"、"archive/2013"和"archive/2013/02"的单个路由规则?



我知道这三个路由可以浓缩成一个路由,其中: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'
      )
    );

最新更新