Statische Urls

Statische Urls mit TYPO3

Die Links innerhalb einer TYPO3 Website sehen standardmäßig in etwa so aus:



http://www.typo3-talk.net/index.php?id=2



Mit der id=2 als PHP Variable wird dem TYPO3 System mitgeteilt welche Seite gerade angefordert wurde. Für Menschen währe es aber schöner wenn eine leicht zu merkende Url mit Text dort stehen würde, die in etwa so aussieht:



http://www.typo3-talk.net/das-typo3-backend.html



Dies währe ebenfalls im Bezug auf Suchmaschinen besser, da diese die Url hoch gewichten und gar Websites die viele PHP Variablen in Links haben, garnicht indexieren.



In TYPO3 gibt es mehrere Möglichkeiten statische Urls zu simulieren. Die einfachste Möglichkeit bietet "Simulate Static". Mit Simulate Static, wird für jede Unterseite ein Alias festgelegt und "index.php?id=whatever" durch diesen Alias ersetzt.

Der Vorteil von Simulate Static ist, das es relativ einfach zu konfigurieren ist. Der Nachteil ist, das Extensions nicht besonderst gut eingebunden werden können. Ein weiterer Nachteil ist, das die Hierarchie der Webseite flach dargestellt wird und nicht so, wie sie wirklich ist.



Eine zweite, sehr mächtige Lösung bietet die Extension "Real Url". "Real Url" wandelt die Pfade der Navigation in Urls um und bildet so auch die Hierarchie der Webseite nach. Ein weiterer großer Vorteil ist, dass man Real Url an Extensions anpassen kann. Dadurch kann man z.B. ein Forum (CHC Forum) einbinden und durch Real Url für diese Erweiterung statische Urls simulieren. Ein Nachteil von Real Url ist die komplizierte Konfiguration. Ein weiterer Nachteil ist meiner Erfahrung nach, dass Real Url nicht immer optimal Funktioniert.



Einrichtung von Simulate Static

Zunächste muss entweder in der httpd.conf des Apache oder über eine .htaccess Datei Mod Rewrite konfiguriert werden. Ich verwende bei mir folgende Konfiguration die sowohl mit Real Url als auch mit Simulate Static funktioniert:



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

 

Nachdem man die htaccess erstellt hat kann man einfach testen indem man eine nicht existierende Seite aufruft. z.B. http://www.typo3-talk.net/64343.html, wenn man hierbei einen Fehler von TYPO3 bekommt ist das korrekt, da der Aufruf an die index.php weitergeleitet wurde.



Im nächsten Schritt ist die Erweiterung Simulate Static zu aktivieren. Um dies zu Erledigen ist der TypoScript SetupCode des Templates zu ändern über "Template -> Auswahl des korrekten Templates -> Info / Modify -> Click here to Edit the whole Templaterecord"



Das TypoScript Setup ist wie folgt zu ändern, dabei sollte die erste Zeile schon vorhanden sein, wenn ihr von unserem Template ausgegangen seid:

 config.simulateStaticDocuments_replacementChar = _
config.simulateStaticDocuments = 1
config.baseURL = www.typo3-talk.net
config.tx_realurl_enable = 0

In dem Setupcode wird simulate Static explizit angeschaltet und Real Url explizit ausgeschaltet, dadurch kann später leicht zwischen den Extensions umgeschaltet werden.



Wenn man nun eine Seite im Frontend aufruft, sieht man schon, das die Links geändert wurden, statt index.php?id=22 sieht man jetzt 22.0.html. Das liegt daran das für diese Seite keine Alias vergeben wurde. In den Optionen eines Seitenbehälters gibt es ein Feld Alias, dessen Text für die Simulate Static URLs verwendet wird. Also muss dieses Feld angepasst werden:

Anpassung des Aliases

1. In der Backendnavigation zum Menüpunkt "Web -> Seite" wechseln

2. Auswahl der Seite im Pagetree (Klick auf den Text)

3. Editiermodus des Seitenbehälters auswählen:

4. Im folgenden Feld sieht man die Optionen des Seitenbehälters. Dort ist das Feld "Alias" anzupassen:

Einrichtung von Real Url

Da Real Url nicht zum Standardumfang von TYPO3 gehört muss es zuerst installiert weden. Bei Real Url handelt es sich noch um eine Beta Extension, aus diesem Grund sollte man gut überlegen ob man Real Url in einer produktiven Umgebung einsetzen möchte.

 

Um RealUrl installieren zu können muss daher in Version 4.0 die Installation von "unsupported" Extension aktiviert werden.

 

Zunächst ist die Liste der Extension im Extensionmanager mit "Retrieve/Update" auf den aktuellen Stand zu bringen. Danach ist über Import Extensions über den Suchbegriff "realurl" die Extension zu suchen:

 

 

In der Ergebnisliste muss die Erweiterung "RealURL: URLs like normal websites" mit dem Extensionkey "realurl" installiert werden. Installieren kann man eine Extension, indem man auf den roten Pfeil von der Extension klickt.

 

 

 

Mit Real Url können wir die gleiche htaccess verwenden wie mit Simulate Static auch:

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

da jetzt statt "Simulate Static" "RealUrl" verwendet werden soll, ist das TypoScript Setup des Template zu ändern.

 

 config.simulateStaticDocuments_replacementChar = _
config.simulateStaticDocuments = 0
config.baseURL = www.typo3-talk.net
config.tx_realurl_enable = 1


Nun ist die Extension installiert un aktiviert. Im Frontend sollte nach leeren des Caches bereits eine Veränderung sichtbar sein, jedoch werden als Pfad die Ids der Seite verwendet. Da wir aber möchten, das der Titel der jeweiligen Webseite für die Bildung der Url genutzt wird, ist die Datei /typo3conf/localconf.php anzupassen. Ich möchte hier nun erstmal eine minimalkonfiguration vorstellen:

 

Folgende Zeile muss eingefügt werden (Umbruch nach dem Gleichzeichen aus platzgründen, muss weggelassen werden)

$TYPO3_CONF_VARS['EXTCONF']['realurl'] 
= array('_DEFAULT' => 
array('pagePath' =>
array('type' => 'user',
'userFunc' =>'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'rootpage_id' => 1
)
)
);

Wie oben zui sehen ist, findet die Konfiguration von RealUrl über ein Array statt. Der Index Default steht für eine Standardeinstellung, anstatt _DEFAULT kann man hier auch den Domainnamen nehem, was bei mehreren Domains sindvoll sein kann. Die Möglichkeiten von Real Url sind imens, hier wurde nur auf die Basiskonfiguration eingegangen. Eine sehr gute Einführung bietet die Dokumentation der Extension. Bei zeiten werde ich hier noch einen ausführlicheren Artikel zu Real Url schreiben.

Navigation