Seite 1 von 1

Gross-/Kleinschreibung in URLs...

Verfasst: Mittwoch 20. Juni 2007, 12:12
von jens
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?

Verfasst: Mittwoch 20. Juni 2007, 12:17
von BlackJack
Das kommt auf den Teil der URL an. Beim Domain-Namen ist Gross-/Kleinschreibung egal. Alles was danach kommt ist "case sensitiv".

Verfasst: Mittwoch 20. Juni 2007, 13:11
von jens
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

Verfasst: Mittwoch 20. Juni 2007, 13:23
von gerold
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
:-)

Verfasst: Mittwoch 20. Juni 2007, 13:30
von apollo13
Und bitte auch keine Unterstriche verwenden. Die sieht man nicht wenn die Url als Link angezeigt wird...

Verfasst: Mittwoch 20. Juni 2007, 13:37
von jens
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.

Verfasst: Mittwoch 20. Juni 2007, 14:09
von apollo13
Der Browser behandelt eine Url sicher nicht mit lower(), dann würden ein paar Apaches nur mehr 404 zurückliefern (zu Recht!).

Verfasst: Mittwoch 20. Juni 2007, 14:39
von jens
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...

Verfasst: Mittwoch 20. Juni 2007, 18:09
von Y0Gi
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).

Verfasst: Mittwoch 20. Juni 2007, 18:54
von jens
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...

Verfasst: Mittwoch 20. Juni 2007, 19:23
von rafael
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.

Verfasst: Donnerstag 21. Juni 2007, 11:15
von Y0Gi
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.