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

CakePHP 2.x: How can I overwrite an URL pointing to the index page?

我遇到了这个问题:

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() 只是将 route/URL 连接到控制器操作。因此,使用您定义的路线,您应该能够转到 www.mysite.com 并且您的登录操作将被执行(尽管我不确定让基础 URL 充当登录页面是个好主意).

它不会阻止 www.mysite.com/controller/login 工作,因为这是 CakePHP 的默认路由之一。

要禁用默认路由,您需要从 routes.php 中删除此行:-

require CAKE . 'Config' . DS . 'routes.php';

请注意,如果删除此行,您必须在应用程序的路由文件中为所有页面定义路由。这不一定是坏事,Beware the Route to Evil 是一本很好的读物。

因为我使用了 "Auth" 组件,所以我必须在函数

中添加

beforeFilter()

我的控制器这一行:

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