301 перенаправления в торт PHP 3 - PullRequest
3 голосов
/ 09 января 2020

Я новичок в Cake PHP. У меня есть сайт, созданный кем-то другим в Cake PHP 3.3.16 . Есть ссылки на website.com / page , а также website.com / page / .

Как лучше всего перенаправить / page / на / page , не затрагивая ничего, что может начинаться с / page / ?

У маршрута . php есть это ...

$routes->connect('/page/*', ['controller' => 'Page', 'action' => 'something']);

Тогда у меня есть PageController. php, который имеет

public function something($site_id = null)
{
...
}

Будет ли это работать на маршрутах . 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>

1 Ответ

1 голос
/ 09 января 2020

как первый проблеск, чтобы исправить это было бы вместо того, чтобы поставить Route::scope будет Router::connect и Router::redirect ИМО. Таким образом, подход к решению будет сначала делать что-то вроде этого.

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

И затем вы перенаправляете страницу с помощью команды перенаправления торт:

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

В проекте, который я используйте Cake Php 2.6, у меня всегда такие страницы перенаправляются в зависимости от задачи. Иногда вы можете делать такой тип перенаправлений внутри контроллера, но лучше избегать этого, так как не смешиваете маршрутизацию с логикой программирования c.

...