Bernd: Rewrite in .htaccess

Hallo,
ich habe folgende RewriteRule:

RewriteRule ^test$      /cgi-bin/prog1.pl?s=te&p1=5

Jetzt kann aber statt "test"   test?irgendwas ankommen.
Dies soll dann ergeben:

RewriteRule .....      /cgi-bin/prog1.pl?s=te&p1=5&irgendwas

Wenn ich angeben würde
RewriteRule ^test(.*)$     /cgi-bin/prog1.pl?s=te&p1=5$1
würde statt dem & das ? stehen

Die Angabe
RewriteRule ^test(?*)(.*)$     /cgi-bin/prog1.pl?s=te&p1=5&$2
wäre korrekt, wenn hinter test tatsächlich ?irgendwas stünde, wenn aber nichts stünde, käme als ergebnis am Ende nur ein &.
Ich möchte aber entweder &irgendwas oder nichts an der Stelle.
Wie kriege ich das hin?
Grüße
Bernd

  1. Mahlzeit.

    Du interessierst Dich womöglich für QSA (query string append):
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

    Grüße

    1. Hallo,

      Du interessierst Dich womöglich für QSA (query string append):
      http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

      Wahrscheinlich ist es dies, aber mit dem nachfolgenden Text kann ich mangels
      Englisch-Kenntnissen und mangels DV-Kentnissen leider nichts anfangen.
      Ich wäre dankbar, wenn mir jemand ein Beispiel hätte.
      Danke!
      Bernd

      Zitat:
      Modifying the Query String

      By default, the query string is passed through unchanged. You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine new and old query strings, use the [QSA] flag.

      1. Hoi.

        http://www.google.de/search?q=query+string+append+beispiel
        Der erste Treffer sieht interessant aus ;-)
        Also: Immer zuerst an "self" denken....

        Grüße

        1. Hallo

          http://www.google.de/search?q=query+string+append+beispiel
          Der erste Treffer sieht interessant aus ;-)
          Also: Immer zuerst an "self" denken....

          Mein Matthe-Lehrer würde sagen
          "Thema verfehlt, setzen 6"

          Ich möchte ja nicht den Originalstrin anhängen, sondern eine veräderten
          Gruß
          Bernd

          1. Mahlzeit

            Mein Matthe-Lehrer würde sagen
            "Thema verfehlt, setzen 6"

            Lol. Wünsche Dir noch einen schönen Tag.

            Grüße

          2. Ich möchte ja nicht den Originalstrin anhängen, sondern eine veräderten

            Das glaube ich nicht. Deinem Beispiel zu folge möchtest du schon an den notierten QueryString den urspr. QueryString wieder anhängen, ohne diesen zu verändern. Per default würde der QueryString durch den neu notierten ersetzt werden. Insofern ist das von Dirk vorgeschlagene QSA-Flag schon goldrichtig.

            Vielleicht noch mal zur Verdeutlichung:
            /foo?bar --> /cgi-bin/prog1.pl?s=te&p1=5      per default
            /foo?bar --> /cgi-bin/prog1.pl?s=te&p1=5&bar  per QSA-Flag

            Wenn ich angeben würde
            RewriteRule ^test(.*)$     /cgi-bin/prog1.pl?s=te&p1=5$1
            würde statt dem & das ? stehen

            Nein. Der QueryString ist hier nicht verfügbar. Du prüfst im Verzeichniskontext gegen einen lokalen physischen Pfad, also bei Notation unter /var/www/ (durch .htaccess oder <Directory /var/www> in der httpd.conf) ursprünglich gegen /var/www/test, das Verzeichnisprefix /var/www/ wird entfernt, also prüfst du gegen 'test' (ohne ' natürlich). Ein QueryStrig ist hier nicht vorhanden, entspr. auch kein "?". Insofern ist dein regulärer Ausdruck ^test$ schon richtig ($ = Ende der Zeichenkette).