Zum Inhalt springen

RealURL mit mehreren Domains

Erstellt am 18. Februar 2010 · 6 Antworten · letzte Antwort am 2. September 2010

Tags: RealURL, URLs & Routing, Frage

Gregor ·

Hallo zusammen,

ich habe auf einer Typo3-Installation zwei unterschiedliche Domains für zwei Seitenbäume konfiguriert.

Struktur ist ungefähr so

root
- Domain 1
-- Unterseite 1
- Domain 2
-- Unterseite 2

Auf beiden Seitenbäumen einzeln funktioniert RealURL einwandfrei. Und auch das Crosslinking funktioniert einwandfrei ... jedenfalls fast. Und zwar weigert sich das System konsequent, ein Rewrite der URLs vorzunehmen, die aus dem anderen Seitenbaum stammen.

Heißt: Links bei Domain 1 lauten dann z.B. /unterseite1/, der Link auf Unterseite 2 aus dem anderen Seitenbaum hat lediglich index.php?id=2. Gleiches gilt für Links von Seitenbaum 2 auf Seitenbaum 1.

"Interne" Links werden umgeschrieben, Links auf den anderen Seitenbaum nicht.

Hier mal meine Konfiguration.

Typo3 4.3.1
RealURL 1.7.0
Domainfactory Server-System, also kein IIS oder so

localconf.php

$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
	'_DEFAULT' => array(
		'init' => array(
			'enableCHashCache' => 1,
			'appendMissingSlash' => 'ifNotFile',
			'enableUrlDecodeCache' => 0,
			'enableUrlEncodeCache' => 0,
		),
		'redirects' => array(),
		'preVars' => array(
			array(
				'GETvar' => 'no_cache',
				'valueMap' => array(
					'nc' => 1,
				),
				'noMatch' => 'bypass',
			),
			array(
				'GETvar' => 'L',
				'valueMap' => array(
					'en' => '1',
				),
				'noMatch' => 'bypass',
			),
		),
		'pagePath' => array(
			'type' => 'user',
			'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
			'spaceCharacter' => '-',
			'languageGetVar' => 'L',
			'expireDays' => 7
		),
etc. etc.

zusätzlich localconf.php, nach der _DEFAULT-Konfiguration

TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']['enableDomainLookup'] = 1;
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain1.de'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain1.de']['pagePath']['rootpage_id'] = 1;
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain2.de'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['domain2.de']['pagePath']['rootpage_id'] = 66;

Im Typoscript-Template habe ich bei beiden Seitenbäumen folgendes:

#Konfiguration und Aktivierung von Realurl
config.simulateStaticDocuments = 0
config.tx_realurl_enable = 1
config.baseURL = http://domain1.de/ bzw. http://domain2.de/
config.typolinkCheckRootline = 1
config.typolinkEnableLinksAcrossDomains = 1

Zusätzlich ist bei den jeweiligen Startseiten der Seitenbäume das Häckchen für "Wurzelebene" gesetzt und Setups/Constants werden ebenfalls gelöscht.

Verschiedenste Variationen von typolinkCheckRootline und typolinkEnableLinksAcrossDomains haben keinen Effekt gehabt, was die fehlende Umschreibung von Links im anderen Seitenbaum angeht.

Theoretisch sollte es so laut Anleitungen im Web funktionieren, tut es aber nicht. Und ich bin ehrlich gesagt überfragt, wo ich den Fehler gemacht habe.

Sollte ich irgendwelchen erforderlichen Infos übersehen haben, liefere ich die gerne nach.

Freue mich über jeden Tipp 🙂

Gruß
Gregor

Julian.​Hofmann ·

Hallo Gregor.

Also mir fallen zwei Dinge ein:

1. Sicher, dass enableDomainLookup auf dieser Ebene ist? Gehört das nicht in das init-Array? Hab leider auf die Schnelle nichts dazu gefunden.

2. Sind für die Rootseiten auch Domain-Records in TYPO3 angelegt?

Viele Grüße
Julian

Gregor ·

Hallo Julian,

danke für die Unterstützung 🙂

Zu 1.: Ich habe "enableDomainLookup" jetzt auch mal im init-Array getestet. Effekt hat es keinen. Ich habe allerdings grade auch mal die Realurl-Dateien nach diesem Key durchsucht in der Hoffnung, herauszufinden, ob diese Konfiguration evtl. woanders ausgelesen wird. Aber entweder bin ich blind oder diese Konfiguration wird nirgends berücksichtigt. Jedenfalls gibt das bei einer Suche keinen Treffer.

