我遇到了这个问题:
Router::connect('/',array('controller' => 'Controller','action' => 'login'));
这将显示www.mysite/controller/login
为站点 URL
我想www.mysite.com/controller/login
用 just覆盖www.mysite.com
,但仍然转到登录页面。有谁知道如何用 Cake 2.x 做到这一点?
我遇到了这个问题:
Router::connect('/',array('controller' => 'Controller','action' => 'login'));
这将显示www.mysite/controller/login
为站点 URL
我想www.mysite.com/controller/login
用 just覆盖www.mysite.com
,但仍然转到登录页面。有谁知道如何用 Cake 2.x 做到这一点?
行为与您描述的不完全一样。
以下是做什么的:
Router::connect('/',array('controller' => 'Controller','action' => 'login'));
是允许您www.mysite.com
在浏览器中输入,并获取www.mysite.com/controller/login
呈现的视图。
它的工作方式类似于url 重写而不是重定向。因此,上述内容应按预期工作。但是,如果不是示例,请尝试以不同的方式命名您的控制器,因为这可能会导致 CakePHP 出现问题。
正如 Inigo 所说,Router::connect()
只是将路由/URL 连接到控制器操作。因此,使用您定义的路线,您应该能够转到www.mysite.com
并且您的登录操作将被提供(尽管我不确定将基本 URL 用作登录页面是否是一个好主意)。
它不会阻止www.mysite.com/controller/login
工作,因为这是 CakePHP 的默认路由之一。
要禁用默认路由,您需要从以下位置删除此行routes.php
:-
require CAKE . 'Config' . DS . 'routes.php';
请注意,如果您删除此行,您必须在应用程序的路由文件中为您的所有页面定义路由。这不一定是坏事,当心通往邪恶的道路是一本很好的读物。
当我使用“Auth”组件时,我必须在函数中添加
beforeFilter()
我的控制器这一行:
$this->Auth->allow('anAction', 'anotherAction', '**login**');