Cakephp Site Root,用户名与控制器冲突

时间:2015-01-21 08:49:32

标签: cakephp controller routing url-routing username

我得到了这段代码。 当我去 domain.com / 时,它将路由到home-> index()。当我输入 domain.com/username ..它将路由到用户 - >视图(用户名)

file:config / routes.php

$controllerList = App::objects('Controller'); 

foreach($controllerList as $controller)
{
    $controllerName = str_replace('Controller', '', $controller);
    if($controllerName != "App" & $controllerName != "Pages")
    {
        Router::connect('/' . $controllerName . '/:action/*', array('controller' => $controllerName));

        $firstLetterLower = strtolower(substr($controllerName,0,1));
        $lowerCaseName = $firstLetterLower . substr($controllerName,1);

        Router::connect('/' . $lowerCaseName . '/:action/*', array('controller' => $lowerCaseName));

    }
}
Router::connect('/:username', array('controller' => 'users', 'action' => 'views'), array('pass' => array('username')));
Router::connect('/', array('controller' => 'home', 'action' => 'index'));

问题是我无法在不执行操作的情况下路由我的控制器domain.com/controller。

这样可以: domain.com/blog/index domain.com/forum/index domain.com/users/login

这不起作用: domain.com/blog 它将被视为用户名

2 个答案:

答案 0 :(得分:0)

排除控制器名称在用户名路由中匹配。您应该有一个列表,以防止人们注册这些名称。

答案 1 :(得分:0)

把你这样的代码。这不会将博客视为用户名

Router::connect('/', array('controller' => 'home', 'action' => 'index'));
Router::connect('/blog', array('controller' => 'blog', 'action' => 'index'));
Router::connect('/:username', array('controller' => 'users', 'action' => 'views'), array('pass' => array('username')));

谢谢..!