Bob: Rewrite in .htaccess

Beitrag lesen

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).