【问题标题】:How to use Router Connect method correctly in CakePHP 2 and 3?如何在 CakePHP 2 和 3 中正确使用 Router Connect 方法?
【发布时间】:2017-04-09 08:57:45
【问题描述】:

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

$routes->connect('/member/login', [ 'controller' => 'MyUsers', 'action' => 'login', 'plugin'=>false, 'prefix'=>FALSE]);

现在我可以使用这两个不利于 SEO 的 URL 访问“登录”操作。

http://localhost/cakephpapp/member/login

http://localhost/cakephpapp/my-users/login

那么,如何禁用第二个 URL?

我试过这段代码运行良好,但我不知道这是否是正确的方法。

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

【问题讨论】:

    标签: redirect cakephp routes cakephp-3.0


    【解决方案1】:

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

    $routes->fallbacks('InflectedRoute');
    

    如文件中所述,您可以/应该在为您的应用程序设置路由后删除此行。如果您删除它,它还会阻止您的错误日志填充诸如“缺少控制器”之类的错误,这可能是生产站点上的一个问题,尤其是在它正在替换现有站点时。

    在 CakePHP 2 中,等效的行是这样的:-

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

    删除这些行确实意味着您必须为应用程序定义所有路由,但这可能比依赖 Cake(或任何框架)的自动路由更好。 Phil Sturgeon 有一篇很好的文章:Beware the Route to Evil。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      相关资源
      最近更新 更多