request instanceof Http || $result === '' || $result === null) { return $result; } $effectiveType = $type ?? UrlInterface::URL_TYPE_LINK; if (!\in_array($effectiveType, [ UrlInterface::URL_TYPE_LINK, UrlInterface::URL_TYPE_DIRECT_LINK, UrlInterface::URL_TYPE_WEB, ], true)) { return $result; } if ($this->tunnelRequestDetector->getTunnelStoreCode($this->request) === null) { return $result; } $parts = parse_url($result); if ($parts === false || empty($parts['host'])) { return $result; } $requestHost = $this->request->getHttpHost(); if ($requestHost === '' || strcasecmp((string) $parts['host'], $requestHost) === 0) { return $result; } $scheme = $this->request->isSecure() ? 'https' : 'http'; $path = $parts['path'] ?? '/'; $query = isset($parts['query']) ? '?' . $parts['query'] : ''; $fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : ''; return $scheme . '://' . $requestHost . $path . $query . $fragment; } }