suit: Cool URIs don't change - aber was jetzt :)

hallo,

ich hab aktuell eine seitenstrukur die einzig und allein durch ids bestimmt wird

example.com/?id=123

zwar ändern sich coole urls nicht, dennoch möchte ich eine entsprechende änderung durchführen

aussehen soll das ganze später so (eine dieser varianten):

  1. example.com/artikel/123
  2. example.com/artikel/titel-foo-bar
  3. example.com/artikel/123/titel-foo-bar
  4. example.com/artikel/titel-foo-bar/123
  5. example.com/artikel/123-titel-foo-bar

mit dem umschreiben per mod_rewrite habe ich kein wirkliches problem

  1. hat den vorteil, dass die logik sehr einfach ist, allerdings den nachteil, dass der titel nicht in der adresszeile ersichtlich ist - aus gründen der suchmaschinenfreundlichkeit ist das aber ein vorteil - ebenso ist es für einen normalen menschen einfacher einen artikel wiederzufinden (suche in der history zb)

  2. hat den nachteil, das der titel eindeutig sein muss und dass ich zum permaneten umleiten auf die neuen urls ein script benötige, welches den titel kennt

3), 4) und 5) würden jeweils beides vereinen - allerdings ist bei 3) und 4) irgendwo visuell der titel bzw die id ein "unterverzeichnis" zu einer nummer

bei 5) selbst gefällt mir das trennzeichen zwischen id und titel nicht - angenommen der titel ist "08/15 - In der Heimat", damit wäre das titelfragemnt dann wohl "08-15-in-der-heimat", jetzt hat der artikel die id 7, also "7-08-15-in-der-heimat" - das sieht dann schon irgendwie komisch aus

