dedlfix: lesbare URL

Beitrag lesen

Hi!

Zum Thema: irgendwie werd ich aus diesem mod_rewrite noch nicht ganz schlau. Die Parameter zu erhalten/extrahieren ist auch garnicht das Problem! Das Problem ist die URL. Aber trotz der ganzen Antworten von Euch - hier noch einmal danke - weiss ich immer noch nicht, wie ich das machen kann.

Gegeben ist nur ein Text wie "peter-meier-hamburg". Aus diesem kommst du nur zu einer ID, wenn du mit diesem eine Datenbankabfrage machst. Möglicherweise muss der Text noch in Name, Vorname und Ort aufgespaltet werden, wenn dein DBMS sie in dieser Form speichert. Der Text muss jedenfalls irgendwie an PHP gereicht werden. URLs wie foo.php?text=peter-meier-hamburg oder foo.php?name=meier&vorname=peter&ort=hamburg wären dafür recht gut geeignet. Bei der "text=..."-Variante müsste PHP die Einzelteile auftrennen, was mit explode() ginge.

Ein foo.php[2] brauchst du auf alle Fälle, damit der Apache anhand des .php das PHP starten kann. mod_rewrite kommt nun ins Spiel, wenn du Dinge wie foo.php?text= nicht in der offiziellen URL haben möchtest. Es leitet den Request nach /blafasel um nach foo.php?text=blafasel oder auch /bla-fasel nach foo.php?x=bla&y=fasel. "Umleiten" ist dabei ein interner Prozess im Apachen, der den Request nimmt, umschreibt und ihn sich selbst wieder zuführt, so dass er foo.php?... abarbeiten kann, als ob der Anwender es selbst aufgerufen hätte.

[1] Den Bindestrich als Trennzeichen zu verwenden hat außerdem noch den Nachteil, dass Doppelnamen mit Bindestrich drin schlecht handhabbar sind, denn der Bindestrich kann sowohl im Vornamen als auch im Nachnamen vorkommen, und was nun zu wem gehört, kann man nicht so leicht feststellen.
[2] Auch die bestehende index.php könnte so erweitert werden, dass sie auch mit den Parametern text oder name, vorname und ort umgehen kann.

Lo!