Simon: Post-Daten nach 404-Redirect behalten

Beitrag lesen

"Wikipedia:Hauptseite" kann aber keine existierende Seite auf dem Server sein,

Warum nicht? Bekommst Du unter der URL eine 404-Seite?

Natürlich nicht. Die Seite existiert auf dem Server, und sie wird Dir mit Status 200 OK ausgeliefert.

weil es einen Doppelpunkt enthält, was soweit ich weiß in Dateinamen nicht erlaubt ist.

Natürlich sind Doppelpunkte in Dateinamen erlaubt. Einige Krüppel-Betriebssysteme vertragen keine Doppelpunkte in Dateinamen, aber deswegen sind sie nicht generell verboten.

Aber was haben Dateinamen mit der genannten URL der Wikipedia zu tun?

Richtig, absolut GAR NICHTS! Die Seiten, die Du in der Oberfläche der Wikipedia siehst, stammen nahezu zu 100% aus einer (MySQL?-)Datenbank.

Das ist mir schon klar gewesen, dass dann keine Datei existiert, die den angegebenen Namen hat. Ich habe mich nur gewundert, weil nach meiner Erfahrung alles nach dem ersten Slash (...de/) nur ein Dateiname sei. Es war mir nicht klar, dass man sowas "umkonfigurieren" kann, dass der Server nicht zwingend nach einer Datei zum ausgeben sucht sondern man eigene Skripts, die unter Umständen immer automatisch ausgeführt werden, egal was der Benutzer oben eingibt.

Zum Üben mal ein hoch eindrucksvolles Beispiel, als Perl-Programm. Packe es auf einen geeigneten Webserver so, dass es als /cgi-bin/hallo.cgi erreichbar ist, mache es mit chmod +x ausführbar, und rufe es mit verschiedenen URLs auf:

http://webserver/cgi-bin/hallo.cgi
http://webserver/cgi-bin/hallo.cgi/Peter
http://webserver/cgi-bin/hallo.cgi/Hans
http://webserver/cgi-bin/hallo.cgi/Franz/Meier
http://webserver/cgi-bin/hallo.cgi/Osterhase

#!/usr/bin/perl
use strict;
use warnings;

my $name=$ENV{'PATH_INFO'}||'Welt';
$name=~tr|/| |;
print "Content-Type: text/plain\r\n\r\nHallo $name!\n";


>   
> Keine Datei Peter, keine Datei Hans, keine Datei Franz/Meier, keine Datei Osterhase, und kein 404. Und trotzdem bekommst Du abhängig von der URL eine individuelle Begrüßung.  
>   
> Auch Doppelpunkte funktionieren, wenn auch mit einer selten dämlichen Ausgabe: http://webserver/cgi-bin/hallo.cgi/Dop:pel:punk:te/sind/toll  
>   
> Der Code hinter der Wikipedia ist "geringfügig" komplexer, aber er nutzt das gleiche Prinzip.  
>   

Immerhin kenne ich jetzt das Prinzip :) Nur leider Benutze ich einen kostenlosen Webhost, bei dem ich keine eigenen CGI Scripts oder Perl habe (aber PHP). Gibt es da einen "allgemeinen" Weg, wie ich mir meinen Server so konfiguriere, damit ich mein Zeil habe (vielleicht mit einer .htaccess-Datei?)?