Christian Seiler: Apache mod_rewrite / mehrere Variablen übergeben

Beitrag lesen

Hallo,

Suche aber eine Möglichkeit mehrere Variablen zu übergeben.
Da das Thema mod_rewrite neu für mich ist, tue ich mich schwer und hoffe auf Eure Hilfe.

Sowas in der Art:

seite_12_45.html ~> seite.php?id=12&go=45
RewriteRule ????

RewriteRule akzeptiert reguläre Ausdrücke. Ein regulärer Ausdruck, der auf seite_ZAHL_ZAHL.html matcht, wäre z.B. folgender:

^seite_[0-9]+_[0-9]+.html$

Jetzt willst Du den umschreiben, also packst Du ihn in RewriteRule:

RewriteRule ^seite_[0-9]+_[0-9]+\.html$  seite.php

Das ist allerdings noch nicht alles - Du willst ja Teile davon als Parameter weiterverwenden. Damit das klappt, musst Du Informationen aus dem regulären Ausdruck extrahieren. Wenn Du Klammern setzt, kannst Du auf die geklammerten Teile eines regulären Ausdrucks später zugreifen, in idesem Fall also:

RewriteRule ^seite_([0-9]+)_([0-9]+)\.html$  seite.php?id=$1&go=$2

$1 enthält dann das, was von der ersten Klammer gematcht wird, $2 das, was von der zweiten Klammer gematcht wird.

Ferner würde ich vorschlagen, dass Du das QSA-Flag noch setzt:

RewriteRule ^seite_([0-9]+)_([0-9]+)\.html$  seite.php?id=$1&go=$2 [QSA]

Das sorgt dafür, dass eine Query-String auch erneut angehängt wird, d.h. aus seite_1_1.html?a=b ein seite.php?id=1&go=1&a=b wird (das wird ohne QSA nicht gemacht).

Viele Grüße,
Christian