CakePHP 2.x:如何覆盖指向索引页的URL?

CakePHP 2.x:如何覆盖指向索引页的URL?,url,cakephp,indexing,routing,cakephp-2.x,Url,Cakephp,Indexing,Routing,Cakephp 2.x,我得到了这个问题: Router::connect('/',array('controller' => 'Controller','action' => 'login')); 这将显示www.mysite/controller/login作为站点URL 我想用www.mysite.com覆盖www.mysite.com/controller/login,但仍要转到登录页面。有人知道如何使用Cake 2.x吗?它的行为与您描述的不完全一样 以下内容的作用: Router::conne

我得到了这个问题:

Router::connect('/',array('controller' => 'Controller','action' => 'login'));
这将显示
www.mysite/controller/login
作为站点URL


我想用
www.mysite.com
覆盖
www.mysite.com/controller/login
,但仍要转到登录页面。有人知道如何使用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';
请注意,如果删除此行,则必须在应用程序的routes文件中为所有页面定义路由。这不一定是一件坏事,这是一本很好的读物。

当我使用“Auth”组件时,我不得不添加到函数中

beforeFilter()

我的控制器的这一行:


$this->Auth->allow('anaaction','anotherAction','**login**')

谢谢。你知道如何重写url吗?如上所述,url重写是默认的。如果需要重定向,可以在操作中调用
$this->redirect()
。我不需要重定向。我只需要在不使用任何jsp的情况下从URL栏“隐藏”“/controller/login”如果您加载了
Auth
组件,这可能就是原因,这就是预期的行为。您可以修改
登录操作
以指向
/
。见