diff --git a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php index 0ab3839f..b21c408d 100644 --- a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php +++ b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php @@ -35,6 +35,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; +use TYPO3\CMS\Core\Exception\SiteNotFoundException; use TYPO3\CMS\Core\Http\NormalizedParams; use TYPO3\CMS\Core\Http\RedirectResponse; use TYPO3\CMS\Core\Site\SiteFinder; @@ -107,9 +108,24 @@ class TrackingMiddleware implements MiddlewareInterface $targetPage = $redirect['target_page_uid']; $responseCode = $redirect['response_code']; + // Fallback for old t3:// links + if (1 === preg_match('/^t3:\/\/page\?uid=(\d+)$/', $targetPage, $matches)) { + $targetPage = $matches[1]; + } + + // Skip redirecting of non-numeric page uids like full urls + if (false === is_numeric($targetPage)) { + return null; + } + /** @var SiteFinder $siteFinder */ $siteFinder = GeneralUtility::makeInstance(SiteFinder::class); - $site = $siteFinder->getSiteByPageId($targetPage); + try { + $site = $siteFinder->getSiteByPageId((int)$targetPage); + } + catch (SiteNotFoundException $exception) { + return null; + } $params = [];