Cakephp url路由

Cakephp url路由,cakephp,url-rewriting,pretty-urls,Cakephp,Url Rewriting,Pretty Urls,我当前的网址是 baseUrl/categories/category/categoryName/subcatName... 将此url转换为 baseUrl/categoryName/subcatName... 我在走下面的路线 Router::connect( '/:slug/*', array( 'controller' => 'Categories', 'action' => 'category' ), ar

我当前的网址是

baseUrl/categories/category/categoryName/subcatName...
将此url转换为

baseUrl/categoryName/subcatName...
我在走下面的路线

Router::connect(
    '/:slug/*',
    array(
        'controller' => 'Categories',
        'action' => 'category'
    ),
    array(
        'pass' => array('slug'),
        'slug'=>'[a-zA-Z]+'
    )
);
但这会给URL带来问题,比如:

baseUrl/home
baseUrl/myaccount ..
etc.

并将其重定向到类别操作。

此问题的常见解决方案是添加一个字母(如Reddit)

这样,您可以选择以下路线:

Router::connect(
'/r/:slug/*',
array(
    'controller' => 'Categories',
    'action' => 'category'
),
array(
    'pass' => array('slug'),
    'slug'=>'[a-zA-Z]+'
)
);

没什么奇怪的-如果你想要一个像那样的catchall路由,最简单的解决方案是首先声明所有其他路由。
Router::connect(
'/r/:slug/*',
array(
    'controller' => 'Categories',
    'action' => 'category'
),
array(
    'pass' => array('slug'),
    'slug'=>'[a-zA-Z]+'
)
);