Es hat nicht wie erwartet funktioniert, da der Slug-Teil der URL im Migrations-Skript leicht anders generiert wurde als in der alten Software.
Daher habe ich die URL selbst „normalisiert".
Normalisierte URLs hinzufügen/erstellen (Discourse Permalinks-Tabelle)
Im URL-Feld von
forum/t140842-s1/8p-hilfe-bei-1-8-tfsi-guter-motor-oder-schlechter-motor.html
oder
forum/t140842-s2/8p-hilfe-bei-1-8-tfsi-guter-motor-oder-schlechter-motor.html
oder
forum/t140842/8p-hilfe-bei-1-8-tfsi-guter-motor-oder-schlechter-motor.html
zu einer einfachen URL, die nur die ID des alten Themas enthält:
forum/t140842
Dies wird mit einem SQL-Befehl erledigt, der die URL über die Funktion REGEXP_REPLACE umschreibt:
INSERT INTO permalinks (created_at, updated_at, topic_id, url) SELECT NOW(), NOW(), topic_id, REGEXP_REPLACE(url,'forum/t(\d*)(-?.*)/(.*)','forum/t\1','') url FROM permalinks WHERE topic_id > 0 ON CONFLICT DO NOTHING;
Alte Anfragen über .htaccess auf der alten Domain umschreiben
RewriteRule ^forum/t([0-9]*)(-?.*)/(.*)$ https://discourse-domain.com/forum/t$1 [R=301,L]
Was passiert hier genau?
Google hat die URL https://old-domain.com/forum/t140842/8p-hilfe-bei-1-8-tfsi-guter-motor-oder-schlechter-motor.html indexiert und verlinkt. Ich hatte Glück, dass diese Anfrage aufgrund einer anderen Domain auf einem Apache-Server landete, sodass ich .htaccess zur einfachen Umleitung nutzen konnte. Ich leite diese Anfrage also auf https://discourse-domain.com/forum/t140842 um. In der Tabelle permalinks habe ich diesen Eintrag forum/t140842 hinzugefügt, indem ich den bereits vorhandenen Permalink mit der vollständigen slugifizierten URL mithilfe einer Regex verwendet habe (siehe oben).
Hoffentlich hilft dies jemand anderem als Ausgangspunkt.