0

/404404エラーが発生した場合、Symfonyを別のルートにリダイレクトしようとしています。ExceptionController.phpファイルで、エラーコード404を探しています。エラー404が存在する場合は、にリダイレクトしますmy-domain.com/404。ユーザーを別の404ページにリダイレクトしたいのは、カスタム404ページが別のバンドルからのものであるためです。

以下は私が書いたコードです。存在しないWebサイトにアクセスすると、リダイレクトされた404ページではなく、500サーバーのエラーページが表示されます。私は何かが足りないのですか?

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 に答える