Dieser Artikel ist Obsolet


Werbung


TYPO3 und REALURL bei einer Multi-Domain-Konfiguration
Um nicht für jede (kleine)Homepage eine eigene TYPO3-Installation machen zu müssen (die ja dann auch aktualisiert werden muss), nutze ich gern eine der Stärken von TYPO3: die Fähigkeit mehrere Domains in einer Installation zu managen. Die Sache hat aber auch in der von mir verwendeten Variante einen Haken.

Grundlagen
Fangen wir mit den Voraussetzungen an, die hier nicht weiter erläutert werden:

Wir reden hier von einer VHOST-basierten Installation auf dem Apache Webserver, der entsprechende VHOST muss auf die benannten Domains ragieren und mod-rewrite muss konfiguriert und geladen sein.

Kurzer Überblick
.htaccess : Rewrite-Engine Einstellungen
Die bei dem db_ttv mitgelieferte _.htaccess funktioniert so wie sie ist, der Ordnung halber hier noch einmal die relevanten Parameter:

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


Werbung


REAL-URL-Config
Ob REALURL über Tools eingestellt wird, oder ob es manuell in die localconf.php geschrieben wird ist egal. Ich persönlich bevorzuge es, so wenig Extensions wie möglich in TYPO3 zu installieren, um die Installation schlank und schnell zu halten. Etliche Erweiterungen sind auch durch ein paar Zeilen Typoscript obsolet.

Hier also der localconf-Auszug für Realurl wie ich es verwende:

// Begin RealUrl
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
'init' => array(
'enableCHashCache' => 1
),
'preVars' => array(
array(
'GETvar' => 'no_cache',
'valueMap' => array(
'no_cache' => 1,
),
'noMatch' => 'bypass',
),
array(
'GETvar' => 'L',
'valueMap' => array(
'en' => '1',
),
'noMatch' => 'bypass',
),
),
'fileName' => array (
'defaultToHTMLsuffixOnPrev' => true,
'index' => array(
'backend.php' => array(
'keyValues' => array (
'type' => 100,
)
),
'print' => array(
'keyValues' => array(
'type' => 98,
)
),
),
),
'postVarSets' => array(
'_DEFAULT' => array (
'article' => array(
array(
'GETvar' => 'tx_ttnews[tt_news]',
),
array(
'GETvar' => 'tx_ttnews[backPid]',
),
),
'category' => array(
array(
'GETvar' => 'tx_ttnews[cat]',
),
),
'seite' => array(
array(
'GETvar' => 'tx_ttnews[pointer]',
),
),
),
),
'pagePath' => array(
'type' => 'user',
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'spaceCharacter' => '-',
'languageGetVar' => 'L',
'expireDays' => 3
),
);
// End RealUrl

Ich weiss nicht mehr so genau warum ich das so und nicht anders habe, ich hab damals lange da ran „rumgefummelt“ – kann auch sein das ich diesen Code dann woanders her kopiert habe – soll uns egal sein, Hauptsache es funktioniert und das tut es auch mit tt_news.

Template und Domain-Eintrag in der crnet-root (Listenansicht)

Root-Flag im Template nicht vergessen!
TYPO3 die Domain mitteilen
Im Seitenbaum des Backend bekommt jede Domain eine eigene Startseite (logisch) – dieses ist dann für diese Domain die „root“ – hier kommen die Datensätze sowohl für das Template als auch für die Domain rein.

Man kann hier auch mehr als eine Domain eintragen – aus SEO-gründen würde ich es nicht tun.

Bei yaml/ttvbevorzuge ich Extension-Templates für die Websites – aber das ist „Geschmackssache“.

Im Template muss auf jeden Fall das Root-Flag gesetzt werden, damit die Seite auf der eingestellten Domain direkt und ohne Seitenname aufgerufen werden kann.

Mit dem Root-Flag werden auch die Zähler für die Ebenen der Menü-Tiefen wieder genullt, bei yaml/ttv muss man im Template selber auch noch die Homepage-IDs eintragen, das betrifft dann aber das Stylen und hat weniger mit RealUrl und Multidomain zu tun.

Real-Url im Template einschalten
Das ist bekannt, und geht auch hier wie gehabt:

################################################
# Real Url Konfiguration im TS setup
config.simulateStaticDocuments = 0
config.baseURL = http:/ /www.crnet.de/
config.tx_realurl_enable = 1

Achtung – der doppelslash ist mit einem leerzeichen getrennt, damit das nicht immer in einen Link gewandelt wird. Im TS darf da natürlich kein Space sein.
Mehrere Domains & der „Haken“
Um das dann für mehrere Domains zu machen, braucht man die gleichen Sachen wie bei der ersten:

Template mit Root-Flag
Domaindatensatz
TS zum einschalten von REALURL mit der Domain


Werbung


Und nun der Haken (und eine Lösung)
Jeder Seitenname darf innerhalb dieser TYPO3-Installation nur ein mal vorkommen.

Das heisst, man hat z.B. diese Links im Header für Sitemap, Impressum etc. unterhalb der Seite „Header“, dann speichert RealUrl für das Impressum die Page-ID und den Pfad „header/impressum“ – damit darf es diesen Pfad in keiner der anderen Websites dieser TYPO3-Installation geben. (probiert aus was passiert, wenn man es doch tut)

Der „Trick“ ist dann, diese entsprechende Unterseite jeweils anders zu benennen (bei mir ist der Seitentyp meist „Weiterleitung“ (auf die Homepage) und „nicht im Menü“) – also z.B. Infos, Informationen, footer, Start … usw.)

Selbst wenn sich mehrere Websites innerhalb einer TYPO3-Installation mit dem gleichen Thema beschäftigen, kann man durch Festlegen des Seitennamens Konflikte vermeiden.

Falls das „Problem“ erst später auftritt und die Seitentitel sich nicht ändern dürfen, kann man immernoch innerhalb der Seiteneigenschaften einen Pfad ändern. Danach alle Caches löschen und den Patchcache auch, und mal die Sitemaps aufrufen, damit das wieder gefüllt wird.