Realurl Redirects mit SQL automatisch erzeugen

Realurl Redirects mit SQL automatisch erzeugen

Aktualität: Redirects werden von RealURL nur bis zur Version 1.x unterstützt. Ab Version 2.x unterstützt RealURL keine Redirects mehr, entsprechend funktioniert diese Anleitung nur bis RealURL 1.x. Die Migration von Redirects im Zusammenspiel mit RealURL 2.x wird in einem eigenen Artikel betrachtet.

RealURL bietet die Möglichkeit, sprechende URLs in TYPO3 zu verwenden. Also z. B. statt http://www.domain.tld/index.php?id=123 wird http://www.domain.tld/ueber-uns/impressum/ verwendet.

Problematisch wird es, wenn ein Seitentitel, und damit auch die URL, umbenannt wird, z. B. in http://www.domain.tld/abc/impressum123/ , und bereits von anderen Webseiten verlinkt war. In diesem Fall entstehen tote Links. Um dennoch auf die richtige Seite zu verweisen, kann man unter Web->Info->RealURL Management Redirects setzen, welche zu einer Weiterleitung mittels http-code 301 moved permanently führen. Besucher des alten Links werden dann mittels 301-http-statuscode auf den neuen Link umgeleitet. Auch Suchmaschinen können ihren Index entsprechend aktualisieren, duplicate content wird mit 301-Weiterleitungen wirksam vermieden.

Nun kann es allerdings passieren, dass sich mehrere hundert Links ändern, weil z. B. ein Eintrag des Hauptmenüs geändert wurde. Die entsprechende Klick-Orgie lässt sich allerdings vermeiden, wenn man die Daten automatisiert mit SQL in die entsprechende mysql-Tabelle einfügt. Hierbei muss man jedoch das Feld url_hash berechnen, welches TYPO3 normalerweise mit der TYPO3-Funktion md5int berechnet. Diese Funktion lässt sich aber auch in SQL berechnen mit CONV(substring(md5('url/'),1,7), 16, 10).

Wenn man nun ein Redirect mit SQL machen möchte, geht das so:

INSERT INTO tx_realurl_redirects (url_hash, url, destination, has_moved)
VALUES (CONV(substring(md5('home/'),1,7), 16, 10), 'home/', '/',1);

Um das Verfahren weiter zu automatisieren, kann man das SQL-Statement mit einer Openoffice-Formel zusammensetzen (A2 ist die alte URL, A3 ist die neue):

="INSERT INTO tx_realurl_redirects (url_hash, url, destination, has_moved)
VALUES (CONV(substring(md5('"&A2&"'),1,7), 16, 10), '"&A2&"', '"&B2&"',1);"

Ein entsprechendes Beispiel ist hier: Redirects mit SQL

Die Spalte mit den SQL-Statements kann man mit phpmyadmin auf der entsprechenden TYPO3-Datenbank ausführen. Man kann sie auch in eine Datei redirects.sql kopieren und, hier mit Datenbankname typo3db, ausführen mit

mysql typo3db < redirects.sql

Wenn bei der SQL-Ausführung Duplikate entstehen, kann man statt insert auch replace verwenden. Dann werden die alten Einträge bei einer Kollision überschrieben.

Die entsprechenden alten Links kann man beispielsweise aus einer sitemap extrahieren.

Zum Aktivieren der Redirects sollte man ggf. nochmal die RealURL caches löschen. Anschließend sollte man noch alle TYPO3-Caches löschen und auch der RealURL-Cache sollte unter Web->Info gelöscht werden. Zum Testen muss man auch den Browser neu öffnen und den Browsercache leeren, denn Browser wie Firefox merken sich Weiterleitungen, insbesondere permanente.