Da ich den Blog von /home nach / verschoben und lesbare URLs aktiviert habe musste ich für die alten Links der Form /home/?q=node/1 auf das neue Schema /node/1 einen Redirect einrichten.
Das geht in Apache mit dem Modul mod_rewrite:
.htaccess:
RewriteCond %{REQUEST_URI} ^/home RewriteCond %{QUERY_STRING} [0-9]+
RewriteRule ^(.*)$ /node/%0? [R=301,L]
Apache überprüft zuerst, ob die RewriteRule anwendbar ist, dann werden die RewriteCond überprüft: Die erste RewriteCond testet, ob in REQUEST_URI die ersten zeichen (da ein ^ am Anfang steht) mit /home beginnen.
Die zweite Regel such einfach nach einer Zahl. Und mit der RewriteRule wird dann die URL überschrieben, links steht was überschrieben werden soll ^(.*)$ heißt im Prinzip die komplette URL. Daneben steht mit was überschrieben wird /node/ ist klar, %0 bedeutet der Wert den die Regex eine Zeile vorher ermittelt hat und das Fragezeichen bedeutet, dass keine Parameter mehr angehängt werden sollen.
In den Eckigen klammern stehen noch Parameter zum Redirect, 301 ist der HTTP-Code, L bedeutet, dass keine weiteren RewriteRules mehr abgearbeitet werden. Dann hat noch das Wiki gefehlt, das ist auch in Drupal umgezogen. Die Umleitung für die alten Links war dort aber relativ einfach:
.htaccess:
RewriteRule ^wiki/index.php(.*)$ wiki/$1 [L,R=301]