[英]301 Redirects in CakePHP 3
我是 CakePHP 的新手。 我有一个由别人在CakePHP 3.3.16 中构建的网站。 有指向website.com/page和website.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>
作为解决此问题的第一眼,不是将Route::scope
为Router::connect
和Router::redirect
imo。 因此,解决方案的方法将首先做这样的事情。
Router::connect('/page/*', ['controller' => 'Page', 'action' => 'something']);
然后使用 cake 命令重定向重定向页面:
Router::redirect('/page/','/page', array('status' => 301));
在我使用的 CakePhp 2.6 项目中,我总是根据任务重定向这样的页面。 有时您可以在控制器内部执行这种类型的重定向,但最好避免它,因为不要将路由与编程逻辑混合在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.