marcus: URL-Definition

Hallo zusammen,

bin auf der Suche nach externen Anregungen und würde mich über jeden Beitrag zu folgender Problematik freuen (habe leider nichts passendes im Archiv gefunden hierzu).

Also, ich habe in der Datenbank die Navigationsstruktur als Baum abgebildet, wodurch jede Ebene unterschiedliche Seiten und Unterebenen besitzen kann. Zusätzlich bekomme jede Seite einen Bezeichner ("seiteX").

Jetzt möchte ich als URL folgendes benutzen:

"www.projektname.de/seiteX"

...was natürlich so at hoc nicht funktioniert, weil "seiteX" ja kein Script oder Verzeichnis ist sondern nur ein Label für den Navigationspunkt.

Spannender wird es sogar noch, wenn ich folgendes aufrufen will:

"www.projektname.de/seiteX/seiteY/seiteZ"

...wobei "seiteZ" dann in der Datenbank ein Child von "seiteY" und das widerum ein Child von "seiteX" wäre.

Erster Gedanke war, einfach per mod_rewrite ALLE Aufrufe an die Domain abzufangen, die URL zu parsen und dann per Redirect weiterzuleiten... nur das Redirect landete erneut beim mod_rewrite, was also eine Endlosschleife bedeutet.

Zweite Idee war, nur bei einem 404 (weil normale Pfade und Scriptnamen sollen ja weiterhin funktionieren) die URL abzufangen und zu analysieren.

Jetzt kommen mir aber irgendwie Zweifel, ob das wirklich der beste Weg ist. Ich müsste die URL dann an allen "/" auseinandernehmen und mit jedem Element in der DB vergleichen, ob dieser Platzhalter existiert und ob darunter dann ggf. der nächste existiert... das klingt schon rein theoretisch sehr inperformant :-)

Da es sich um mehrere hundert Unterverzeichnisse/-dateien handelt, kann ich auch nicht alle im Voraus per mod_rewrite definieren, außerdem sollen dynamisch welche hinzukommen.

Habe in dieser Richtung bisher nichts gemacht, deswegen bin ich gerade etwas planlos... hat jemand eine gute Idee oder einen Link, den er empfehlen kann?

Danke und Gruß
Marcus

  1. Moin!

    Erster Gedanke war, einfach per mod_rewrite ALLE Aufrufe an die Domain abzufangen, die URL zu parsen und dann per Redirect weiterzuleiten... nur das Redirect landete erneut beim mod_rewrite, was also eine Endlosschleife bedeutet.

    Zweite Idee war, nur bei einem 404 (weil normale Pfade und Scriptnamen sollen ja weiterhin funktionieren) die URL abzufangen und zu analysieren.

    Du kannst mit mod_rewrite prüfen, ob eine Datei im Dateisystem existiert, und vom Ergebnis dieses Tests abhängig das Rewriting steuern - wahlweise auf diese reale Datei, oder auf dein Parsingskript.

    Jetzt kommen mir aber irgendwie Zweifel, ob das wirklich der beste Weg ist.

    Ich habe sowas schon eingesetzt.

    Ich müsste die URL dann an allen "/" auseinandernehmen und mit jedem Element in der DB vergleichen, ob dieser Platzhalter existiert und ob darunter dann ggf. der nächste existiert... das klingt schon rein theoretisch sehr inperformant :-)

    mod_rewrite könnte nichts anderes tun. Und hat nur reguläre Ausdrücke zur Verfügung, die durchaus weniger performant sein können, als simple Stringfunktionen.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."