public function onKernelException(GetResponseForExceptionEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $request = $event->getRequest(); if ('' !== rtrim($request->getPathInfo(), '/')) { return; } $ex = $event->getException(); if (!$ex instanceof NotFoundHttpException || !$ex->getPrevious() instanceof ResourceNotFoundException) { return; } $locale = $this->localeResolver->resolveLocale($request, $this->locales) ?: $this->defaultLocale; $request->setLocale($locale); $params = $request->query->all(); unset($params['hl']); $response = new RedirectResponse($request->getBaseUrl() . '/' . $locale . '/' . ($params ? '?' . http_build_query($params) : '')); $response->setPrivate(); $response->setMaxAge(0); $response->setSharedMaxAge(0); $response->headers->addCacheControlDirective('must-revalidate', true); $response->headers->addCacheControlDirective('no-store', true); $event->setResponse($response); }