Home /

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.phpparam1 sowie param2 auf die neue Location umzuleiten:

RewriteRule ^datei\.php\?param1=([^&]+)&param2([^&]+) /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=([^&]+)&param2=([^&]+)$ 
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.

08.01.2007 17:39 | 2 Comments | Posted in Howto, Linux

Westerholz 2007Italien August 2002Geburtstag Drea 23.5.02Silvester 2008MaI-Wanderung 01.05.05Köln, Geburtstag Wadi 27.02.05Geburtstag Steffi 08.12.03Geburtstag Drea 23.5.0209.11.02Silvester 2010 Schmalkalden

57 queries in 0,366 seconds.