Matthias Weiss: Apache mod_rewrite

Hallo,

folgendes Problem:

Per get soll ein Parameter an eine anwendung übergeben werden.
Jedoch ist die Get Variable nicht immer gegeben.

Für einen Sonderfall soll die Get Variable per mod_rewrite gesetzt werden, wenn diese nicht vorhanden ist.

So sieht meine Rewrite Regel für den Fall aus, dass xyz= gesetzt ist.

RewriteEngine on
RewriteCond %{REQUEST_URI}  ^*xyz=*
RewriteRule ^webapp/(.*) http://webappsrv/$1 [QSA,P]

Aber wie muss die Condition aussehen, um darauf ab zu prüfen, ob der Paramter eben nicht übertragen wird?
Ist das so richtig?

RewriteEngine on
RewriteCond %{REQUEST_URI}  ^*xyz=* [nc]
RewriteRule ^webapp/(.*) http://webappsrv/$1&xyz=123 [QSA,P]

Gruss Matthias

  1. Hallo,

    ich habe nun folgende Lösung erarbeitet:

    RewriteCond %{REQUEST_URI}  [Itemid]{0}
    RewriteRule ^/ersetzedurch(.*)  http://www.myhost.de/$1 [QSA,P]

    Soweit klappt es.
    Ist die Variable nicht gesetzt, dann wird die Regel ausgeführt.
    Allerdings stört mich noch folgender Punkt.
    Ändere ich die Regel wie folgt:

    RewriteCond %{REQUEST_URI}  [Itemid]{0}
    RewriteRule ^/ersetzedurch(.*)  http://www.myhost.de/$1&Itemid=1 [QSA,P]

    Dann kommt beim Server folgender Aufruf an:

    http://www.myhost.de/&Itemid=1?xyz=23 .....

    Genau da liegt mein Problem &Itemid sollte am ende angefügt werden.
    Hab mir schon die Finger wund gesucht. Kan mir jemand kurz erklären, wie ich das ändern muss, damit es klappt.