diff --git a/flight/net/Request.php b/flight/net/Request.php index 8f8ecf8..aceda0b 100644 --- a/flight/net/Request.php +++ b/flight/net/Request.php @@ -177,6 +177,9 @@ final class Request } // Get the requested URL without the base directory + // This rewrites the url in case the public url and base directories match + // (such as installing on a subdirectory in a web server) + // @see testInitUrlSameAsBaseDirectory if ('/' !== $this->base && '' !== $this->base && 0 === strpos($this->url, $this->base)) { $this->url = substr($this->url, \strlen($this->base)); } diff --git a/tests/RequestTest.php b/tests/RequestTest.php index dc7c5cf..a2e4eec 100644 --- a/tests/RequestTest.php +++ b/tests/RequestTest.php @@ -7,6 +7,7 @@ */ use flight\net\Request; +use flight\util\Collection; class RequestTest extends PHPUnit\Framework\TestCase { @@ -154,4 +155,14 @@ class RequestTest extends PHPUnit\Framework\TestCase $request = new Request(); self::assertEquals('http', $request->scheme); } + + public function testInitUrlSameAsBaseDirectory() { + $request = new Request([ + 'url' => '/vagrant/public/flightphp', + 'base' => '/vagrant/public', + 'query' => new Collection(), + 'type' => '' + ]); + $this->assertEquals('/flightphp', $request->url); + } }