 <p>I think that the best way to do it is to <a href="http://symfony.com/doc/current/cookbook/controller/error_pages.html#overriding-the-default-exceptioncontroller" rel="nofollow">overriding the default ExceptionController</a>. Just extend it, and override the <code>findTemplate</code> method. Check from the request's attribute if there's <code>_route</code> or <code>_controller</code> set, and do something with it.</p> <pre><code>namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController; class ExceptionController extends BaseExceptionController { protected function findTemplate(Request $request, $format, $code, $showException) { $routeName = $request-&gt;attributes-&gt;get('_route'); // You can inject these routes in the construct of the controller // so that you can manage them from the configuration file instead of hardcode them here $routesAdminSection = ['admin', 'admin_ban', 'admin_list']; // This is a poor implementation with in_array. // You can implement more advanced options using regex // so that if you pass "^admin" you can match all the routes that starts with admin. // If the route name match, then we want use a different template: admin_error_CODE.FORMAT.twig // example: admin_error_404.html.twig if (!$showException &amp;&amp; in_array($routeName, $routesAdminSection, true)) { $template = sprintf('@AppBundle/Exception/admin_error_%s.%s.twig', $code, format); if ($this-&gt;templateExists($template)) { return $template; } // What you want to do if the template doesn't exist? // Just use a generic HTML template: admin_error.html.twig $request-&gt;setRequestFormat('html'); return sprintf('@AppBundle/Exception/admin_error.html.twig'); } // Use the default findTemplate method return parent::findTemplate($request, $format, $code, $showException); } } </code></pre> <p>Then configure <code>twig.exception_controller</code>:</p> <pre><code># app/config/services.yml services: app.exception_controller: class: AppBundle\Controller\ExceptionController arguments: ['@twig', '%kernel.debug%'] </code></pre> <p> <pre><code># app/config/config.yml twig: exception_controller: app.exception_controller:showAction </code></pre> <p>You can then override the template in the same way:</p> <ul> <li>Resources/AppBundle/views/Exceptions/ <ul> <li>admin_error.html.twig</li> <li>admin_error_404.html.twig</li> <li>admin_error_500.html.twig</li> <li>...</li> </ul></li> </ul> <h2>UPDATE</h2> <p>A simpler way to do this is to specify the section of the website inside the <code>defaults</code> collection of your routes. Example:</p> <pre><code># app/config/routing.yml home: path: / defaults: _controller: AppBundle:Main:index section: web blog: path: /blog/{page} defaults: _controller: AppBundle:Main:blog section: web dashboard: path: /admin defaults: _controller: AppBundle:Admin:dashboard section: admin stats: path: /admin/stats defaults: _controller: AppBundle:Admin:stats section: admin </code></pre> <p>then your controller become something like this:</p> <pre><code>namespace AppBundle\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController; class ExceptionController extends BaseExceptionController { protected function findTemplate(Request $request, $format, $code, $showException) { $section = $request-&gt;attributes-&gt;get('section'); $template = sprintf('@AppBundle/Exception/%s_error_%s.%s.twig', $section, $code, format); if ($this-&gt;templateExists($template)) { return $template; } return parent::findTemplate($request, $format, $code, $showException); } } </code></pre> <p>And configure <code>twig.exception_controller</code> in the same way as described above. Now you just need to define a template for each section, code and format.</p> <ul> <li>web_error_404.html.twig</li> <li>web_error_500.html.twig</li> <li>admin_error_404.html.twig</li> <li>admin_error_500.html.twig</li> <li>and so on...</li> </ul>