Skip to content
Snippets Groups Projects

Resolve #3394858 "Language redirects should be temporary"

1 file
+ 14
1
Compare changes
  • Side-by-side
  • Inline
@@ -136,7 +136,20 @@ class RouteNormalizerRequestSubscriber implements EventSubscriberInterface {
$original_uri = $request->getSchemeAndHttpHost() . $request->getRequestUri();
$original_uri = urldecode($original_uri);
if (urldecode($redirect_uri) != $original_uri) {
$response = new TrustedRedirectResponse($redirect_uri, $this->config->get('default_status_code'));
$status_code = $this->config->get('default_status_code');
$language_negotiation_config = \Drupal::config('language.negotiation')->get('url');
$current_langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
if ($language_negotiation_config['source'] == "path_prefix") {
$prefix = $language_negotiation_config['prefixes'][$current_langcode];
$redirect_relative_uri = $this->urlGenerator->generateFromRoute($route_name);
$prefixed_original_uri = rtrim('/' . $prefix . $request->getRequestUri(), '/');
if (urldecode($redirect_relative_uri) == $prefixed_original_uri) {
// Language redirections should be 302 as they are temporary.
$status_code = 302;
}
}
$response = new TrustedRedirectResponse($redirect_uri, $status_code);
$response->headers->set('X-Drupal-Route-Normalizer', 1);
$event->setResponse($response);
}
Loading