Перенаправление (редирект)

Перенаправление на указанную страницу

Перенаправить на указанную страницу можно через метод $this->redirect().

# src/Controller/PostsController.php
use Symfony\Component\HttpFoundation\RedirectResponse;

public function index()
{
    return $this->redirect('url');
}

По умолчанию, перенаправление возвращает статус 302. Если идёт перенаправление со старого адреса страницы на новый, то рекомендуется указывать статус 301.

return $this->redirect('url', 301);

Постоянные перенаправления рекомендуется указывать в настройках веб-сервера, т.к. перенаправление будет происходить сразу, без загрузки текущей страницы.

Перенаправление по имени страницы

При создании страницы, можно указывать её имя.

/** @Route("/posts/", name="posts_index") **/
public function index() {
    // код
}

Через метод $this->redirectToRoute() можно делать перенаправление, указывая имя страницы.

# src/Controller/PostsController.php
use Symfony\Component\HttpFoundation\RedirectResponse;

public function index()
{
    // 1-ый способ
    return $this->redirectToRoute('posts_index');

    // 2-ой способ (с параметрами)
    return $this->redirectToRoute('posts_view', ['id' => 15]);
}

По умолчанию метод $this->redirectToRoute() возвращает код 302. Указать статус страницы 301 можно через третий параметр.

return $this->redirectToRoute('posts_index', [], 301);
return $this->redirectToRoute('posts_view', ['id' => 15], 301);