Sonderzeichen in der URL

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

Sonderzeichen in der URL

Postby tco2000 » 21. November 2004 17:15

Ich hätte da ein interessantes kleines Problem auf meinem Rechner (Windows XP, Apache 2, PHP 4.3.9):

Im Grund läuft alles wunderbar (seit Monaten) bis auf eine Kleinigkeit: Sobald ich eine URL eintippe, die Sonderzeichen enthält, passieren merkwürdige Dinge. Also z.B.:

Code: Select all
index.php  -- geht
ind(x.php -- geht
ind'x.php -- geht auch
indéx.php -- geht nicht!!
indäx.php -- geht auch nicht!!


Interessant ist auch, dass IE und Mozilla anders reagieren. Mozilla meint:
Forbidden

You don't have permission to access /indéx2.php on this server.
Apache/2.0.52 (Win32) PHP/4.3.9 Server at localhost Port 80


der IE hingegen:
Warning: Unknown(D:\web\indéx1.php): failed to open stream: No such file or directory in Unknown on line 0

Warning: (null)(): Failed opening 'D:\web\indéx1.php' for inclusion (include_path='.;c:\php4\pear') in Unknown on line 0


beim Mozilla wird die URL so umgewandelt: http://localhost/ind%E9x.php
beim IE bleibt sie so stehen.

und noch ein paar Anomalien:
wenn ich im Mozilla eigebe http://localhost/ind%E9xqwerz.php (diese Datei existiert nicht!) - kommt trotzdem ein forbidden (also einfach nur durch den Zeichencode %E9). Wenn ich das selbe im IE mache, kommt ein 404/Seite nicht gefunden...

während indéx.php im Internet-Explorer nicht geht, tut es indéx.html...
im Mozilla geht beides nicht...

Ich bin mal gespannt, ob jemand ne Idee hat.
User avatar
tco2000
 
Posts: 3
Joined: 21. November 2004 17:13

Postby Wiedmann » 21. November 2004 19:32

Ich bin mal gespannt, ob jemand ne Idee hat.

Ganz einfach:
\"generic URI wrote:<scheme>://<authority><path>?<query>

In den Teilen "<scheme>", "<authority>", "<path>" bleibst du bei US-ASCII (die Pfad-/Dateinamen/Aliase auf dem Server dementsprechend).

Im "<query>" - Teil kannst du dann, entsprechend dem benutztem Zeichensatz in deinem Dokument, auch "escaped" kodierte Zeichen ausserhalb von US-ASCII benutzen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tco2000 » 24. November 2004 17:07

Hmm das klingt gut. Anstatt auf Dateien direkt zu verweisen könnte ich auf eine download.php (oder so) zurückgreifen, der ich dann eine get-Variable übergebe (ich denke mal, das ist das, was du mit ?<query> meinst).

Wenn die download.php dann die Datei öffnet, müsste sie direkt über das Dateisystem zugreifen und es müsste gehen. Wenn ich wieder über die URL zugreife geht das Problem ja von vorn los...

Dann könnte ich dem Client über Content-Disposition den original-Dateinamen mitteilen... das klingt schon fast zu einfach :roll: dass ich mich frage, warum ich nicht selber drauf gekommen bin...


Ich werds mal probieren in den nächsten Tagen... und danke für die Hilfe.
Wenn jemand noch ne tolle Idee hat -- würd mich freuen davon zu hören

Grüße
tco2000
User avatar
tco2000
 
Posts: 3
Joined: 21. November 2004 17:13

Postby Wiedmann » 24. November 2004 17:23

Das funktioniert auch nur bedingt... (Da könntest du auch gleich den Link korrekt von PHP kodiert ins HTML schreiben lassen --> s.u.)

Das liegt letztendlich an den unterschiedlichen Zeichensätzen in denen die verschiedenen Betriebssystemen Dateinamen abspeichern.

Zusammengefasst wollte ich nur sagen:
Wenn du keine Probleme haben willst, benutzt keine Sonderzeichen / Umlaute in den Dateinamen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby tco2000 » 24. November 2004 20:52

Hmm ich weiß aber bei ca 17000 Dateien überlegt man sich, ob man alle vorher durchschaut und ggf. ändert...

nur nebenbei:hier kann man wenigstens sachlich drüber reden - ich hab die frage quasi genauso innem anderen Forum gestellet (php.de) und wurde nur dumm angemacht weil ich mir solche Probleme schaffe. Konstruktive Hinweise waren leider etwas rar... also danke nochmal für die Mühe. Scheinbar nehmen einen mache Leute erst ernst wenn man ne dreistellige Posting-Anzahl hat.. das korrespondiert aber leider selten mit dem tatsächlichen Fachwissen (und meins ist relativ gut und schon ein paar Jährchen alt)... das musste mal raus :twisted:
User avatar
tco2000
 
Posts: 3
Joined: 21. November 2004 17:13


Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests