bayreuth.tk :: Mountainbiking in Oberfranken und den Alpen

Übersicht

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

1. Installation der Extension realurl über den Extension-Manager

Erklärungen dafür gibts genug ;-)

2. Anpassen der .htaccess zum Rewrite der URLs

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.

3. Ändern des Grundtemplates für die Site

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.

 
 

4. Anpassen von realurl in typo3conf/localconf.php

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".