RewriteRule - Problem
Jonas
- webserver
0 André Laugks0 André Laugks0 wahsaga
Hallo zusammen
Habe folgendes Problemchen:
RewriteRule news_(.*).html$ /cgi-bin/test.cgi?action=$1
Eigabe in Browser: http://www.domain.ch/news_872849.html
Daraufhin wird das Script unter /cgi-bin/test.cgi aufgerufen und ausgeführt. Das ist ja schon mal gut... :)
ABER: Wenn ich die Variable action abfrage, ist diese LEER!
Wo liegt mein Problem? Bin ziemlich ratlos!
Kann ich nicht mehr auf die über GET erhaltenen Vars zugreifen nach dem Rewrite?
Gruss und Dank
Jonas
Hallo!
ABER: Wenn ich die Variable action abfrage, ist diese LEER!
was sagt den: echo($_REQUEST);
André Laugks
was sagt den: echo($_REQUEST);
ARRAY sagt das...
so ist es besser:
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
André Laugks
hi,
so ist es besser:
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
Ob das in seinem CGI-Script aber die richtige Syntax ist, darf immer noch bezweifelt werden - oder wurde schon irgendwo erwähnt, ob PHP als CGI-Sprache zum Einsatz kommt ...?
gruß,
wahsaga
Hallo!
Ob das in seinem CGI-Script aber die richtige Syntax ist, darf immer noch bezweifelt werden - oder wurde schon irgendwo erwähnt, ob PHP als CGI-Sprache zum Einsatz kommt ...?
Wenn aufmerksam lesen kann ist klar im Vorteil! ;-(
André Laugks
Erstmal danke für die Antworten! - Kam leider erst jetzt wieder an den PC :)
Also es ist PERL, nicht PHP :P
Aber da gibts ja einen ähnlichen Ausdruck. Muss mal schnell suchen. Werde das Ergebniss dann gleich mal posten.
Also...
Ich gebe mit perl den $ENV{'QUERY_STRING'} aus.
Rufe ich das Script über www.domain.ch/cgi-bin/test.cgi?action=8282 auf, so ist gibt mir der $ENV{'QUERY_STRING'} action=8282 zurück, was ja so sein soll.
Rufe ich es über die Rewrite Rule auf (RewriteRule news_(.*).html$ /cgi-bin/test.cgi?action=$1) www.domain.ch/news_8822.html , so erhalte ich als ausgabe ebenfalls das korrekte action=8822...
Wenn ich nun aber die einzelnen $ENV{'QUERY_STRING'} Einträge folgendermassen in ein Hash einlese:
$get_input = $ENV{'QUERY_STRING'};
@fv_pairs = split /&/ , $get_input;
foreach $pair (@fv_pairs) {
if($pair=~m/([^=]+)=(.*)/) {
$field = $1;
$value = $2;
$value =~ s/+/ /g;
$value =~ s/%([\dA-Fa-f]{2})/pack("C", hex($1))/eg;
$INPUT{$field}=$value;
}
}
Ist bei $INPUT{'action'} "nix drin"!
Ich versteh die Welt nicht mehr!