diff --git a/composer.lock b/composer.lock index 3be5bb62511..33550a105c9 100644 --- a/composer.lock +++ b/composer.lock @@ -8507,7 +8507,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -8531,5 +8531,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/tests/e2e/Services/Sites/SitesCustomServerTest.php b/tests/e2e/Services/Sites/SitesCustomServerTest.php index bf9eb0dc292..249e4d6edbf 100644 --- a/tests/e2e/Services/Sites/SitesCustomServerTest.php +++ b/tests/e2e/Services/Sites/SitesCustomServerTest.php @@ -2430,4 +2430,38 @@ public function testDomainForFailedDeloyment(): void $this->cleanupSite($siteId); } + + public function testPermanentRedirect(): void + { + $siteId = $this->setupSite([ + 'siteId' => ID::unique(), + 'name' => 'Sub project site', + 'framework' => 'other', + 'buildRuntime' => 'node-22', + 'outputDirectory' => './' + ]); + $this->assertNotEmpty($siteId); + + $domain = $this->setupSiteDomain($siteId); + $this->assertNotEmpty($domain); + + $deploymentId = $this->setupDeployment($siteId, [ + 'code' => $this->packageSite('sub-directories'), + 'activate' => 'true' + ]); + $this->assertNotEmpty($deploymentId); + + $proxyClient = new Client(); + $proxyClient->setEndpoint('http://' . $domain); + $response = $proxyClient->call(Client::METHOD_GET, '/'); + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertStringContainsString('Sub-directory index', $response['body']); + $response1 = $proxyClient->call(Client::METHOD_GET, '/project1'); + $this->assertEquals(200, $response1['headers']['status-code']); + $this->assertStringContainsString('Sub-directory project1', $response1['body']); + $response2 = $proxyClient->call(Client::METHOD_GET, '/project1/'); + $this->assertEquals(200, $response2['headers']['status-code']); + $this->assertStringContainsString('Sub-directory project1', $response2['body']); + $this->cleanupSite($siteId); + } } diff --git a/tests/resources/sites/sub-directories/index.html b/tests/resources/sites/sub-directories/index.html new file mode 100644 index 00000000000..d21a10191cf --- /dev/null +++ b/tests/resources/sites/sub-directories/index.html @@ -0,0 +1,5 @@ + + +

Sub-directory index

+ + diff --git a/tests/resources/sites/sub-directories/project1/index.html b/tests/resources/sites/sub-directories/project1/index.html new file mode 100644 index 00000000000..8fc477991ca --- /dev/null +++ b/tests/resources/sites/sub-directories/project1/index.html @@ -0,0 +1,5 @@ + + +

Sub-directory project1

+ + \ No newline at end of file