0

/404如果出现 404 错误,我正在尝试将 Symfony 重定向到另一条路由。在ExceptionController.php文件中,我正在寻找错误代码 404。当出现错误 404 时,重定向到my-domain.com/404. 我想将我的用户重定向到另一个 404 页面是因为我的自定义 404 页面来自另一个包。

下面是我写的代码。当我访问一个不存在的网站时,我看到的是 500 服务器错误页面,而不是我预期的重定向 404 页面。我错过了什么吗?

if ($code == '404') {
    return $this->redirect("/404");
}
4

2 回答 2

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');
    }
}
于 2013-01-11T00:39:07.260 回答
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.');
于 2013-01-10T22:48:44.897 回答