Skip to content
Snippets Groups Projects
Commit c4a144e6 authored by Andreas Fernandez's avatar Andreas Fernandez Committed by Benni Mack
Browse files

[BUGFIX] Use scheme://host:port of current request resolving error page

Error pages in site configurations don't need to point to an absolute URI.
When such error pages get resolved, the scheme, host and port of the
request get attached to the resolved page.

Resolves: #86935
Releases: master, 9.5
Change-Id: I1b29b7e7ec51c67e6630ed0f2de5f7e3276e8e7d
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60630


Reviewed-by: default avatarJörg Bösche <typo3@joergboesche.de>
Reviewed-by: default avatarMathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: default avatarTizian Schmidlin <st@cabag.ch>
Reviewed-by: default avatarBenni Mack <benni@typo3.org>
Tested-by: default avatarTYPO3com <noreply@typo3.com>
Tested-by: default avatarTizian Schmidlin <st@cabag.ch>
Tested-by: default avatarBenni Mack <benni@typo3.org>
parent 26efdc64
Branches
Tags
No related merge requests found
......@@ -72,6 +72,7 @@ class PageContentErrorHandler implements PageErrorHandlerInterface
$resolvedUrl = $this->resolveUrl($request, $this->errorHandlerConfiguration['errorContentSource']);
$content = null;
$report = [];
if ($resolvedUrl !== (string)$request->getUri()) {
$content = GeneralUtility::getUrl($resolvedUrl, 0, null, $report);
if ($content === false && ((int)$report['error'] === -1 || (int)$report['error'] > 200)) {
......@@ -112,10 +113,28 @@ class PageContentErrorHandler implements PageErrorHandlerInterface
if (!$language instanceof SiteLanguage || !$language->isEnabled()) {
$language = $site->getDefaultLanguage();
}
// Build Url
return (string)$site->getRouter()->generateUri(
$uri = $site->getRouter()->generateUri(
(int)$urlParams['pageuid'],
['_language' => $language]
);
// Fallback to the current URL if the site is not having a proper scheme and host
$currentUri = $request->getUri();
if (empty($uri->getScheme())) {
$uri = $uri->withScheme($currentUri->getScheme());
}
if (empty($uri->getUserInfo())) {
$uri = $uri->withUserInfo($currentUri->getUserInfo());
}
if (empty($uri->getHost())) {
$uri = $uri->withHost($currentUri->getHost());
}
if ($uri->getPort() === null) {
$uri = $uri->withPort($currentUri->getPort());
}
return (string)$uri;
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment