Codelevel X logo
QR Barcode
Homex86-ProgrammierungProjekteTYPO3
Suche
>> HomeTYPO3 > Statische URL's

TYPO3



Suchmaschinenfreundliche Seitennamen (URL's)

simulateStaticDocuments in TYPO3

Von Haus aus werden die URL's nach folgendem Schema erzeugt:

http://www.musterdomain.de/index.php?id=123

Dabei wird immer nur die index.php aufgerufen (durch einen symbolischen Link mit einem Verweis auf die index.php im TYPO3 Verzeichnis) mit dem Parameter id=... wobei als Wert für ID die Seiten ID übergeben wird. Die Seiten ID in TYPO3 ist aber nur eine fortlaufende Nummer, ggf. auch mit Lücken, wenn erstellte Seiten wieder gelöscht wurden. Aussagekräftig ist eine solche fortlaufende Nummer nicht, da sie nichts über den Inhalt der Seite aussagt. Für den Besucher ist eine vorher besuchte Seite auf diesem Wege schwer wieder ausfindig zu machen, sei es in der Favoritenliste, in der Adresszeile mit Auflistung / automatische Ergänzung zuvor besuchter URL's oder in der History bei dem Wiederauffinden einer zuvor besuchten Seite.

Häufig wird auch angeführt, dass solche URL's nicht Suchmaschinenfreundlich wären. Dieser Aspekt ist aber eher untergeordnet zu betrachten, weil aktuelle Suchmaschinen entgegen der landläufigen Meinung mit URL Parametern keine Probleme haben. Probleme tauchen höchstens wieder dann auf, wenn potentielle Besucher in der Suchmaschine auf eine solche URL stossen und schwer zum Inhalt in Bezug setzen können. Moderne Suchmaschinen wie z.B. Google präsentieren dabei aber auch immer den Kontext, also die 2 oder 3 Sätze mit denen der Suchbegriff gefunden wurde. Insofern stört eine URL mit einem ID Parameter bei der Auswahl der Ergebnisse nicht wirklich.

Dennoch sieht eine solche URL in der Browserzeile nicht besonders hübsch aus und daher ist eine andere Schreibweise mit einem aussagefähigen Titel wie z.B. http://www.nrw.de/pressemitteilungen.html durchaus ansprechender als http://www.nrw.de/index.php?id=2299. Darüberhinaus bewerten Suchmaschinen gefundene Seiten nach verschiedenen Kriterien und wenn der Suchbegriff im Domainnamen oder in der HTML Seite, also irgendwie in der URL, auftaucht, durchaus als höhere Trefferquote. Man sollte das im Zusammenhang mit Suchmaschinen Spamming aber auch nicht überbewerten, die genauen Rezepturen der Bewertung einzelner Seiten werden von den Suchmaschinenbetreibern geheim gehalten und laufend geändert oder aktualisiert bzw. verfeinert.

Apache mit mod_rewrite

Zunächst muss man erstmal verstehen, wie die Verlinkung der einzelnen Seiten in TYPO3 funktioniert. Generell legt TYPO3 Webseiten und deren Informationen dazu immer mit einer eindeutigen Seiten ID in den internen Tabellen ab. Daran ändert die Zuweisung statischer oder "sprechender" URL's zunächst nichts. Der einzige Unterschied ist, dass der Link zu einer solchen Seite anstelle der ID durch einen generierten Textstring ersetzt wird, z.B. id=123 durch produkte.html. Wenn eine solche Seite dann aufgerufen wird (produkte.html) recherchiert TYPO3 dazu dann die zugehörige Seiten ID und sofern gefunden wird diese Seite dann dargestellt.

Dieser Mechanismus wird simulateStaticDocuments genannt (weil nur so getan wird, als ob eine "statische" URL vorhanden wäre) und setzt zwingend voraus, dass der Textstring für die Seite in der TYPO3 Installation eindeutig ist. Die zweite Voraussetzung ist, dass der Webserver bei dieser Angelegenheit mitspielt. Am Beispiel Apache würde der Webserver zunächst prüfen, ob die Datei produkte.html physikalisch vorhanden ist. Das ist natürlich nicht der Fall und so würde der Webserver einen 404 Error (Datei nicht gefunden) ausgeben, ohne dass TYPO3 die Chance hätte die passende Seite darzustellen.

Um solche Seitenaufrufe an TYPO3 zu übergeben und auch die Fehlerbehandlung, ist das Modul mod_rewrite in der Apache Installation notwendig. Dabei kann die folgende Konfiguration wahlweise direkt in der httpd.conf eingetragen werden oder alternativ in der .htaccess Datei für das betreffende Webserverzeichnis.

.htaccess mit Rewrite Regeln

Beispiel .htaccess Datei mit Rewrite Anweisungen

# Enable URL rewriting
RewriteEngine On

# To assist in debugging rewriting, you could use these lines
# DON'T enable it for production!
# This will only work in httpd.conf, not in .htaccess files
#RewriteLog /var/log/apache/rewrite.log
#RewriteLogLevel 9

# Stop rewrite processing if we are in the typo3/ directory
# For httpd.conf, use this line instead of the next one:
# RewriteRule ^/TYPO3root/(typo3|t3lib|tslib|fileadmin|typo3conf|typo3temp|uploads|showpic\.php|favicon\.ico)/ - [L]
RewriteRule ^(typo3|t3lib|tslib|fileadmin|typo3conf|typo3temp|uploads|showpic\.php|favicon\.ico)/ - [L]

# Redirect mysite/typo3 to mysite/typo3/index_re.php
# and stop the rewrite processing
# For httpd.conf, use this line instead of the next one:
# RewriteRule ^/TYPO3root/typo3$ /TYPO3root/typo3/index.php [L]

#RewriteRule ^typo3$ typo3/index_re.php [L]
RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]

