CakePHP路由正则表达式匹配,当我不希望它

时间:2013-05-30 14:25:05

标签: cakephp cakephp-2.0

我的routes.php中的此代码用于将URL从旧版本的站点路由到随后重定向到新URL的函数。它适用于它应该适用的网址,例如/p2045/some-product,但它也匹配以p开头的网址,例如/products。我认为下面的正则表达式不符合这一点。有人能指出我正确的方向吗?

Router::connect('/p:id/*',
    array(
        'controller' => 'products',
        'action' => 'legacy_redirect',
        'id' => '^[0-9]+$'
    )
);

1 个答案:

答案 0 :(得分:3)

根据这个:http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to-action我认为你应该使用类似的东西:

Router::connect(
    '/p:id/*',
    array('controller' => 'products', 'action' => 'legacy_redirect'),
    array(
        'pass' => array('id'),
        'id' => '[0-9]+'
    )
);