diff --git a/core/lib/Drupal/Core/Routing/LocalAwareRedirectResponseTrait.php b/core/lib/Drupal/Core/Routing/LocalAwareRedirectResponseTrait.php
index 8ffa2f6..3c0cabe 100644
--- a/core/lib/Drupal/Core/Routing/LocalAwareRedirectResponseTrait.php
+++ b/core/lib/Drupal/Core/Routing/LocalAwareRedirectResponseTrait.php
@@ -25,7 +25,9 @@
    * {@inheritdoc}
    */
   protected function isLocal($url) {
-    return !UrlHelper::isExternal($url) || UrlHelper::externalIsLocal($url, $this->getRequestContext()->getCompleteBaseUrl());
+    return !UrlHelper::isExternal($url)
+      || UrlHelper::externalIsLocal($url, $this->getRequestContext()->getCompleteBaseUrl())
+      || in_array(parse_url($url, PHP_URL_HOST), \Drupal::moduleHandler()->invokeAll('local_domains'), TRUE);
   }
 
   /**
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 6d9f699..79aa6d4 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -495,3 +495,22 @@ function language_language_types_info_alter(array &$language_types) {
   $language_types[LanguageInterface::TYPE_CONTENT]['fixed'] = [LanguageNegotiationUI::METHOD_ID];
   $language_types[LanguageInterface::TYPE_URL]['fixed'] = [LanguageNegotiationUrl::METHOD_ID, LanguageNegotiationUrlFallback::METHOD_ID];
 }
+
+/**
+ * Implements hook_local_domains().
+ */
+function language_local_domains() {
+  $language_negation_config = \Drupal::config('language.negotiation');
+  // Check if the URL language negotiation uses domains.
+  if ($language_negation_config->get('url.source') == LanguageNegotiationUrl::CONFIG_DOMAIN) {
+    /** @var \Drupal\language\LanguageNegotiatorInterface $negotiator */
+    $negotiator = \Drupal::service('language_negotiator');
+    // Check if the URL negotiation is enabled for at least one language type.
+    foreach (\Drupal::languageManager()->getLanguageTypes() as $language_type) {
+      if (isset($negotiator->getNegotiationMethods($language_type)[LanguageNegotiationUrl::METHOD_ID])) {
+        return $language_negation_config->get('url.domains');
+      }
+    }
+  }
+  return [];
+}
