1. Installation der Extension realurl über den Extension-Manager 2. Anpassen der .htaccess zum Rewrite der URLs 3. Ändern des Grundtemplates für die Site 4. Anpassen von realurl in typo3conf/localconf.php Erklärungen dafür gibts genug ;-) Im Document-Root der Website sollte bereits eine Sample-.htaccess liegen. Entweder man nimmt diese und ändert sie oder man erstellt einfach eine neue mit folgendem Inhalt:
RewriteEngine On RewriteRule ^typo3$ - [L] RewriteRule ^typo3/.*$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php
Selbstverständlich muß auf dem Server hierzu die RewriteEngine aktiv sein. Das Haupttemplate der Site muss um folgende Zeilen ergänzt werden:
config.simulateStaticDocuments = 0
config.baseURL = www.domain.rs
config.tx_realurl_enable = 1
Wichtig ist die erste Zeile! Sollte dieser Wert aktiviert sein wird realurl erstmal gar nicht arbeiten. Zeile 2 erzeugt ein <base href="http://www.domain.rs/">-Tag im Kopf der HTML-Datei damit relative Aufrufe von Grafiken usw. problemlos funktionieren. Entgegen anderer Anleitungen, die hier ein "config.baseURL=1" beschreiben funktioniert es bei mir bei allen meinen Domains nur mit dem vollen Domainnamen. Zeile 3 schaltet dann die realurl-Extension aktiv.
Vor dem Weitermachen empfiehlt es sich erstmal alle Caches (Frontend und typo3conf) zu löschen und sich vom Backend abzumelden. Erst dann ist die Extension vollständig installiert. Generell ist es während der Konfiguration von realurl immer eine gute Idee erstmal die Caches zu löschen bevor man die Fehler an der falschen Stelle sucht! Beim Neuanmelden sollte unter dem Punkt Web-Info im Pulldown der Punkt "Speaking URL management" (oder das deutsche Äquivalent) sichtbar sein.
Ohne jede weitere Konfiguration sollte nun bereits der erste Teil der Website von realurl bedient werden. Der erste Teil bedeutet dass das eigentliche CMS ohne die Extensions bereits einwandfrei funktionieren, da während der Installation von realurl bereits eine Miniaturkonfiguration in die localconf.php eingetragen wurde.
Was realurl betrifft sollte die localconf.php in etwa folgendes enthalten (nicht erschrecken- ich versuche es gleich zu erklären- sieht schlimmer aus als es ist- hier sind auch gleich noch 2 weitere Extensions berücksichtigt...):
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array( 'www.domain.rs' => array( 'init' => array( 'enableCHashCache' => true, 'enableUrlDecodeCache' => 1, 'enableUrlEncodeCache' => 1, 'appendMissingSlash' => 'ifNotFile', 'postVarSet_failureMode' => 'redirect_goodUpperDir', ), 'pagePath' => array( 'type' => 'user', 'userFunc' =>'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 'spaceCharacter' => '-', 'rootpage_id' => 666, 'languageGetVar' => 'L', 'expireDays' => 3 ), 'fileName' => array( 'defaultToHTMLsuffixOnPrev' => true, ), 'preVars' => array( array( 'GETvar' => 'no_cache', 'valueMap' => array( 'static' => 1, ), 'noMatch' => 'bypass', ), array( 'GETvar' => 'L', 'valueMap' => array( 'de' => '0', 'en' => '1', ), 'noMatch' => 'bypass', ), ), 'postVarSets' => array( '_DEFAULT' => array( 'album' => array( array( 'GETvar' => 'tx_gooffotoboek_pi1[srcdir]', ), array( 'GETvar' => 'tx_gooffotoboek_pi1[fid]' ), array( 'GETvar' => 'tx_gooffotoboek_pi1[func]', 'valueMap' => array( 'thumbnails' => 'thumb', ), ), ), 'termine' => array( array( 'GETvar' => 'tx_keyac_pi1[showCal]', 'valueMap' => array( 'calendar' => 1, ), ), array( 'GETvar' => 'tx_keyac_pi1[year]', ), array( 'GETvar' => 'tx_keyac_pi1[month]', ), array( 'GETvar' => 'tx_keyac_pi1[showUid]', 'valueMap' => array( 'details' => 1, ), ), ), ), ), ), 'domain.rs' => 'www.domain.rs', 'anderer-name.de' => 'www.domain.rs', );
Die Aufteilung der Konfiguration ist wie immer baumartig. "init" kann man in 99% der Fälle so übernehmen wie es dargestellt ist. "pagePath" muss bei jeder Installation angepasst werden. Hier ist zumindest der Schlüssel "rootpage_id" auf die ID der jeweiligen "Wurzelseite" zu ändern. Durch den Schlüssel "spaceCharacter" wird der Wert geändert, durch den man Leerzeichen ersetzen will.
... 'fileName' => array( 'defaultToHTMLsuffixOnPrev' => true, ), ... bewirkt, dass aus dem Menüpunkt "Mountainbike" die URL www.domain.rs/mountainbike.html wird und nicht www.domain.rs/mountainbike/. In ... 'preVars' => array( array( 'GETvar' => 'no_cache', 'valueMap' => array( 'static' => 1, ), 'noMatch' => 'bypass', ), ), ... wird definiert, dass Seiten, die das no_cache-Attribut gesetzt haben und normalerweise als www.domain.rs/sitemap.html?no_cache dargestellt werden zu www.domain.de/static/sitemap.html werden.Das Prinzip ist hier, wie auch in der restlichen Konfiguration immer das selbe: Prüfe den GETvar Wert auf "no_cache" ('GETvar' => 'no_cache',) . Wenn no_cache gefunden wird ersetze das ganze zu "static" ('valueMap' => array( 'static' => 1, ), - "static" könnte hier auch eine andere Zeichenfolge sein, die dann in der URL erscheint). Wird der Wert "no_cache" nicht gefunden ('noMatch' => 'bypass',) überspringe die Ersetzung.
Weiter mit "preVars": ... array( 'GETvar' => 'L', 'valueMap' => array( 'de' => '0', 'en' => '1', ), 'noMatch' => 'bypass', ), ... kümmert sich um die "Sprach-URLs", d.h. URLs, die ein L=0 enthalten. Ist die GETvar "L" enthalten und hat diese den Wert 0 wird "de" in die URL gesetzt, bei 1 ein "en".
Nun zu dem ersten der beiden bereits berücksichtigten Extensions- gooffotoboek: .... 'postVarSets' => array( '_DEFAULT' => array( 'album' => array( array( 'GETvar' => 'tx_gooffotoboek_pi1[srcdir]', ), array( 'GETvar' => 'tx_gooffotoboek_pi1[fid]' ), array( 'GETvar' => 'tx_gooffotoboek_pi1[func]', 'valueMap' => array( 'thumbnails' => 'thumb', ), ), ), ... Das ganze einfach mal auf deutsch: Berücksichtige die Post-Vars. Standardmässig soll die URL um "album" ergänzt werden wenn eine der drei GETvar- Bedingungen zutrifft, also 'tx_gooffotoboek_pi1[srcdir]', 'tx_gooffotoboek_pi1[fid]' oder 'tx_gooffotoboek_pi1[func]', in der URL auftaucht. Bei den ersten beiden GETvar-Bedingungen wird lediglich der Wert der jeweiligen Variable in die URL übernommen, als wird z.B. aus www.domain.rs/index.php?tx_gooffotoboek_pi1[srcdir]=Verzeichnis&tx_gooffotoboek_pi1[fid]=12 die URL www.domain.rs/album/Verzeichnis/12.html Bei GETvar' => 'tx_gooffotoboek_pi1[func]' wird die aufgerufene Funktion von gooffotoboek geprüft. Ist die Funktion "thumb" so wird der String "thumbnails" in die URL eingefügt. Die URL wird somit zu www.domain.rs.de/album/Verzeichnis/12/thumbnails.html Mit der zweiten Extension wird genauso verfahren. Prüfe auf "tx_keyac_pi1[xxx]". Wenn es gefunden wird setze "termine" in die URL ein. Dann berücksichtige die jeweiligen GETvar- Bedingungen und werte diese aus.
Gar nicht mal so schwer- oder? ;-)
So, nun kommt noch ein interessanter Teil. Da die meisten Server ja nicht nur eine Domain bedienen kann man für zusätzliche Domains die Konfiguration ganz einfach übernehmen: ... 'domain.rs' => 'www.domain.rs', 'anderer-name.de' => 'www.domain.rs', ... Ist der aufgerufene Hostname "domain.rs" oder "anderer-name.de" übernehme die Konfiguration von "www.domain.rs". |