diff --git a/core/lib/Drupal/Core/Routing/UrlMatcher.php b/core/lib/Drupal/Core/Routing/UrlMatcher.php index 49bff8f..bd1d6cb 100644 --- a/core/lib/Drupal/Core/Routing/UrlMatcher.php +++ b/core/lib/Drupal/Core/Routing/UrlMatcher.php @@ -43,7 +43,12 @@ public function finalMatch(RouteCollection $collection, Request $request) { $context->fromRequest($request); $this->setContext($context); - return $this->match($this->currentPath->getPath($request)); + // The matcher expects raw path while we have it already decoded by the + // \Drupal\Core\PathProcessor\PathProcessorDecode. Encode it back so that + // route parameter are not double decoded. + $encoded_path = rawurlencode($this->currentPath->getPath($request)); + + return $this->match($encoded_path); } }