Teil 3: Grundlegende Überlegung für das Erstellen der ModRewrite-Tabelle
Im 1. Teil dieses Tutorials haben wir uns mit der grundlegenden Problematik von geänderten Permalinks beschäftigt. Im 2. Teil haben wir den Aufbau der ModRewrite 301-Weiterleitung weiter unter die Lupe genommen. Die ganze Problematik basiert auf dem Umstand, dass die Migration von einem Content Management System zu einem anderen (hier: WordPress), uns eventuell neue Permalinks beschert. Und diese sind – je nach Ausgangslage – nicht durch eine einfache Regel definierbar. Wir müssen nun also ein Programm schreiben, was uns einmalig die ModRewrite-Umsetzungstabelle für die htaccess-Datei erstellt. Dieser Vorgang muss nur einmalig erfolgen, da alle neue Artikel ja bereits mit den neuen Permalinks erstellt werden.
Das folgende Beispielprogramm wird in C# geschrieben. Denkbar ist jedoch auch, es in PHP zu verfassen. Die grundlegende Idee und der Ablauf im Programm wird in beiden Sprachen identisch sein.
Wir haben in unserer Ausgangslage eine Datenbank (hier: lokale MySQL-Datenbank), in der die Tabelle „artikel“ (CMS-alt) und die Tabelle „wp_posts“ (WordPress neu) vorhanden sind. Wir kennen den bisherigen Permalink aus der Tabelle „artikel“ und müssen nun den neuen Permalink aus der Tabelle „wp_posts“ ermitteln. Da die Artikel-ID sich bei der Migration geändert hat, kann einfache Beziehung hergestellt werden. Wir müssen also die ursprüngliche Artikel-Tabelle durchgehen und zu jedem Artikel den passenden neuen Artikel suchen. Dies ist insofern einfach, da der Perma-Link in der Tabelle aus der alten und der neuen Tabelle sich nicht grundsätzlich geändert hat. Gegen eine Umsetzung direkt in SQL spricht eigentlich auch nichts. Da jedoch neben der Umsetzung von Unterstrich in Bindestrich auch das Hinzufügen der Rubrik im Link erfolgen muss, möchten wir der Einfachheit halber dies über eine kleine C#-Konsolenanwendung erledigen.
Wir erstellen hierfür eine C# Konsolenanwendung. Das .NET Framework 2.0 ist für unsere Zwecke ausreichend. Entscheidend ist der Datenbankzugriff. Da wir auf einen lokalen MySQL-Server zugreifen wollen, benötigen wir die MySql.Data.dll, die über die MySQL-Webseite zu beziehen ist. Wer einen M$-SQL-Server betreibt, braucht diese DLL nicht extra einzubinden. Diese DLL muss unter „Verweise“ in das Projekt mit eingebunden werden. Nicht vergessen werden darf das Using: „using MySql.Data.MySqlClient;“
Der eigentliche Programmablauf ist in Teil 4 unseres Tutorials beschrieben.