bjoern: mod_rewrite: Folgende URL umschreiben

Hallo.

angenommen ich möchte folgende Url umschreiben:

warenkorb.php?buyID=20
in
index.php?buyID=20

benutze ich folgenden Befehl:

RewriteRule ^warenkorb.php(.*)$ /index.php$1 [L]

Nun möchte ich aber beim Aufruf von

warenkorb.php

das die Index wie folgt aufgerufen wird:

index.php?warenkorb=1

Kriege ich dies in eine Rewriterule, oder muss ich da zwei draus machen?

Gruß Björn

  1. Lösungsansatz mit zwei Rules:

    RewriteRule ^warenkorb.php([^/]*)$ /index.php$1 [L]
    RewriteRule ^warenkorb.php$ /index.php?warenkorb=1 [L]

    Allerdings ist ja [^/]* beliebig viele zeichen, also auch keins -> es wir immer die erste Rule verwendet.

    EIN oder mehrerer Zeichen sollte .+ sein. Funktioniert aber leider nicht

    Gruß Björn

  2. Heißa, bjoern,

    angenommen ich möchte folgende Url umschreiben:
    warenkorb.php?buyID=20
    in
    index.php?buyID=20

    RewriteRule ^warenkorb\.php$ /index.php [QSA]

    QSA steht für QueryStringAppend und hängt den QueryString automatisch an.

    warenkorb.php
    das die Index wie folgt aufgerufen wird:
    index.php?warenkorb=1

    Es wäre doch weitaus einfacher, das im PHP-Script zu lösen:
    if(!isset($_GET['warenkorb'])) $_GET['warenkorb'] = '1';

    Gautera!
    Grüße aus Biberach Riss,
    Candid Dauth

    --
    Ein Fußball-Fan? Noch auf der Suche eine Schlafmöglichkeit im Großraum Stuttgart für die WM 2006? Wie wäre es mit Herrenberg, einer gemütlichen Kleinstadt am Rande des Schönbuchs – von der Lage her ideal, auch für andere Vorhaben im Urlaub. Ferienwohnungen-Herrenberg.com.
    http://cdauth.de/
    1. Hallo Candid!

      RewriteRule ^warenkorb\.php$ /index.php [QSA]

      QSA steht für QueryStringAppend und hängt den QueryString automatisch an.

      Hat jetzt so geklappt:

      RewriteRule ^warenkorb.php$ /index.php?warenkorb=1 [QSA] [L]