[英]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.