Habe aber festgestellt, dass RealURL selber eine Überprüfung durchführt, ob mehr als ein Domainrecord im System vorhanden ist und dann automatisch auf eine MultiDomain-Konfiguration wechselt. Also evtl. diese Konfigurationseinstellung garnicht gebraucht wird.

Zu 2: Domain Records sind jeweils für die betreffenden Root-Seiten gesetzt und werden auch korrekt zugeordnet. Also eingabe von domain1.de resultiert in der Rootseite von Baum 1, domain2.de resultiert in der Root-Seite von Baum 2.

Habe jetzt einen Workaround installiert, indem ich über force_realurl oder so einen Rewrite der index.php?id=XY-Links auf die RealURL-Links erzwinge. Aber schön ist das ja nicht 🙁

Gruß
Gregor

dr.​sven ·

Moin,

auch wenn der Post von Gregor schon ein wenig her ist, trotzdem nochmal meine Lösung. Sie erweitert im Prinzip nur den Tipp von FreeBatman:

localcon.php:

$RootPID = array(
                      'domain1.de' => '2',
                      'domain-1.de' => '2',
                      'domain2.de' => '3',
                      'domain3.de' => '4'
      ); 
[...]
'rootpage_id' => $RootPID[$_SERVER['HTTP_HOST']]
[globalString = ENV:HTTP_HOST=domain1.de/, ENV:HTTP_HOST=domain-1.de/]
page.config.baseURL = htt p://www .domain1.de/
[global]
[globalString = ENV:HTTP_HOST=domain2.de/]
page.config.baseURL = htt p://www .domain2.de/
[global]
[globalString = ENV:HTTP_HOST=domain3.de/]
page.config.baseURL = htt p://www .domain3.de/
[global]

Achtung: Conditions dürfen nicht innerhalb eines Namespace stehen

Abschließend noch für jede Domain eine Domäne an der entsprechenden Stelle im Seitenbaum anlegen, fertig.

Falls ich mich an irgendeiner Stelle undeutlich oder falsch ausgedrückt habe, korrigiert mich 😃

FreeBatman ·

richtig das gehört auch noch ins TS.

UND

Ich habe in meinem ersten TS noch folgendes drinnenstehen!

config.typolinkCheckRootline = 1
#config.typolinkEnableLinksAcrossDomains = 1
#config.content_from_pid_allowOutsideDomain=1

Was auch noch ganz wichtig ist! Im Wiki gelesen!
Die anderen habe ich nur der volständigkeitshalber zugefügt.
Haben bei mir nie eine Wirkung gezeigt.

UND

'languageGetVar' => 'L',
            'expireDays' => 3,

evtl. erweitern mit

'languageGetVar' => 'L',
            'expireDays' => 3,
            'firstHitPathCache' => 1,

siehe
http://www.vincent-tietz.de/blog/goto/articles/segment-was-not-a-keyword-for-a-postvarset-as-expected/

UND

UrlTool Extension ist dann auch noch Dein freund um den URL-Cache einfach zu löschen und die conf-datei zu editieren.

Da ich momentan total am verzweifeln bin und fertig sauber ausgearbeitete Lösungen wohl leider😢 nicht immer gültig sind bekomm ich es bei meiner 2ten Typo3 Installation einfach nicht hin. Deswegen hätt ich noch ein paar Fragen.

Auch nachdem ich gefunden habe das dass Häckchen "ist rootpage" bei der ersten Domain nicht gesetzt war funzt es noch immer nicht. Ich lande bei einem Link von der 2ten Domain die auf die erste Domain führen soll immer auf die Startseite der 2ten Domain.

In meiner TS der 2ten Domain habe ich folgendes im setup

[globalString = ENV:HTTP_HOST=www.domain2.de]
config.baseURL = htt p://www .domain2.de/
[global]

[globalString = ENV:HTTP_HOST=www.domain2.de]
config.baseURL = htt p://www .domain2.de/
[global]

Eine Definition des GlobalString für Domain1 habe ich niergends festgelegt, da dies bei der Real-URL Einrichtung im ersten TS festgelegt wird.

config.baseURL = http  ://www.domain1.de/

festgelegt habe.

config.baseURL habe ich in meinem 2ten TS remarked, da dieses ja durch globalString definiert wird. Oder habe ich da was falsches verstanden?

Muss dieser Eintrag auch ins erste TS mit domain1.de rein!
bei meiner funktionierenden Lösung habe ich das nicht drin!

FreeBatman ·

so .. und nachdem RealUrl downgegraded worden ist um mit der installierten Version kompatibel zu sein funktioniert es nun auch so wie es soll!