diff --git a/src/Illuminate/Routing/CompiledRouteCollection.php b/src/Illuminate/Routing/CompiledRouteCollection.php index fee11ac60767..8f0525cfae57 100644 --- a/src/Illuminate/Routing/CompiledRouteCollection.php +++ b/src/Illuminate/Routing/CompiledRouteCollection.php @@ -109,14 +109,10 @@ public function refreshActionLookups() */ public function match(Request $request) { - $trimmedRequest = clone $request; - - $trimmedRequest->server->set( - 'REQUEST_URI', rtrim($request->server->get('REQUEST_URI'), '/') - ); - $matcher = new CompiledUrlMatcher( - $this->compiled, (new RequestContext)->fromRequest($trimmedRequest) + $this->compiled, (new RequestContext)->fromRequest( + $trimmedRequest = $this->requestWithoutTrailingSlash($request) + ) ); $route = null; @@ -148,6 +144,23 @@ public function match(Request $request) return $this->handleMatchedRoute($request, $route); } + /** + * Get a cloned instance of the given request without any trailing slash on the URI. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Request + */ + protected function requestWithoutTrailingSlash(Request $request) + { + $trimmedRequest = clone $request; + + $trimmedRequest->server->set( + 'REQUEST_URI', rtrim($request->server->get('REQUEST_URI'), '/') + ); + + return $trimmedRequest; + } + /** * Get routes from the collection by method. *