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**');
我遇到了这个问题:
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**');