[CakePHP 3中的301重定向

问题描述 投票:3回答:1

我是CakePHP的新手。我有一个由其他人在CakePHP 3.3.16中建立的网站。有指向website.com/pagewebsite.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 /且未重定向)...Redirect 301 /page/ http://website.com/page <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
php redirect cakephp http-status-code-301
1个回答
1
投票
作为第一眼解决这个问题,不是将Route::scope设置为Router::connectRouter::redirect imo。因此,一种解决方案的方法是首先要做类似的事情。

Router::connect('/page/*', ['controller' => 'Page', 'action' => 'something']);

然后您通过cake命令重定向来重定向页面:

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

在我使用的CakePhp 2.6项目中,根据任务的不同,我总是重定向这样的页面。有时,您可以在Controller内部执行这种重定向,但是最好避免这种重定向,因为它不会将路由与编程逻辑混合在一起。 
© www.soinside.com 2019 - 2024. All rights reserved.