From d06dee7effac635fa28beb7481c2478594ee8d01 Mon Sep 17 00:00:00 2001 From: Benni Mack <benni@typo3.org> Date: Wed, 17 Apr 2019 23:17:00 +0200 Subject: [PATCH] [BUGFIX] Ensure www.mydomain.com/index.php works Calling just "index.php" without "id" and "type" parameter should work as expected, as before. Resolves: #88028 Releases: master, 9.5 Change-Id: I36df591b8b334b9b5908563ca554cab98acba32a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60503 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Alexander Opitz <opitz.alexander@googlemail.com> Tested-by: Josef Glatz <josefglatz@gmail.com> Tested-by: Susanne Moog <look@susi.dev> Reviewed-by: Alexander Opitz <opitz.alexander@googlemail.com> Reviewed-by: Josef Glatz <josefglatz@gmail.com> Reviewed-by: Susanne Moog <look@susi.dev> --- typo3/sysext/core/Classes/Routing/PageRouter.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/typo3/sysext/core/Classes/Routing/PageRouter.php b/typo3/sysext/core/Classes/Routing/PageRouter.php index b0a2112d136b..5b63df2b6817 100644 --- a/typo3/sysext/core/Classes/Routing/PageRouter.php +++ b/typo3/sysext/core/Classes/Routing/PageRouter.php @@ -29,6 +29,7 @@ use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction; use TYPO3\CMS\Core\Database\Query\Restriction\FrontendWorkspaceRestriction; use TYPO3\CMS\Core\Exception\SiteNotFoundException; +use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\CMS\Core\Http\Uri; use TYPO3\CMS\Core\Routing\Aspect\AspectFactory; use TYPO3\CMS\Core\Routing\Aspect\MappableProcessor; @@ -117,6 +118,17 @@ class PageRouter implements RouterInterface throw new RouteNotFoundException('No previous result given. Cannot find a page for an empty route part', 1555303496); } $urlPath = $previousResult->getTail(); + // Remove the script name (e.g. index.php), if given + if (!empty($urlPath)) { + $normalizedParams = $request->getAttribute('normalizedParams'); + if ($normalizedParams instanceof NormalizedParams) { + $scriptName = ltrim($normalizedParams->getScriptName(), '/'); + if (strpos($urlPath, $scriptName) !== false) { + $urlPath = str_replace($scriptName, '', $urlPath); + } + } + } + $prefixedUrlPath = '/' . trim($urlPath, '/'); $slugCandidates = $this->getCandidateSlugsFromRoutePath($urlPath ?: '/'); $pageCandidates = []; -- GitLab