# If the file/symlink/directory does not exist => Redirect to index.php
# Important note: If you copy/paste this into httpd.conf instead
# of .htaccess you will need to add '%{DOCUMENT_ROOT}' left to each
# '%{REQUEST_FILENAME}' part.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php

# Main URL rewriting.

# If you use Windows and SimulateStaticDocuments do not work, try adding a
# slash (/) right before 'index.php' below.

# The example shows how to rewrite only *.html and *.pdf files to index.php
# This may be helpful when using an extension that can generate PDF files
# on the fly.
# Example: RewriteRule .*\.(html|pdf)$ index.php [L]

RewriteRule ^[^/]*\.html$ index.php

### End: Rewrite stuff ###

Die beiden wichtigsten Zeilen sind die beiden fettgedruckten Zeilen und im Grunde kann die .htaccess Datei auch darauf reduziert werden. Die erste Zeile schalte den Rewrite Modus für dieses Verzeichnis (und Unterverzeichnisse) zunächst erstmal ein und die Zeile RewriteRule ^[^/]*\.html$ index.php sorgt dafür, dass alle Aufrufe mit .html an die index.php zur Ausführung und weiteren Bearbeitung weitergegeben werden ohne diese zu überprüfen. Das ist dann Aufgabe der index.php.

Der zweite Teil ist die Aktivierung der statischen URL's in TYPO3 im Rahmen einer TypoScript Anweisung im Basis Template:

config.simulateStaticDocuments=1

Diese beiden Änderungen reichen aus, um aus index.php?id=123 ein projekte.html zu erzeugen. Dazu ist es jedoch noch notwendig TYPO3 mitzuteilen, dass die Seite mit dem Namen projekte.html zu benennen ist. Dazu kann man die betreffende Seite bearbeiten und unter dem Reiter "Verhalten" als URL-Alias projekte anzugeben. Die Verlinkung erfolgt dann mit dem URL Alias. Die Endung .html wird automatisch ergänzt. Wenn kein URL-Alias angegeben wurde, verlinkt TYPO3 auch eine statische HTML Seite mit der ID Nummer (123.html anstelle projekte.html). Daher ist es sinnvoll einen URL-Alias beim Anlegen jeder neuen Seite einzugeben. TYPO3 achtet darauf, dass der URL-Alias eindeutig ist und ändert ihn ggf. ab. Außerdem sind bestimmte Sonderzeichen nicht erlaubt und generell wird der URL-Alias immer in Kleinbuchstaben konvertiert.

(URL-Alias in einer TYPO3 Seite)

Wer das Beispiel nachvollzieht wird auf eine unschöne Eigenart in TYPO3 treffen. Mit den o.g. Einstellungen wird zwar eine statische URL erzeugt jedoch nicht nur mit dem Namen projekt.html sondern mit einer "0" dazwischen, also projekte.0.html. Hintergrund ist die typeNum Variable, die zwar bei der Verlinkung normalerweise nicht ausgegeben wird wenn sie gleich Null ist, wohl aber bei der Umwandlung in eine statische URL. Abhilft schafft hier folgende TypoScript Ergänzung im Basis Template:

config.simulateStaticDocuments=1
config.simulateStaticDocuments_noTypeIfNoTitle=1

Durch die zweite Zeile wird der Type in der automatisch erzeugten statischen URL weggelassen und aus projekte.0.html wird projekte.html. Dennoch kann man den Type (wenn definiert) manuell durch Eingabe/Änderung der URL im Browser aufrufen (z.B. projekt.98.html). Sofern man eine vorhandene TYPO3 Installation ohne viel Aufwand auf statische URL's umstellen möchte, kann man durch folgende Anweisung den Titel in die URL kopieren bzw. codieren.

config.simulateStaticDocuments_addTitle=20

In diesem Fall wird der Titel (maximal 20 Zeichen im Beispiel) automatisch als Dateiname übernommen und mit .html ergänzt. Leider erlaubt TypoScript aus nicht näher nachvollziehbaren Gründen die Kombination aus Titel und noType nicht, ergänzt bei der automatischen Titelübernahme also wieder den typeNum Parameter.

Das Modul simulateStaticDocuments wird normalerweise automatisch mit der TYPO3 Installation aktiviert, ggf. kann man es im Erweiterungsmanager auch nachladen. Es gibt noch ein weiterführendes Tool für die Erzeugung statischer URL's als Extension RealURL mit deutlich mehr Optionen und deutlich größerem Leistungsumfang. Für die normale Erzeugung statischer URL's ist simulateStaticDocuments jedoch absolut ausreichen.


Für die Nutzung dieses Angebotes gelten die AGB, insbesondere der Haftungsausschluss.



AutorNewsFeedbackImpressumAGBDatenschutz
...