diff --git a/resources/server/router.php b/resources/server/router.php index a4c043218..9660daec0 100644 --- a/resources/server/router.php +++ b/resources/server/router.php @@ -144,26 +144,19 @@ $headersFile = $_SERVER['DOCUMENT_ROOT'] . '/../' . SERVER_TMP_DIR . '/headers.ini'; if (file_exists($headersFile)) { $headersArray = parse_ini_file($headersFile, true); - // joker path tree - $pathParts = explode('/', pathinfo($path, PATHINFO_DIRNAME)); - $previous = ''; - for ($i = 0; $i < \count($pathParts); $i++) { - $headersSectionKey = $previous . \sprintf('/%s/*', trim($pathParts[$i], '\\')); - $previous .= '/' . $pathParts[$i]; - $headersSectionKey = '/' . trim($headersSectionKey, '/'); - if (\array_key_exists($headersSectionKey, $headersArray)) { - foreach ($headersArray[$headersSectionKey] as $key => $value) { - header("$key: " . $value); + // path with wildcard + foreach ($headersArray as $source => $headers) { + list($match) = sscanf($path, str_replace('*', '%s', $source)); + if ($match !== null) { + foreach ($headers as $key => $value) { + header("$key: $value"); } } - if (empty($pathParts[1])) { - break; - } } // exact file path if (\array_key_exists($path, $headersArray)) { foreach ($headersArray[$path] as $key => $value) { - header("$key: " . $value); + header("$key: $value"); } } } diff --git a/src/Command/Serve.php b/src/Command/Serve.php index e25564572..55fa3892b 100644 --- a/src/Command/Serve.php +++ b/src/Command/Serve.php @@ -248,6 +248,7 @@ private function buildSuccess(OutputInterface $output): void // writes `headers.ini` file if (null !== $headers = $this->getBuilder()->getConfig()->get('headers')) { $output->writeln('Writing headers file...'); + Util\File::getFS()->remove(Util::joinFile($this->getPath(), self::TMP_DIR, 'headers.ini')); foreach ($headers as $header) { Util\File::getFS()->appendToFile(Util::joinFile($this->getPath(), self::TMP_DIR, 'headers.ini'), "[{$header['source']}]\n"); foreach ($header['headers'] as $h) {