Gross-/Kleinschreibung in URLs...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wir rätseln gerade ein wenig, ob man in URLs Gross-/Kleinschreibung verwenden kann oder nicht.

Es geht im Grunde über die Namen bei PyLucid Plugins. Da diese in der URL vorkommen, sollte man also besser sagen das diese konsequent klein geschrieben werden müßen oder nicht.

Ich meine ich hatte einen Fall, das Firefox die URL eines Redirects kleingeschrieben hat, obwohl in der URL auch Gross-Buchstaben vorgekommen sind.

Weiß da jemand genauer bescheid?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Das kommt auf den Teil der URL an. Beim Domain-Namen ist Gross-/Kleinschreibung egal. Alles was danach kommt ist "case sensitiv".
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Es geht nur um den Teil danach...

Machen das die Browser auch alle richtig? Hat da jemand Erfahrung gesammelt?

Ansonsten hat sich nämlich ein Problem für mich erledigt, siehe auch: http://pylucid.org/phpBB2/viewtopic.php?t=136

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

jens hat geschrieben:Es geht nur um den Teil danach...
Machen das die Browser auch alle richtig? Hat da jemand Erfahrung gesammelt?
Hallo Jens!

Die Browser übernehmen exakt das, was in der HTML-Seite steht. Wenn es da groß/klein geschrieben steht, dann wird der URL auch so an den Server übergeben.

Der Apache unter Linux achtet exakt auf Groß-/Kleinschreibung. Der Apache unter Windows nicht.

Aber es gehört, meines Erachtens, zum guten Ton, dass man URLs klein schreibt, keine Sonderzeichen und keine Leerzeichen verwendet.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Und bitte auch keine Unterstriche verwenden. Die sieht man nicht wenn die Url als Link angezeigt wird...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also ich werde das nachher nochmal testen.

Ich meine ich hatte ein Problem mit einem http-Redirect in django. Ich hatte Firefox und den django-dev-server genutzt.

Das eigentliche "Problem":

Normalerweise schreibt man ja in Python die Klassen-Namen groß oder in CamleCase. Nun wollte ich in PyLucid z.B. mal den Plugin Name "pageadmin" in "PageAdmin" ändern.

In PyLucid muß der Name eines Plugins an einigen Stellen genau gleich lauten:
  • 1. Verzeichnisname: "./PyLucid/plugins_internal/page_admin/"
    2. Dateiname: "./PyLucid/plugins_internal/page_admin/page_admin.py"
    3. Klassenname im Skript: "class page_admin(PyLucidBaseModule):"
    4. Name der config Datei: "./PyLucid/plugins_internal/page_admin/page_admin_cfg.py"
Der Name taucht dann halt auch wieder in der URL auf wie z.B. http://www.bsp.de/_command/1/page_admin/edit_page/

Wenn ich also alles konsequent in CamleCase schreiben würde, dann ist in der URL nicht page_admin, sondern PageAdmin... Wenn nun der Browser die URL mit lower() behandelt, weiß der plugin_manager nicht mehr welches Plugin gemeint ist und kann das nicht Ausführen.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Der Browser behandelt eine Url sicher nicht mit lower(), dann würden ein paar Apaches nur mehr 404 zurückliefern (zu Recht!).
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

OK, Ich habe es jetzt nochmal getestet und sowohl ein normaler Link als auch ein http-Redirect funktionierten einwandfrei. Mit Firefox unter Windows und Linux und mit dem IE7.

Dann weiß ich nicht, warum das letztens nicht geklappt hat... Naja, ich werde mal die Plugins alle umbenennen und dann mal sehen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

gerold hat geschrieben:Der Apache unter Linux achtet exakt auf Groß-/Kleinschreibung. Der Apache unter Windows nicht.
Das wage ich mal ganz arg in Frage zu stellen. Richtig ist aber, dass Windows-Dateisysteme aber dahingehend case-insensitive sind, dass sie keine zwei bis auf die Groß-/Kleinschreibung identischen Namen zulassen. Entsprechend sollte der Apache bei /test.html, /TEST.html und /test.HTML stets dieselbe Datei liefern, weil nur eine unter diesem/n Namen im Dateisystem existieren.

Für Action-Namen in URLs bevorzuge ich mittlerweile foo_bar gegenüber FooBar/fooBar, weil Letzeres bei ungünstigen Buchstabenkombinationen schon mal verwirrend, unleserlich oder missverständlich werden kann (so sehen z.B. das große 'i' und das kleine 'L' gewöhnlich hinreichend gleich aus).
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Y0Gi hat geschrieben:Für Action-Namen in URLs bevorzuge ich mittlerweile foo_bar gegenüber FooBar/fooBar, weil Letzeres bei ungünstigen Buchstabenkombinationen schon mal verwirrend, unleserlich oder missverständlich werden kann (so sehen z.B. das große 'i' und das kleine 'L' gewöhnlich hinreichend gleich aus).
Ich möchte es aber vermeiden zwei verschiedene Schreibweisen zu Pflegen und auf der anderen Seite möchte ich gern, das die Klassennamen Python-like geschrieben sind...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

jens hat geschrieben:
Y0Gi hat geschrieben:Für Action-Namen in URLs bevorzuge ich mittlerweile foo_bar gegenüber FooBar/fooBar, weil Letzeres bei ungünstigen Buchstabenkombinationen schon mal verwirrend, unleserlich oder missverständlich werden kann (so sehen z.B. das große 'i' und das kleine 'L' gewöhnlich hinreichend gleich aus).
Ich möchte es aber vermeiden zwei verschiedene Schreibweisen zu Pflegen und auf der anderen Seite möchte ich gern, das die Klassennamen Python-like geschrieben sind...
Python schreibt ja keine Klassenbenennungsmethode explizit vor, sondern nur PEP8 gibt Tipps und Hinweise für verständlicheren, ordentlicheren Codeaufbau.
CamelCase erinnert mich eher an Wiki (MoinMoin) anstatt an Python.

Ich würde es wie Y0Gi mit foo_bar lösen, da die Wörter dann gut und schnell erkannt werden können.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

jens hat geschrieben:Ich möchte es aber vermeiden zwei verschiedene Schreibweisen zu Pflegen und auf der anderen Seite möchte ich gern, das die Klassennamen Python-like geschrieben sind...
Dann bau' dir doch einfach einen Style-Konverter, der die Klassennamen für das Routing URL-tauglich umbenennt.
Antworten