Bei der Umstellung von der alten auf die neue Domain ergab sich ein hässliches Problem – die schon vorhandenen Links führten logischerweise erstmal ins Leere. Da ich keine Lust hatte und auch gar nicht weiß, was von wo aus verlinkt ist, musste ein Lösung her und die kommt, man ahnt es bereits, in Form von mod_rewrite zum Einsatz.
Um den Aufruf der alten Domain (blog.joshuasworld.de) direkt auf die neue Domain http://j-sys.de umzuleiten, genügt eine Zeile Code in der .htaccess:
RedirectPermanent / "http://j-sys.de/index.php/"
Damit wäre auch sichergestellt, das Aufrufe in der Form http://blog.joshuasworld.de/index.php/2005/04/19/dns_weiterleitung_mit_windows_2000_serve auf den korrekten Eintrag unterhalb j-sys.de weitergeleitet werden. Dummerweise nutzt die von mir verwendete Blogsoftware b2evolution in der aktuellen Version zum Ersetzen von Leerzeichen im Titel das Minuszeichen, während die alte 1.x Unterstriche verwendete.
Es musste also eine Lösung her, die nicht nur die Anfragen “as is” auf die neue Domain weiterleitet, sondern auch gleichzeitig die Unterstriche durch Minuszeichen ersetzt. Gelöst habe ich das durch weitere Einträge in der .htaccess nach diesem Schema:
RewriteRule^([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2 [R=301,L]
Damit wird allerdings nur ein Unterstrich im URl durch ein Minuszeichen ersetzt, damit auch mehrere ersetzt werden, sieht meine .htaccess (zumindest ein Teil davon *g*) nun so aus:
RewriteEngine on
RewriteBase /
RedirectPermanent / "http://j-sys.de/index.php/"
Options +FollowSymLinks
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2-$3-$4-$5-$6-$7 [R=301,L]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2-$3-$4-$5-$6 [R=301,L]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2-$3-$4-$5 [R=301,L]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2-$3-$4 [R=301,L]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2-$3 [R=301,L]
RewriteRule ^([^_]*)_(.*)$ http://j-sys.de/index.php/$1-$2 [R=301,L]
Das Leerzeichen zwischen “RewriteRule” und dem ersten Zirkumflex müsst ihr euch halt jetzt mal reindenken, ich kann das hier leider nicht anders posten, weils mir sonst das Layout verreisst. (funktioniert mit WordPress)
Damit funktioniert nun auch das Ersetzen von bis zu sechs Unterstrichen durch Minuszeichen innerhalb des URl, beliebig erweiterbar.
mod_rewrite is voodoo!