繁体   English   中英

CakePHP 3 中的 301 重定向

[英]301 Redirects in CakePHP 3

我是 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>

作为解决此问题的第一眼,不是将Route::scopeRouter::connectRouter::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM