簡體   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