如果出现404错误,我正尝试将Symfony重定向到另一条路由/404
。在ExceptionController.php
文件中,我正在查找错误代码404.当出现错误404时,重定向到my-domain.com/404
。我想将我的用户重定向到另一个404页面是因为我的自定义404页面来自另一个包。
以下是我编写的代码。当我访问一个不存在的网站时,我会看到一个500服务器错误页面,而不是我预期的重定向404页面。我错过了什么吗?
if ($code == '404') {
return $this->redirect("/404");
}
答案 0 :(得分:2)
我看了一下,据我所知,它不可能有一个错误页面
束。它必须是app/Resources/views/Exception/error404.html.twig
但是,您可以通过利用HttpFoundation组件
返回自定义响应<?php
namespace Acme\WhateverBundle\Controller;
//...
use Symfony\Component\HttpFoundation\Response;
class MyController extends Controller
{
//...
public function takeAction()
{
//..
if ($notFound) {
$twig = $this->container->get('templating');
$content = $twig->render('AcmeAnotherBundle:Exception:error404.html.twig');
return new Response($content, 404, array('Content-Type', 'text/html'));
}
// ...
return $this->render('AcmeWhateverBundle:Default:index.html.twig');
}
}
答案 1 :(得分:1)
您可以尝试使用Symfony的createNotFoundException()方法:
http://symfony.com/doc/2.0/book/controller.html#managing-errors-and-404-pages
不要重定向到404页面,而是在控制器中尝试:
throw $this->createNotFoundException('This page does not exist.');