Archiv verlassen und diese Seite im Standarddesign anzeigen : Sonderzeichen in der URL
martinm79 03-06-2009, 21:10 Ich mußte mir jetzt ein neuen Apache als localhost installieren, aber irgendwas stimmt da noch nicht.
/martinaohnesonderzeichen
wird in der URL gefunden, aber bei
/martin%E4
(martinä, ein Beispiel mit ä)
kommt Error 403.
Also online und auf meinem alten localhost hat alles funktioniert.
Weiß zufällig jemand was bei der Einstellung vom Apache oder PHP nocht nicht ganz stimmt?
Ich mußte mir jetzt ein neuen Apache als localhost installieren, aber irgendwas stimmt da noch nicht.
/martinaohnesonderzeichen
wird in der URL gefunden, aber bei
/martin%E4
(martinä, ein Beispiel mit ä)
kommt Error 403.
Weil es nicht martin%E4 sondern martin%C3%A4 heißen muss.
URLs werden in der Regel in UTF-8 geschrieben und der HEX-Code für ä lautet 0xC3A4.
martinm79 03-06-2009, 22:04 Aha.
Na man codiert ja einen String mit urlencode() und online (Linux) und bei meinen alten localhost (Windows) funktionierte es ja auch.
Wie kann ich denn den neuen Apache konfigurieren, das er mit dem Zeichensatz funktioniert?
Irgendwas (Apache / php) muß momentan ja nicht richtig eingestellt sein. :/
Nein, es funktioniert alles richtig. Du verwendest einfach nur den falschen Zeichensatz.
Einige Server akzeptieren gnädigerweise auch andere Zeichensätze als UTF-8, aber du kannst nicht fix davon ausgehen.
<?php
echo urlencode('ä');
// %C3%A4
?>
martinm79 03-06-2009, 23:57 %C3%A4
spingt sofort auf ä
Ich muß dazu sagen, ich hatte mir den Apache 2.2 installiert.
Es muß doch eine Lösung geben, wo
ä
%E4
und
%C3%A4
geht. Bei anderen Seiten geht es ja auch.
Wenn ich das jetzt nicht hinbekomme, muß ich den ganzen localhost deinstallieren. Dann nehme ich den Apache 1.xx und meine alte config :(
Wenn du Apache nicht selbst konfigurieren kannst dann nimm doch XAMPP. Ansonstens post mal httpd.conf.
martinm79 04-06-2009, 00:51 Ich habe meine alte entwicklungsumgebung ja auch selbst konfiguriert und es lief wunderbar. Und wenn ich es selber mache, lerne ich dazu was bei Xampp nicht der fall ist.
Momentan läuft ja auch alles, aber ich schätze das es an dem Apache 2.2 liegt, das da ein Modul oder so geändert wurde. Anders kann ich mir das nicht erklären.
Die aktuelle config ist im Anhang.
Poste mal die beiden Dateien:
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-default.conf
martinm79 04-06-2009, 02:03 Habe ich mal in txt umbenannt.
martinm79 04-06-2009, 02:52 Und das steht denn immer in der Error Log vom Apache
[Thu Jun 04 01:47:39 2009] [error] [client 127.0.0.1] (22)Invalid argument: Cannot map GET /xxx/public_html/people/martin%E4 HTTP/1.1 to file, referer: http://localhost/xxx/public_html/
Sämtliche Aufrufe ohne ö ä ü funktionieren.
%C3%A4
spingt sofort auf ä
Was in der Adresszeile "springt", ist uninteressant.
Wie lautet der genaue Request, der an den Server geschickt wird, und was sagt das Log zu diesem Request?
martinm79 04-06-2009, 03:47 Wenn ich in der URL
public_html/people/martin%C3%A4
eingebe, springt die URL automatisch auf
public_html/people/martinä
Dabei wird kein Eintrag in der Error Log gemacht.
In der Access Log steht dann:
127.0.0.1 - - [04/Jun/2009:02:43:38 +0200] "GET /xxx/public_html/people/martin%C3%A4 HTTP/1.1" 200 3161
Ich versteh nicht warum martin%C3%A4 funktioniert aber nicht martin%E4. Sonderzeichen sind doch in beiden Aufrufen drinne.
Wenn ich in der URL
public_html/people/martin%C3%A4
eingebe, springt die URL automatisch auf
public_html/people/martinä
Wie ich schon sagte, reichlich uninteressant, was da wo "springt".
Dabei wird kein Eintrag in der Error Log gemacht.
In der Access Log steht dann:
127.0.0.1 - - [04/Jun/2009:02:43:38 +0200] "GET /xxx/public_html/people/martin%C3%A4 HTTP/1.1" 200 3161
D.h. also, damit funktioniert es ...?
Ich versteh nicht warum martin%C3%A4 funktioniert aber nicht martin%E4. Sonderzeichen sind doch in beiden Aufrufen drinne.
http://www.apachefriends.org/f/viewtopic.php?p=133951#p133951
(Ob das so in der Einfachheit als Erklärung allgemeingültig ist, weiss ich nicht. Ich denke, die vom Dateisystem verwendete Zeichenkodierung dürfte aber eine Rolle spielen.)
martinm79 04-06-2009, 05:17 Auf meinem alten PC war aber auch Windows drauf mit XP und da lief das ganze Projekt unter Apache wunderbar.
Ich mag keine Fragen auf die ich keine Antwort finde. :(
martinm79 04-06-2009, 05:22 D.h. also, damit funktioniert es ...?
ja.
Aber siehe mein Posting zuvor.
Ich weiß jetzt nur nicht ob das nur an dem Apache 2.2 liegt oder an etwas anderem.
Kann ich den Zeichensatz für die url definieren?
Falls ja, wie?
Auf meinem alten PC war aber auch Windows drauf mit XP und da lief das ganze Projekt unter Apache wunderbar.
Ich mag keine Fragen auf die ich keine Antwort finde. :(
Verwendest du vielleicht ein anderes Dateisystem? NTFS statt FAT32?
Ich versteh ehrlich gesagt nicht, warum du dich sträubst, UTF-8 zu verwenden. URLs sollten normal in UTF-8 codiert sein. Was passieren kann, wenn man sich nicht daran hält, hast du jetzt kennen gelernt. Warum willst du also mit biegen und brechen den Server zwingen, dass er falsche Requests annimmt und verarbeitet?
martinm79 04-06-2009, 13:19 Verwendest du vielleicht ein anderes Dateisystem? NTFS statt FAT32?
Beim alten war FAT32 drauf und jetzt habe ich NTFS.
Ich versteh ehrlich gesagt nicht, warum du dich sträubst, UTF-8 zu verwenden.
Mach ich ja nicht. Bei allen Sachen würde ich ja in Zukunft darauf achten!
Warum willst du also mit biegen und brechen den Server zwingen, dass er falsche Requests annimmt und verarbeitet?
Ich möchte das mein altes Projekt genauso wieder auf mein localhost läuft wie früher.
Und ich möchte das auch zu gerne wissen, wie man sowas beeinflussen kann.
Und ich möchte das auch zu gerne wissen, wie man sowas beeinflussen kann.
Nicht Apache 2 oder nicht Windows NT verwenden.
1.2.11 Native Windows NT Unicode-Unterstützung
Unter Windows NT-basierten Versionen des Windows-Betriebssystems verwendet der Apache 2.0 jetzt utf-8 für alle Dateinamen-Kodierungen. Diese werden direkt auf das zugrunde liegende Unicode-Dateisystem abgebildet, wodurch Mehrsprach-Unterstützung für alle Windows NT-basierten Varianten (Windows 2000, NT, XP) möglich wird. Unter Windows 95, 98 oder ME ist diese nicht verfügbar, so dass hier die lokale Codepage des jeweiligen Rechners für den Zugriff auf das Dateisystem verwendet wird.
Apache Webserver 2: Installation ... - Google Buchsuche (http://books.google.at/books?id=Xm88leQO9yYC&pg=PA23&lpg=PA23&dq=Unter+Windows+NT-basierten+Versionen+des+Windows-Betriebssystems+verwendetder+Apache+2.0+jetzt+utf-8+f%C3%BCr+alle&source=bl&ots=qiKC7YkcXo&sig=qp0FMganMjzxtq_5JYrPNoFikC0&hl=de&ei=D6InSq_SAYalsAb1v8iEBg&sa=X&oi=book_result&ct=result&resnum=1)
martinm79 04-06-2009, 14:37 Vielen Dank für die Mühe!
1. Das heißt unter Linux würde der Apache 2.x mit den URL auch so funktionieren oder geht das denn generell nicht mehr?
Ok, ich werde den Apache 2.x wieder deinstallieren und mir den alten 1.x raufmachen. Und für die Zukunft habe ich definitiv gelernt.
martinm79 07-06-2009, 19:52 Es lag wirklich an den neuerungen vom 2.2.
Mit dem alten 1.3 läuft alles wie früher.
Danke für die Hilfe. :)
|