droomdre: Redirect rule in .htaccess

Hi folks,

meine alte Seite hat urls in der Art www.domain.tld/test_abc_1234.html Die neue Seite mit Typo3 hat Urls der Art www.domain.tld/abc.html

Ich möchte gern eine Rule erstellen, um die Zuordnung zu mappen. Ich hatte gedacht, ich schreibe in der neuen DB die ID am Ende der alten URL (1234) in einer Seiten-Spalte und in .htaccess rufe ich immer einer Seite auf, die die DB aufruft und einen Vergleich durchführt, um mir die richtige Datei auszugeben.

Also der Aufruf www.domain.tld/test_abc_1234.html wird in der .htaccess zu www.domain.tld/redirect.php?id=1234 weitergeleitet und die Seite redirect.php sucht in der neuen DB, welche Seite in der entsprechenden Spalte "1234" hat und gibt diese zurück.

Ist mein Verfahren kompliziert und best practice oder gibt es eine andere Möglichkeit, um mein Vorhaben zu erreichen.

Vielen Dank.

  1. Ist mein Verfahren kompliziert

    Zu kompliziert.

    Du kannst Deine redirect.php auch als ErrorDocument 404 registrieren und dann die URL untersuchen. Auf die neue Seite weiterleiten, sonst eine Hilfestellung (Suche, eventuell schon mit Ergebnissen) anbieten.

    und best practice

    Kommt darauf an, was Du noch falsch oder richtig machst. Aus SEO-Sicht sind korrekte Header (301, 302, 303, 404) wichtig.

  2. meine alte Seite hat urls in der Art www.domain.tld/test_abc_1234.html Die neue Seite mit Typo3 hat Urls der Art www.domain.tld/abc.html

    Sofern der Teil abc aus der alten in die neue URL übernommen wird, kannst du das ganz einfach mit RedirectMatch erledigen, siehe https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch

    Ich hatte gedacht, ich schreibe in der neuen DB die ID am Ende der alten URL (1234) in einer Seiten-Spalte und in .htaccess rufe ich immer einer Seite auf, die die DB aufruft und einen Vergleich durchführt, um mir die richtige Datei auszugeben.

    Kann man machen, ist aber noch etwas kompliziert. Der Apache hat eine Datenbankfunktion eingebaut: RewriteMap, siehe https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritemap

    Das könnte dann in ungefähr so aussehen (teils aus der Anleitung kopiert, nur das Muster an deine Pfade angepasst):

    RewriteEngine on
    RewriteBase /
    RewriteMap examplemap "txt:/path/to/file/map.txt"
    RewriteRule ".+_(\d+)\.html$" "${examplemap:$1}"
    

    Ist mein Verfahren kompliziert und best practice

    Wenn etwas kompliziert ist, ist es in aller Regel nicht die beste Lösung.