RealURL Multidomain Umsetzung im Singletree mit http - https Umschaltung

Für ein Kundenprojekt standen wir vor der Aufgabe in einem multilingualen Singletree TYPO3 RealURL so zu konfigurieren, dass jede Sprache auf einer Subdomain liegt. Zusätzlich sollten einzelne Seiten über https angesprochen werden. Allerdings nicht die gesamte Seite.

Zuerst RealURL installieren, ins Typoscript:

 

 config {
 
 prefixLocalAnchors = all
 
 simulateStaticDocuments = 0
 
 baseURL = de.domain.tld
 
 tx_realurl_enable = 1
 
 } 

 

Danach für jede Sprache ins Typoscript:

 

[globalVar = GP:L = 1]||[globalVar = GP:L = en] || [globalString = IENV:HTTP_HOST = en.domain.tld]
 config {
 sys_language_uid = 1 #(richtige id einstellen)
 locale_all = en_GB.utf8
 language = en
 htmlTag_langKey = en-GB
 baseURL=http://en.domain.tld/
 page.headerData.100 = TEXT 
 }
 [global] 

 

Dieser Codeblock muss für jede Sprachversion übernommen werden. Die globalVar bzw. globalString können abweichen.

Um die https Umschaltung für einzelne Seiten zu ermöglichen muss nach der Installation der Extension ax_https (bitte zur Installation der Extension Doku im TER lesen, es gibt ab 6.0 auch eine Core Funktionalität mit der sich das Protokoll erzwingen lässt) noch das ins Typoscript, sonst werden die Links nicht richtig erzeugt:

 

 [page|tx_axhttps_protocol = 1] && [globalVar = GP:L = 1]
 config.baseURL = en.domain.tld
 [global] 

 

RealURL sollte dann so konfiguriert werden (realurl_conf.php):

 

 $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array(
 '_DEFAULT' => array(
 'init' => array(
 'enableCHashCache' => true,
 'appendMissingSlash' => 'ifNotFile,redirect',
 'adminJumpToBackend' => true,
 'enableUrlDecodeCache' => false,
 'enableUrlEncodeCache' => false,
 'emptyUrlReturnValue' => '/'
 ),
 'pagePath' => array(
 'type' => 'user',
 'disablePathCache' => true,
 'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
 'spaceCharacter' => '-',
 'languageGetVar' => 'L',
 'rootpage_id' => '127' //hier richtige rootpage id einrichten
 ),
 'fileName' => array(
 'defaultToHTMLsuffixOnPrev' => 1,
 'acceptHTMLsuffix' => 1
 ),
 'preVars' => array(
 0 => array(
 'GETvar' => 'L',
 'valueMap' => array(
 'de' => '0',
 'en' => '1'
 ),
 'valueDefault' => 'de',
 'noMatch' => 'bypass'
 )
 ),
 'postVarSets' => array(
 '_DEFAULT' => array(
 'user' => array(
 array(
 'GETvar' => 'tx_srfeuserregister_pi1[regHash]'
 )
 )
 )
 )
 ),
 '_DOMAINS' => array(
 'encode' => array(
 array(
 'GETvar' => 'L',
 'value' => '0',
 'useConfiguration' => '_DEFAULT',
 'urlPrepend' => 'http://de.domain.tld',
 'ifDifferentToCurrent' => 'true'
 ),
 array(
 'GETvar' => 'L',
 'value' => '1',
 'useConfiguration' => '_DEFAULT',
 'urlPrepend' => 'http://en.domain.tld',
 'ifDifferentToCurrent' => 'true'
 )
 ),
 'decode' => array(
 'de.domain.tld' => array(
 'GETvars' => array(
 'L' => '0'
 ),
 'useConfiguration' => '_DEFAULT'
 ),
 'en.domain.tld' => array(
 'GETvars' => array(
 'L' => '1'
 ),
 'useConfiguration' => '_DEFAULT'
 )
 )
 )
 );
 $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['en.domain.tld'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'];
 $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['en.domain.tld'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'];
 ?>

 

 

Wichtig ist die Einstellung im encode Block: 'ifDifferentToCurrent' => 'true' dies führt dazu, dass die Domain nur an Links angehängt wird, wenn sie von der baseURL abweicht. Wenn die Option nicht angegeben wird, führt das dazu das auf https Seiten Formular Actions auf http zeigen. sr_feuser_register läuft damit z.B. nicht sauber. 

 

.htaccess muss natürlich mit mod_rewrite laufen. Das sollte aber Standard sein.

 

 RewriteEngine On
 
 RewriteBase /
 
 RewriteRule ^(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]
 
 RewriteRule ^typo3$ typo3/index_re.php [L]
 
 RewriteCond %{REQUEST_FILENAME} !-f
 
 RewriteCond %{REQUEST_FILENAME} !-d
 
 RewriteCond %{REQUEST_FILENAME} !-l
 
 
 
 RewriteRule .* /index.php [L]