diff --git a/laravel/routing/route.php b/laravel/routing/route.php index ee1893d7..96629c60 100644 --- a/laravel/routing/route.php +++ b/laravel/routing/route.php @@ -214,11 +214,11 @@ public function is($name) */ public function handles($uri) { - $pattern = '#'.str_replace('*', '(.*)', $uri).'#'; + $pattern = ($uri !== '/') ? str_replace('*', '(.*)', $uri) : '^/$'; return ! is_null(array_first($this->uris, function($key, $uri) use ($pattern) { - return preg_match($pattern, $uri); + return preg_match('#'.$pattern.'#', $uri); })); } diff --git a/tests/cases/laravel/route.test.php b/tests/cases/laravel/route.test.php index 5be4f2ec..7677d9e1 100644 --- a/tests/cases/laravel/route.test.php +++ b/tests/cases/laravel/route.test.php @@ -19,10 +19,11 @@ public function testHandlesIndicatesIfTheRouteHandlesAGivenURI() { $route = new Laravel\Routing\Route('GET /', array('handles' => array('GET /foo/bar'))); - $this->assertFalse($route->handles('/')); - $this->assertFalse($route->handles('baz')); $this->assertTrue($route->handles('foo/*')); $this->assertTrue($route->handles('foo/bar')); + $this->assertFalse($route->handles('/')); + $this->assertFalse($route->handles('baz')); + $this->assertFalse($route->handles('/foo')); $route = new Laravel\Routing\Route('GET /', array('handles' => array('GET /', 'GET /home')));