mod_rewrite: Variablen auf neues Ziel umleiten
Vielleicht standet ihr auch schon vor dem Problem: die URL-Struktur einer Webpräsenz hat sich geändert, Skripte, welche Inhalte dynamisch generieren, liegen an anderen Orten und u.U. hat sich auch die Struktur der zu übergebenden GET-Variablen geändert.
Prinzipiell eigentlich kein Problem, schließlich sollten die dynamischen Inhalte aus dem Gesamtkontext mit der neuen Struktur erzeugt werden; anders sieht es jedoch aus, wenn es sich bei den Skript-Dateien um wichtige Inhalte handelt, die auch bei Google schon gut indiziert sind.
Es wäre ärgerlich, wenn die bei Google geführten Links nicht mehr gültig sind und ins Leere laufen – oder sogar 404-Fehler erzeugen.
Um die Struktur von Web-Präsenzen auf neue Ziele „umzubiegen“ bietet sich ein Regelwerk in der sogenannten .htaccess-Datei an.
Leider ist die Umleitung von GET-Variablen nicht ganz trivial.
Der erste Gedanke wäre z.B. folgende Lösung, um die Parameter des Skripts datei.php — param1 sowie param2 auf die neue Location umzuleiten:
RewriteRule ^datei\.php\?param1=([^&]+)¶m2([^&]+) /neu/datei/$2/$1 [R=301,L]
#falsch!!
So klappt es leider nicht, da mod_rewrite diese Behandlung von QueryParametern nicht toleriert.
Der richtige Ansatz läuft über Analyse des QueryStrings, um die GET-Parameter zu separieren:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^param1=([^&]+)¶m2=([^&]+)$
RewriteRule ^datei\.php$ /datei/%2/%1? [R=301,L]
Per %n wird hier auf die ‘Variablen’ der vorigen RewriteCond zugegriffen.
Nach diesem Muster lassen sich auch anspruchsvolle Umstukturierungen “google-freundlich” durchführen. Beispiele für weitere Rewrite-Methoden gibt es in der Apache-Dokumentation.


Juni 21st, 2008 at 21:51
Hallo,
danke für die Tipps. Ich hab einfach die Condition weggelassen, weil ich wollte diese URLS:
http://www.kackyou.de/story.ph.....ob-Referee
http://www.kackyou.de/story.php?title=Irgendwas
usw.
auf meine Startseite leiten lassen, weil unter dieser URL nichts mehr zu erreichen ist. Also siehts bei mir so aus:
RewriteEngine On
RewriteRule ^story\.php$ /? [R=301,L]
Danke nochmal
Grüße
Juni 21st, 2008 at 21:52
Ahhh mein Kommentar ist von Akismet als Spam erkannt worden. Das wars aber nicht
grüße