Home / Howto, Linux / mod_rewrite: Variablen auf neues Ziel umleiten

mod_rewrite: Variablen auf neues Ziel umleiten

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

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.

Ähnliche Beiträge:

Follow Discussion

2 Responses to “mod_rewrite: Variablen auf neues Ziel umleiten”

  1. Sebastian Says:

    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

  2. Sebastian Says:

    Ahhh mein Kommentar ist von Akismet als Spam erkannt worden. Das wars aber nicht -)

    grüße

Leave a Reply


Köln, Geburtstag Wadi 27.02.05Silvester 2005/06Hochwassereinsatz Dresden August 2002Praktikum Heidelberg 09.-13.02.04Wohnungseinweihung Regensbg. 5.10.02Geburtstag Ulli & Alex 18.05.02Hochblauen-Berglauf 2008Geburtstag Drea 23.5.02Praktikum Heidelberg 09.-13.02.04Ex-Joint-Venture Darmstadt 16.01.04

86 queries in 2.030 seconds.