diff --git a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
index 42688d9c560eb68b232c87f8a68d91a5fe3bf302..b2e17a43b9d78a59a098a5905cd9b816b0a94409 100644
--- a/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
+++ b/typo3/sysext/viewpage/Classes/Controller/ViewModuleController.php
@@ -68,15 +68,19 @@ class ViewModuleController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionContr
 		// Modify relative path to protocol with host if domain record is given
 		$protocolAndHost = '..';
 		if ($domainName) {
-			$protocol = 'http';
-			$page = (array)$sysPage->getPage($finalPageIdToShow);
-			if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) {
-				$protocol = 'https';
+			// TCEMAIN.previewDomain can contain the protocol, check prevents double protocol URLs
+			if (strpos($domainName, '://') !== FALSE) {
+				$protocolAndHost = $domainName;
+			} else {
+				$protocol = 'http';
+				$page = (array)$sysPage->getPage($finalPageIdToShow);
+				if ($page['url_scheme'] == 2 || $page['url_scheme'] == 0 && \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SSL')) {
+					$protocol = 'https';
+				}
+				$protocolAndHost = $protocol . '://' . $domainName;
 			}
-			$protocolAndHost = $protocol . '://' . $domainName;
 		}
-		$url = $protocolAndHost . '/index.php?id=' . $finalPageIdToShow . $this->getTypeParameterIfSet($finalPageIdToShow) . $mountPointMpParameter . $adminCommand;
-		return $url;
+		return $protocolAndHost . '/index.php?id=' . $finalPageIdToShow . $this->getTypeParameterIfSet($finalPageIdToShow) . $mountPointMpParameter . $adminCommand;
 	}
 
 	/**