Fragezeichen in der URL wird als Teil des Dateinamens interp

Alles, was den Apache betrifft, kann hier besprochen werden.

Fragezeichen in der URL wird als Teil des Dateinamens interp

Postby Jitte » 18. September 2005 13:38

Hallo, ich habe folgende Frage:

Eine URL in der Form

http://www.domain.de/cgi-bin/outbound.p ... www.xyz.de

funktioniert bei mir nicht, weil Apache (oder wer immer das macht) scheinbar das Fragezeichen nicht als Trennzeichen erkennt, sondern als Teil des Dateinamens und daher die Datei mit dem Skript erst gar nicht findet. Gibt es dazu irgendwelche Einstellungen, die das Fragezeichen als Trennzeichen deklarieren?

Ich habe einen virtuellen Server bei vlinux.de mit Webmin. Das Perl-Script, das ausgeführt werden soll, sieht so aus:

#!/usr/bin/perl
$url=$ENV{'QUERY_STRING'};
if ($url) {print "Location: $url\n\n";}
else { print "Content-type: text/html\n\n"; print "<center>Kein Ziel url<a href=http://www.abc.de/>Domain ABC</a></center>";}
exit;

Andere Scripts ohne Parameterübergabe nach Fragezeichen in der URL funktionieren einwandfrei.

Bin für jede Hilfe dankbar!
Jitte
 
Posts: 2
Joined: 18. September 2005 13:25

Postby deepsurfer » 18. September 2005 15:06

huuii das bekannte outbound.pl ;)

die übergabe an das outbound.pl ist bei dir falsch
- die übergabe sollte (besser gesagt "kann")
http://localhost/cgi-bin/outbound.pl?http://testmich.de
lauten.

Dazu wäre es sinnvoll deine Übergeberscript zu sehen, worin du die Anweisung an outbound.pl schicktst.

Desweiteren ist dein Script outbound nicht richtig, schau dir dazu mal das Original an.
Die Übergabe der $url kann nicht in der "if" anweisung geprüft werden da, kein Prüfwert vorhanden ist, also dieses ergänzen.

FALL 1

Code: Select all
#!/usr/bin/perl
$url=$ENV{'QUERY_STRING'};
if ($url eq $url) {print "Location: http://www.apachefriends.org\n\n";}
else { print "Content-type: text/html\n\n"; print "<p>$url<p><center>Kein Ziel url<a href=http://www.abc.de/>Domain ABC</a></center>";}
exit;


Nun ist es bei dieser Ausführung egal was du da übergibst, denn eine weiterleitung an apachefriends ist jetzt immer vorhanden.
"$url = $url also ab nach Weiterleitung"
Also muss du wie im Originalscript einen Prüfwert eintragen, damit es geht.

FALL 2
Code: Select all
#!/usr/bin/perl
$url=$ENV{'QUERY_STRING'};
if ($url eq "http://test.de") {print "Location: http://www.apachefriends.org\n\n";}
else { print "Content-type: text/html\n\n"; print "<p>$url<p><center>Kein Ziel url<a href=http://www.abc.de/>Domain ABC</a></center>";}
exit;


$url = Prüfwert dann weiterleitung
$url = nicht prüfwert dann Hinweismeldung

Damit du siehst was ich meine, nimm FALL 2.
tippe
http://localhost/cgi-bin/outbound.pl?http://teste.de
danach
http://localhost/cgi-bin/outbound.pl?http://test.de

test.de <<- ist eine eingetragene URL, daher bitte an dieser stelle es nur als BEISPIEL anzusehen. Sollte es da zu bedenken kommen, entweder mein Beispiel von den XAMPP-Devs abändern oder löschen.

An dieser stelle sei gesagt das dieses Scipt derzeit absolut umstritten ist.
Sollte sich die XAMPP-Devs dazu entscheiden diesen Thread zu löschen, wäre es in meinen Augen sinnvoll.
(ist und bleibt ein umstrittenes Script was Scriptkiddis gerne benutzen)
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Jitte » 20. September 2005 20:28

Hallo deppsurfer,

vielen Dank für Deine ausführliche Antwort. Es funzt jetzt. Hast mir sehr geholfen!
Jitte
 
Posts: 2
Joined: 18. September 2005 13:25


Return to Apache

Who is online

Users browsing this forum: No registered users and 243 guests