301在CakePHP 3中重定向

301在CakePHP 3中重定向,php,redirect,cakephp,http-status-code-301,Php,Redirect,Cakephp,Http Status Code 301,我是CakePHP新手。我有一个网站是别人在CakePHP 3.3.16中创建的。有到网站/com/page和网站/com/page/的链接 在不影响以/page/开头的任何其他内容的情况下,让/page/重定向到/page的最佳方法是什么 route.php有以下内容 $routes->connect('/page/*', ['controller' => 'Page', 'action' => 'something']); 然后我有一个PageController.php

我是CakePHP新手。我有一个网站是别人在CakePHP 3.3.16中创建的。有到网站/com/page网站/com/page/的链接

在不影响以/page/开头的任何其他内容的情况下,让/page/重定向到/page的最佳方法是什么

route.php有以下内容

$routes->connect('/page/*', ['controller' => 'Page', 'action' => 'something']);
然后我有一个PageController.php,它

public function something($site_id = null)
{
...
}
这在routes.php中有效吗?如何指定这是301重定向

use Cake\Routing\RouteBuilder;
Router::scope('/', function (RouteBuilder $routes) {
      $routes->redirect('/page/','http://website.com/page');
      $routes->connect('/page/?*', ['controller' => 'Page', 'action' => 'something']);
   });

这在中似乎不起作用。htaccess(/page/显示且未重定向)

重定向301/页/http://website.com/page
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

首先要解决的问题是将
路由::范围
设置为
路由器::连接
路由器::重定向
imo。 因此,解决方案的方法是首先做这样的事情

 Router::connect('/page/*', ['controller' => 'Page', 'action' => 'something']);
然后使用cake命令重定向页面:

 Router::redirect('/page/','/page', array('status' => 301));

在我使用的CakePHP2.6项目中,我总是根据任务重定向这样的页面。有时,您可以在控制器内部执行这种类型的重定向,但最好避免这样做,因为不要将路由与编程逻辑混合在一起

有道理,谢谢。问题:
redirect()
不一定要在
connect()
之前,否则/page/会转到控制器吗?我总是把redirect放在
connect()
之后,就我个人而言,它总是这样完美地工作。规则不匹配,因为/page/*!=/page/,需要与/page/text匹配。允许您捕获/page/并根据需要重定向到/page。它可以高于或低于
 Router::redirect('/page/','/page', array('status' => 301));