diff -u b/core/lib/Drupal/Core/Routing/UrlGenerator.php b/core/lib/Drupal/Core/Routing/UrlGenerator.php --- b/core/lib/Drupal/Core/Routing/UrlGenerator.php +++ b/core/lib/Drupal/Core/Routing/UrlGenerator.php @@ -159,7 +159,6 @@ */ public function generateFromRoute($name, $parameters = array(), $options = array()) { $options += array('prefix' => ''); - $absolute = !empty($options['absolute']); $route = $this->getRoute($name); $this->processRoute($name, $route, $parameters); @@ -170,6 +169,9 @@ $path = $this->getInternalPathFromRoute($route, $parameters); $path = $this->processPath($path, $options); + + $absolute = !empty($options['absolute']); + if (!empty($options['prefix'])) { $path = ltrim($path, '/'); $prefix = empty($path) ? rtrim($options['prefix'], '/') : $options['prefix']; @@ -184,7 +186,7 @@ } $base_url = isset($options['base_url']) ? $options['base_url'] : $this->context->getBaseUrl(); - if (!$absolute || !$host = $this->context->getHost()) { + if (!$absolute || preg_match('/^http(s)?\:\\/\//', $base_url) === 1 || !$host = $this->context->getHost()) { return $base_url . $path . $fragment; }