Rewrite in .htaccess
Bernd
- webserver
0 Dirk Dorweiler0 Bernd0 Dirk Dorweiler0 Bernd0 Dirk Dorweiler0 Bob
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
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
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.
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
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
Mahlzeit
Mein Matthe-Lehrer würde sagen
"Thema verfehlt, setzen 6"
Lol. Wünsche Dir noch einen schönen Tag.
Grüße
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).