diff --git a/core/modules/system/tests/src/Functional/Update/RebuildScriptTest.php b/core/modules/system/tests/src/Functional/Update/RebuildScriptTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a684b037f71db88155a9f6fd965335e67e9ddc07 --- /dev/null +++ b/core/modules/system/tests/src/Functional/Update/RebuildScriptTest.php @@ -0,0 +1,40 @@ +<?php + +namespace Drupal\Tests\system\Functional\Update; + +use Drupal\Core\Url; +use Drupal\Tests\BrowserTestBase; + +/** + * Tests the rebuild script access and functionality. + * + * @group Rebuild + */ +class RebuildScriptTest extends BrowserTestBase { + + /** + * Test redirect in rebuild.php. + */ + public function testRebuild() { + $cache = $this->container->get('cache.default'); + + $cache->set('rebuild_test', TRUE); + $this->drupalGet(Url::fromUri('base:core/rebuild.php')); + $this->assertUrl(new Url('<front>')); + $this->assertTrue($cache->get('rebuild_test')); + + $settings['settings']['rebuild_access'] = (object) [ + 'value' => TRUE, + 'required' => TRUE, + ]; + + $this->writeSettings($settings); + $this->rebuildAll(); + + $cache->set('rebuild_test', TRUE); + $this->drupalGet(Url::fromUri('base:core/rebuild.php')); + $this->assertUrl(new Url('<front>')); + $this->assertFalse($cache->get('rebuild_test')); + } + +} diff --git a/core/rebuild.php b/core/rebuild.php index 6f37360ca643d377d287f9170f5507daf65e37c5..49153f214570e60c36ce0d25e94c42d5b65133fc 100644 --- a/core/rebuild.php +++ b/core/rebuild.php @@ -54,4 +54,4 @@ \Drupal::messenger()->addStatus('Cache rebuild complete.'); } $base_path = dirname(dirname($request->getBaseUrl())); -header('Location: ' . $base_path); +header('Location: ' . $request->getSchemeAndHttpHost() . $base_path);