Redirect 如何在CakePHP 2和3中正确使用路由器连接方法?

Redirect 如何在CakePHP 2和3中正确使用路由器连接方法?,redirect,cakephp,routes,cakephp-3.0,Redirect,Cakephp,Routes,Cakephp 3.0,我有一个带有操作登录名的控制器MyUsersController。 我已将此映射为: $routes->connect('/member/login', [ 'controller' => 'MyUsers', 'action' => 'login', 'plugin'=>false, 'prefix'=>FALSE]); 现在我可以使用这两个URL访问这个“登录”操作,这对SEO不好 http://localhost/cakephpapp/member/logi

我有一个带有操作登录名的控制器MyUsersController。 我已将此映射为:

$routes->connect('/member/login', [ 'controller' => 'MyUsers', 'action' => 'login', 'plugin'=>false, 'prefix'=>FALSE]);
现在我可以使用这两个URL访问这个“登录”操作,这对SEO不好

http://localhost/cakephpapp/member/login

http://localhost/cakephpapp/my-users/login
那么,如何禁用第二个URL

我已经尝试过这个代码,它工作得很好,但我不知道这是否是正确的方法

$routes->redirect('/my-users/login', '/member/login');

默认路由文件中有一行提供回退,以便您可以使用
controller/action
访问页面。这确实可以帮助您快速构建应用程序。在CakePHP 3中,这是:-

$routes->fallbacks('InflectedRoute');
如文件中所述,一旦为应用程序设置了路由,您可以/应该删除这一行。如果删除此项,还将防止错误日志中出现诸如“缺少控制器”之类的错误,这可能是生产站点上的一个问题,尤其是在替换现有控制器时

在CakePHP 2中,等效线如下:-

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

删除这些行确实意味着您必须为应用程序定义所有路由,但这可能比依赖automagic routes of Cake(或任何框架)更好。Phil Sturgeon在这方面有一篇很好的文章:。

默认路由文件中有一行提供了回退,因此您可以使用
控制器/action
访问页面。这确实可以帮助您快速构建应用程序。在CakePHP 3中,这是:-

$routes->fallbacks('InflectedRoute');
如文件中所述,一旦为应用程序设置了路由,您可以/应该删除这一行。如果删除此项,还将防止错误日志中出现诸如“缺少控制器”之类的错误,这可能是生产站点上的一个问题,尤其是在替换现有控制器时

在CakePHP 2中,等效线如下:-

require CAKE . 'Config' . DS . 'routes.php';
删除这些行确实意味着您必须为应用程序定义所有路由,但这可能比依赖automagic routes of Cake(或任何框架)更好。菲尔·斯特金(Phil Sturgeon)有一篇关于这方面的好文章: