mod_rewrite: So können lesbare URLs erstellt werden!

Das Apache Modul mod_rewrite ermöglicht es, simple ausgedrückt, die Anzeige in der Browser-Zeile hübsch aussehen zu lassen und trotzdem an einen ganz anderen Ort zu leiten. Das kann zum einen technische Gründe haben wie: Umzug eines Dokuments.

Auch ist es so, dass Nutzer lieber auf eine für sie lesbare URL klicken als auf irgendwas mit ganz vielen Variablen am Ende. Und dann ist da noch die SEO-Geschichte: Google mag offensichtlich lesbare URLs lieber als Variablen-Verschachtelungen.

mod_rewrite kann relativ einfache Geschichten abwickeln, aber auch mit ziemlich komplexen regulären Ausdrücken umgehen. Zitat von Brian Behlendorf (Apache Group):

Geniale Themes: MyThemeShop
MyThemeShop
Vorteile:
MyThemeShop Vorteile
  • Extrem schöne WordPress Themes
  • Bereits SEO-optimiert und flexibel einsetzbar
  • Einzelkauf oder Premium Abo möglich

The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail.

Sorry, wer den Sendmail-Witz nicht versanden hat, der kann sich den Rest des Beitrags wahrscheinlich sparen.

Für den Fachmann

Die einfachste Lösung eine Variabel via mod_rewrite zu übergeben besteht darin, diese in der URL innerhalb eines Patterns z. B.: /meine_datei_xxrtv-12.html und diese anschließend als Variable an ein Script anzuhängen z. B.: index.php?query=12.

Aber halt: Die Script-Ausgabe ist nun aber ebenso unter meine_nicht_vorhandene_datei_xxrtv-12.html vorhanden. Das ist das nicht ganz so schicke an der Lösung. Und was passiert wenn, jemand ein bisschen rumspielt und vielleicht die 12 durch die 15 ersetzt? Somit eine nicht so wahnsinnig brillante Lösung.

Die bessere Lösung ist die Variable vorher in Buchstaben zu codieren. Wurde hier bei der Bildersuche schonmal kurz beschrieben. Was allerdings bleibt ist, dass die Datei immer noch mit einem anderen Buchstabencode aufrufbar ist. Somit zwar besser aber noch nicht ideal.

Conversion-Plugins: Flytools
Flytools
Vorteile:
Flytools Vorteile
  • Ideal um Webinar- oder Mitglieds-seiten zu erstellen
  • Conversionstarke Buttons schnell & einfach erstellen

Nun zu der aus meiner Sicht elegantesten mod_rewrite Lösung

Wir übergeben erst gar keine Variabel! Meist handelt es sich sowieso nur um die Datenbank-ID, welche benötigt wird, um dem Script zu sagen, was es anzeigen soll. Erstmal gehen wir her und verschwenden in der Datenbank je Datensatz noch ein Feld mit dem Dateinamen z. B. “pups-strulli-seite”.

Das “.html” lassen wir mal entspannt weg. Das hat den Vorteil, dass zum einen der gewünschte Dateiname immer zur Verfügung steht und auch bei Bedarf gezielt geändert werden kann (Keywords!).

Dann sagen wir mod_rewrite was wir denn gerne bei einem Aufruf übergeben hätten, was so geht:

Damit gibt uns mod_rewrite alles zurück, was zwischen “.tld/” und “.html” steht. Das können wir dann ganz einfach in der Datenbank suchen und uns auch die restlichen benötigen Daten aus der Datenbank holen.

Zu beachten:

  • Bei dieser Variante, darf jeder Dateiname nur einmal vergeben werden (Es ist auch nicht gerade üblich mehrfach den gleichen zu vergeben 🙂 ).
  • Es muss ein zentrales Script geben, was herausfindet um welchen Datenbank-Eintrag es sich handelt. Danach kann man Scripte per include laden oder einfach per location weiterleiten.
  • Bei mehreren Datenbanken müssen mehrere Anfragen her, am besten nach der Aufruf-Wahrscheinlichkeit als case-Schleife mit break aufrufen.

Alles klar? Alles verstanden? Noch ne bessere Idee? Raus damit!

WP-Akademie
Nutzen:
WP-Akademie Inhalt
  • Ausbildung zum Internet-Unternehmer
  • Online Private-Coaching
  • Zertifizierung und Auszeichnung
WP-Akademie Button
Projekteplattform: Freelancer
Freelancer
Kernbereiche:
Freelancer Aufgaben
  • Programmier-aufträge vergeben und finden
  • Kostenlose Joberstellung
  • 15 € Startguthaben geschenkt
Bewerte diesen Artikel
1 Stern2 Sterne3 Sterne4 Sterne5 Sterne


Bis jetzt keine Bewertung
Loading...

3 Kommentare zu mod_rewrite: So können lesbare URLs erstellt werden!

  1. Konrad sagt:

    Ich gehe dabei ähnlich vor, nur das ich bei kleineren Projekten mit relativ wenig Seiten statt einer SQL DB auf Arrays setze. Hat den Vorteil, dass ich die Datenbank entlaste und auch ein Flaschenhals wegfällt.

    Habe schon mehrfach Nischenseiten gesehen, die überhaupt nicht mehr funktioniert haben, weil die Datenbank den Geist aufgegeben hat. Mit mehreren 100 Seiten ist die Variante mit den Arrays natürlich unschön und da man ab so einer Größe meist sowieso ein richtiges CMS verwendet, kann man auch auf Datenbanken setzen.

    Man sollte allerdings nicht vergessen, vor der Abfrage genau zu überprüfen, ob kein gefährlicher Code enthalten ist. Wenn man mit IDs arbeitet, kann man einfach checken ob da eine Zahl übergeben wurde, wenn man mit Strings arbeitet, kann da schon mal jemand versuchen Code einzuschleusen: .html

  2. Horst sagt:

    Konrad hat bezüglich der Sicherheit schon recht.

    Ich mache das bei eforia ähnlich, nur noch einen Schritt weiter. Wenn sowieso jede Seite einen Dateinamen hat, dann lege ich doch glatt unter genau diesem die Seite an. Dann läuft alles über den HTTP-Server ohne zusätzlich Rechenzeit zu verbraten.

    OK, ich muss mich bei Änderungen um das Auffrischen kümmern, aber das hält sich normalerweise in Grenzen. Wenn ein Benutzer angemeldet ist und dynamische Inhalte bekommt, geht es automatisch über andere URLs.

    Witzig ist übrigens auch eine Kombination. D.h. statische Seiten angeben und erst beim ersten Abruf per mod_rewrite erzeugen lassen. D. h. man hat nur Seiten, die wirklich benötigt werden. Falls sich was ändert, löscht man die Seite einfach weg. Bei Bedarf wird sie neu erzeugt.

  3. Pepo sagt:

    Yo, Filenamen anstatt IDs und die Seiten cachen und diesen Cache dann anzeigen lassen. So mache ich das auch.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

How-to-WordPress.de unterstützt dofollow und ist somit nofollow frei.