ich bitte um vorschläge und meinungen :)

  1. aussehen soll das ganze später so (eine dieser varianten):

    1. example.com/artikel/123
    2. example.com/artikel/titel-foo-bar
    3. example.com/artikel/123/titel-foo-bar
    4. example.com/artikel/titel-foo-bar/123
    5. example.com/artikel/123-titel-foo-bar

    mit dem umschreiben per mod_rewrite habe ich kein wirkliches problem

    1. hat den vorteil, dass die logik sehr einfach ist, allerdings den nachteil, dass der titel nicht in der adresszeile ersichtlich ist - aus gründen der suchmaschinenfreundlichkeit ist das aber ein vorteil - ebenso ist es für einen normalen menschen einfacher einen artikel wiederzufinden (suche in der history zb)

    Ehrlich gesagt halte ich nicht viel davon.
    Ein Anwender sieht in den Bookmarks eher den Inhalt des title Elements. Er hat zudem noch andere Instrumente, neben welchen dein Anliegen für die Bookmarks irrekevant ist.
    Im Location Bar sagt mir ein sprechender Titel auch nicht viel, weil ich solche Titel nicht eintippe. Sie werden zurückgegeben und meistens nehme ich sie nicht mal zur Kenntnis.
    Aus der Sicht der Suchmaschine vernichtest du Information. id=123 stellt eine Logik dar. Deine Pseudopfade hingegen nicht.
    Wenn ich eine Url eintippen muss, nehme ich die copy-Paste Funktion. Muss ich das wirklich händisch machen, dann ist bei einem sprechenden Titel der Schreibfehler eher noch wahrscheinlicher als bei einer vierstelligen Zahl.

    Aber man kann auch das Prinzip automatischer anonymer SeitenIDs hinterfragen. Warum ist ein CMS nicht in der Lage, sprechende Seiten-IDs zu erzeugen, und Duplikate zu vermeiden, indem es vom Erzeuger die Angabe eines Identifikators verlangt? Schliesslich ist eine Seite ein Patch von kleinen Files, und das ganze stellt doch irgendwo ein zentrales Moment der Seiten-Erzeugung dar, dass man einen Seiten-Identifikator nebst einem Seitenlabel bestimmt. Zumindest handhabe ich es so im CMS das ich derzeit entwickle.
    Analogie:
    Ein User im Accountsystem hat ja auch einen einmaligen Namen (hoffentlich)[1] , derweil eine UserId als aussageloser Hash existiert, um den User mit seinen Rechten mit anderen Daten zu verbinden. Aber das wesentliche ist die Definition des Usernamens bei der Erstellung des Accounts.

    [1] Ich will nicht das Risiko eingehen, dass zwei Personen sich mit gleichem Namen und Passwort anmelden. Das erlaubt mir aber nicht, dass der User den Namen 123 zu akzeptieren hätte, nur weil ich das schnell automatisch produzieren kann.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
  2. Hi,

    zwar ändern sich coole urls nicht, dennoch möchte ich eine entsprechende änderung durchführen

    das ist bei meinen bescheidenen Englischkenntnissen sehr schwer zu lesen, aber vielleicht wäre dem auch so in deutsch. Ist in dem Artikel eine ernstzunehmende Begründung enthalten?

    ich bitte um vorschläge und meinungen :)

    Ich finde Urls nach Schema ?id=3234&xy=1223434 auch nicht besonders toll, aber nicht aus Suchmaschinengründen, sondern weil es eben wirklich schwer zu merken und auch schwer am Telefon zu übermitteln ist. Desweiteren verleitet sowas zu unerwünschten Spielereien(oder bin ich allein so böse;-), inden man die angehängten Parameter mal ein wenig verändert.

    Andererseits habe ich deshalb mal mit mod_rewrite experimentiert und weiss nur noch das da Schwierigkeiten entstanden wie unnötige Serverbelastung, ungewolltes Verhalten in anderen Verzeichnissen und letztendlich für mich eine gewisse Unüberschaubarkeit der Struktur. Alle Probleme lagen vielleicht allein an meiner Unkenntnis, aber egal ich habs dann sein gelassen.

    Sinn macht sowas für mich zb. extrem bei Seiten wie Wikipedia eben Lexika, Dictionarys usw...

    Aber bei deinen Überlegungen fehlt noch ein Punkt. Sonderzeichen.

    http://www.news.de/medien/1216757187529/virtuelle-reise-durch-den-koerper.html
    Das geht noch aber:
    http://de.wikipedia.org/wiki/Vuk_Stefanović_Karadžić
    Vuk Stefanović Karadžić ist da schon schwieriger.

    Timo

    1. hi $name,

      Ich finde Urls nach Schema ?id=3234&xy=1223434 auch nicht besonders toll, aber nicht aus Suchmaschinengründen, sondern weil es eben wirklich schwer zu merken und auch schwer am Telefon zu übermitteln ist. Desweiteren verleitet sowas zu unerwünschten Spielereien(oder bin ich allein so böse;-), inden man die angehängten Parameter mal ein wenig verändert.

      aber nur wenn der verbrecher äh programmierer sich im geistigen tiefflug befunden hat :-) ich habe da eine nette sammlung von sripten, inkl. zugang zu 10 botnetzwerken....

      gruss
      shadow

      --
      Vor dem Parser und auf hoher See sind wir allein in Gottes Hand
    2. das ist bei meinen bescheidenen Englischkenntnissen sehr schwer zu lesen, aber vielleicht wäre dem auch so in deutsch. Ist in dem Artikel eine ernstzunehmende Begründung enthalten?

      das liegt nicht an deinem englisch - im artikel ist in der tat nicht viel verwertbares enthalten, darum bin ich nach lesen das artikels (und den les ich alle paar monate mal wieder) wieder nicht schlauer gewesen

      er zeigt eben nur tipps auf, aber kein wirklich konkretes beispiel, welches mir in meinem fall weiterhilft - es läuft alles auf diese datumsgeschichte raus - und die sagt mir überhaupt nicht zu (autorenname oder sonstwas in einen "pfad" zu verpacken ist ja lt. dem artikel auch nicht schlau - warum das datum da besser sein soll, ist mir schleierhaft, besonders wenn sich ein artikel ändert und aktualisiert wird oder einfach umdatiert wird)

      http://de.wikipedia.org/wiki/Vuk_Stefanović_Karadžić
      Vuk Stefanović Karadžić ist da schon schwieriger.

      das wird von meiner routine in vuk-stefanovic-karadzic konvertiert - das system ist zwar nicht das beste, da es zb bei kyrillischen oder chinesischen zeichen versagt, aber diese dinge können sogut wie unmöglich im titel vorkommen und wenn mal doch ein artikel zu "ソニー株式会社" kommt, lässt sich das auch in der transkripion in den titel bringen: "Sonī Kabushiki-gaisha" oder schlichtweg "Sony Corporation" ;)

  3. Hallo,

    ich bitte um vorschläge und meinungen :)

    1. http://example.com/slug
    2. http://example.com/article/slug
    3. http://example.com/2009/slug
    4. http://example.com/article/2009/slug

    Numerische IDs fallen überall raus, einfach weil sie nicht intuitiv sind. Das gilt auch für Kombinationen. Automatisch generierte, eindeutige Identifizierer aus dem Titel des Artikels fallen raus, weil sie sehr lang werden können und man das Problem der Sonderzeichen in URIs hat. Wie Beat anmerkt sind diese auch schlecht weiter zu geben und wieder abzutippen. Am idealsten finde ich einen kleinen eindeutigen Identifizierer, der von einem Menschen gewählt wird, der dabei auf Mnemonik und Kürze achtet. Zum Beispiel dem hypothetischen Artikel mit dem Titel "Grand Theft Auto IV: »Lieber Gothic III in der Verkaufsversion«" würde ich den kurzen Identifizier "gta4-drm" geben. Das Beispiel ist hier zugegebenerweise etwas Abkürzungslastig, sonst wäre es ein normales Wort.

    Meine Präferenzen zum Unterbringen des Kürzels sind oben. Ich liebäugel sehr mit einem flachen Namensraum wie in den Vorschlägen 1 und 3. Wenn das ganze aber nur ein Teilbereich unter der Domain ist, wird das eher schwierig beim Mixen mit anderen Teilbereichen. Vorschläge 2 bis 4 haben das Problem eher nicht, 2 und 4 haben wirklich einen abgetrennten Namensraum. Vorschläge 3 und 4 haben zusätzlich noch die Jahreszahl, falls man soviel publiziert, dass einem die Artikelkürzel ausgehen. Dabei wäre dann die Jahreszahl Bestandteil der eindeutigen Identifizierung.

    Tim

    1. Beispiel dem hypothetischen Artikel mit dem Titel "Grand Theft Auto IV: »Lieber Gothic III in der Verkaufsversion«" würde ich den kurzen Identifizier "gta4-drm" geben.

      was spricht dann gegen eine zusätzliche nummerische identifikation?

      meinetwegen ich habe 3 artikel zu grand theft auto iv

      ob ich die jetzt "grand-theft-auto-4-foo, grand-theft-auto-4-bar, grand-theft-auto-4-baz" oder "grand-theft-auto-4-1, grand-theft-auto-4-2, grand-theft-auto-4-3" oder "27-grand-theft-auto-4, 85-grand-theft-auto-4, 147-grand-theft-auto-4" ist doch beides recht eindeutig

      der vorteil an der letzteren variante ist, dass das identifikationsmerkmal die id aus der datenbank ist und auch bei einer titeländerung der artikel noch eindeutig gefunden werden kann ohne dass ich mir sämtliche alten slugs irgendwo in der datenbank vorhalten muss, sollte sich der artikel dochmal ändern - zb wenn etwas umbenannt wird

      sprich, ich kann jemandem sagen "example.com/foo/27" und es reicht - ob er dann eine der folgenden varianten eingibt, ist egal
        example.com/foo/27
        example.com/foo/27-gta-4
        example.com/foo/27-grand-theft-auto-4
        example.com/foo/27-grand-theft-auto-4-mit-untertitel
        example.com/foo/27-grnd-heft-auto-4
        example.com/foo/27-irgendeinbullshit

      1. Moin,

        was spricht dann gegen eine zusätzliche nummerische identifikation?

        Die von Tim schon erwähnte Mnemonik. Du baust aus eigener Bequemlichkeit in deinen URL eine für den Empfänger assoziations- und bedeutungslose Zahl ein, weil "früher" diese zufällige Zahl (nur) für Dich ein Sinn ergab. Mensch muss sich anstrengen, um solche Zahlen zu merken. Sicher kann man einwenden, dass Links vielleicht eher selten mündlich weitergegeben oder händisch eingetippt werden. Aber aus dem Blickwinkel der Kundenorientierung reicht auch der seltene Fall aus. Und in diesen Fällen steht die Zahl nun mal dem Besucher im Weg, ist für ihn sinnlos und damit unnötiger Ballast.

        Grüße

        Swen

        1. Und in diesen Fällen steht die Zahl nun mal dem Besucher im Weg, ist für ihn sinnlos und damit unnötiger Ballast.

          wie unterscheide ich dann zwei exakt gleich titel voneinander?

          1. Moin,

            wie unterscheide ich dann zwei exakt gleich titel voneinander?

            Nicht der Absender, sondern der Besucher soll die auseinanderhalten bzw. erinnern. Die verwendete Technik zur Unterscheidung muss ins Gesamtgefüge Deiner URL-Grammatik einpassen und einen Sinn geben. Das können Monats- oder Jahreszahlen sein. Das mag auch ein schlichter Zähler sein (example.com/foo/gta4-I, example.com/foo/gta-4-II, example.com/foo/gta-4-III ... oder Buchstaben oder Ziffern ...) oder eine inhaltlicher Hinweis. Das Ansatzpunkt ist die bisherige Benamungslogik, die zu der Dopplung führt. Und: es gibt sicher viele richtige Antworten bzw. Lösungen.

            Grüße

            Swen

            1. Das mag auch ein schlichter Zähler sein (example.com/foo/gta4-I, example.com/foo/gta-4-II, example.com/foo/gta-4-III ... oder Buchstaben oder Ziffern ...) oder eine inhaltlicher Hinweis.

              insbesondere hier ist es ja eben (wenn die benennung für den besucher sein soll) verwirrend

              gta-iv-ii
              gta-iv-ii
              gta-iv-iii
              gta-iv-iv

              das verwirrt doch etwas :D

              Das Ansatzpunkt ist die bisherige Benamungslogik, die zu der Dopplung führt. Und: es gibt sicher viele richtige Antworten bzw. Lösungen.

              darum hätte ich eben gedacht, die bisherige id zu verwenden (wenn diese für den besucher ohnein nicht ausschlaggebend ist) - siehe zb youtube, über die kryptischen film-ids beklagt sich auch nicht wirklich jemand

              dass der titel eben noch zusätzlich in der adresszeile steht, erachte ich eben als hilfe und nicht als eindeutiges identifikationsmerkmal

              in meinem fall ist es so, dass zu einem titel teilweise sehr viele dinge geschrieben wurden - das liegt nicht daran, dass das benamungsschema schlecht ist, sondern schlichtweg dass zu exakt dem selben thema artikel verschiedener autoren vorliegen (oder auch vom selben)

              es gibt titel, die kommen durchaus über 100x vor (der regelfall sind etwa 2 bis 3 artikel pro titel, aber es gibt doch einige krasse ausreisser - ab etwa 10 bis 15 artikel aufwärts

              und ob da jetzt titel-foo-bar-1 bis -100 steht oder 823- bis 1723 mit löchern dazwischen dürfte für den besucher weniger relevant sein

              1. Moin.

                in meinem fall ist es so, dass zu einem titel teilweise sehr viele dinge geschrieben wurden - das liegt nicht daran, dass das benamungsschema schlecht ist, sondern schlichtweg dass zu exakt dem selben thema artikel verschiedener autoren vorliegen (oder auch vom selben)

                Warum dann nicht die Autoren in den URI einbauen? Bei mehreren Artikeln gleichen Titels und Autors eventuell noch das Datum hinzufügen...

                Christoph

                1. Warum dann nicht die Autoren in den URI einbauen? Bei mehreren Artikeln gleichen Titels und Autors eventuell noch das Datum hinzufügen...

                  es kommt durchaus vor, dass der selbe autor mehrer artikel zum selben titel am selben tag schreibt oder dass der autor wechselt bzw es ergänzungen durch andere autoren gibt

                  damit wären wir wieder bei sich ändernden links die ich sogut es geht vermeiden möchte

                  1. Hellihello

                    die frage ist doch, wie weit du den timestamp "auffächerst".

                    gleicher tag, ja.
                    gleiche stunde, auch.
                    gleiche sekunde, nö.

                    amazon vergibt "speaking urls" (ganz lange) für die sumas, was intern aber zählt, ist die amazon-id bzw. die isbn (weissnichtgenau).

                    Dank und Gruß,

                    frankx

                    --
                    tryin to multitain  - Globus = Planet != Welt
      2. Hallo,

        der vorteil an der letzteren variante ist, dass das identifikationsmerkmal die id aus der datenbank ist und auch bei einer titeländerung der artikel noch eindeutig gefunden werden kann ohne dass ich mir sämtliche alten slugs irgendwo in der datenbank vorhalten muss, sollte sich der artikel dochmal ändern - zb wenn etwas umbenannt wird

        Einfach nur meine Abneigung gegen Zahlen als Identifikationsmerkmal, ein eindeutiger Slug funktioniert genauso. Dass bei einer möglichen Änderung des Slugs wie bei einem Vertipper dieser geändert wird ... nun ja. Im Normalfall ein wirklicher Grenzfall, den man vernachlässigen kann, finde ich. Ein zusätzliche Tabelle wäre aber auch kein Beinbruch. Man könnte sogar darüber nachdenken, damit gleich ein Versionierungssystem zu kriegen. Noch etwas Abstraktion und man ist bei Wikipedias DB-Schema. ;)

        Tim

        1. Einfach nur meine Abneigung gegen Zahlen als Identifikationsmerkmal, ein eindeutiger Slug funktioniert genauso.

          wie in einem post weiter unten erwähnt: die titel sind nicht eindeutig, dh man muss exakt gleiche titel/slugs durch irgendwas unterscheiden

          Man könnte sogar darüber nachdenken, damit gleich ein Versionierungssystem zu kriegen.

          ist bereits in arbeit ;)

          Noch etwas Abstraktion und man ist bei Wikipedias DB-Schema. ;)

          das wird noch etwas dauern, aktuell sinds in diesem fall 11 tabellen :)

      3. Hi,

        meinetwegen ich habe 3 artikel zu grand theft auto iv

        Dann nummeriere diese fortlaufend.

        ob ich die jetzt "grand-theft-auto-4-foo, grand-theft-auto-4-bar, grand-theft-auto-4-baz" oder "grand-theft-auto-4-1, grand-theft-auto-4-2, grand-theft-auto-4-3" oder "27-grand-theft-auto-4, 85-grand-theft-auto-4, 147-grand-theft-auto-4" ist doch beides recht eindeutig

        Nein, bei 27-, 85-, 147- bringst du wieder eine Datensatz-ID mit hinein, die mich als Besucher ueberhaupt nicht interessiert.
        Ausserdem frage ich mich da, wo denn 1-grand-theft-auto-4 bis 26-grand-theft-auto-4, 28-grand-theft-auto-4 bis ... etc. geblieben sind? Wie, die gab's gar nicht? Dann verstehe ich als Benutzer diese Art der "Nummerierung" ja gleich noch weniger.

        gta4_I, gta4_II, gta4_III, oder meinetwegen auch gta4_part6 oder gta4_teil7 - damit kann ich als Nutzer etwas anfangen. Das suggeriert mit auch gleich, dass es noch weitere Artikel gibt, die sich um das gleiche Thema drehen und mich vielleicht auch interessieren koennten.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  4. nach reichlicher überlegung werde ich jetzt diese variante wählen:

    1. example.com/artikel/titel-foo-bar

    bei identischen titeln wird halt ein suffix angehängt, eine fortlaufende nummer zu erzeugen is kein thema

    der vorschlag von chrisb mit dem "part1", "part1" usw gefällt mir auch ganz gut - einige artikel gibts durchaus als zusammengehörige teile/serien

    ich muss das jedenfalls nochmal setzen lasen, danke jedenfalls für die zahlreichen meinungen

    ---

    btw: eigentlich wollte ich das in "sonstiges" posten ;)

    1. Moin.

      Was auch noch eine Möglichkeit wäre: Du interpretiert die URI als eine Art Suchanfrage, die mit / verschiedene Teilanfragen oder-verknüpft.

      Teilanfragen der Art 2009, 2009-01, 2009-01-29 werden als Datumsangaben interpretiert, alles andere als Schlüsselworte für die Suche in Autoren- und Titelbezeichnungen.

      Ein Beispiel:

      /christoph/suit/2008-12/2009-01/aber-was-jetzt

      findet alle Artikel von Dezember 2008 oder Januar 2009, mit Autoren- oder Titelbezeichnung "christoph" oder "suit" oder "aber was jetzt".

      Erzielt die Anfrage mehrere Treffer, gib einfach alle in einer Liste aus...

      Christoph

      1. PS: Zu schnell auf Absenden geklickt :(

        Datumsangaben sollten oder-verknüpft werden, die Teilanfragen aber ansonsten und-verknüpft.

        Das Beispiel

        /christoph/suit/2008-12/2009-01/aber-was-jetzt

        wird also als

        ((year == 2008 && month == 12) || (year == 2009 && month == 01)) &&
        (author == "christoph" || title == "christoph") &&
        (author == "suit" || title == "suit") &&
        (author == "aber was jetzt" || title == "aber was jetzt")

        interpretiert...

        1. das würde aber mein problem mit den nicht veränderbaren urls nicht lösen und ggf bei einer url zu mehreren treffern führen

          die suche selbst hat ja damit nix zu tun - die soll gefälligst mit post arbeiten :)