Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Mod_rewrite in .htacces - Grundlagen

innu / 1 Antworten / Flachansicht Nickles

Hallo Zusammen,

es geht um .htaccess und mod_rewrite in Verbindung mit *.php:

Gestern habe ich mal eine Stunde mich mit mod_rewrite auseinandergesetzt und es immerhin hinbekommen, dass aus "index.php?id=1" "index.html/1" wird. Soweit so gut. Viel weiter bin ich allerdings nicht gekommen, weil ich zwar Anweisungen gefunden habe und diese dann angepasst habe, aber so wirklich erklärt wurde es niergends - daher habe ich das ganze auch nicht richtig verstanden und viele Beispiele haben bei mir nicht funktioniert.

Daher habe ich folgende Fragen zu dem Thema:

- gibt es eine gute Tutorialseite wo mod_rewrite auch erklärt wird?

- muss ich mir vorab Gedanken zum URL-Rewrite machen, oder kann ich Projekte auch im nachhinein damit ausstatten?

- muss ich wirklich für jede Art von Seite eine Liste in der .htaccess erstellen oder kann ich das generieren lassen?

- muss es über .htaccess laufen, oder gibt es noch andere Möglichkeiten das gewünschte Ergebnis (nämlich SEO und Variable-Wirr-Warr für den User) zu erreichen?

- achso, wichtig: komm ich trotzdem an die $_GET['variable'] auch wenn diese nicht in der Adresszeile steht?

Ich danke Euch -wie immer- im Voraus!
DANKE, innu.

bei Antwort benachrichtigen
xafford innu „Mod_rewrite in .htacces - Grundlagen“
Optionen
- gibt es eine gute Tutorialseite wo mod_rewrite auch erklärt wird?

Ja, Google schmeisst für "Tutorial mod_reqrite" massig Treffer aus, ebenso für "Syntax mod_rewrite", ein bestimmtes kann ich Dir allerdings nicht empfehlen.

- muss ich mir vorab Gedanken zum URL-Rewrite machen, oder kann ich Projekte auch im nachhinein damit ausstatten?

Ja und Nein. Prinzipiell kann man so gut wie jedes Projekt nachträglich mit mod_rewrite nutzen, es gibt jedoch ein paar Fallstricke zu beachten z.B. bei Request-Variablen, gesetzten Server-Variablen und Unterschiede beim Einsatz zwischen PHP als CGI oder als Modul.

- muss ich wirklich für jede Art von Seite eine Liste in der .htaccess erstellen oder kann ich das generieren lassen?

Der Sinn von mod_rewrite ist es ja gerade eben keine Liste von Seiten erstellen zu müssen. Dafür gibt es die Unterstützung regulärer Ausdrücke (Perl Regular Expressions) um eine dynamische Umwandling der URL durchzuführen. Du kannst z.B. deine URL so aufbauen:

http://www.meinedomain/1/3/15/profil.html

und das intern dann so umschreiben lassen in der Form:

index.php?module=1&submodule=3&userid=15

Allerdings reicht für so einen Einsatz auch einfach die Nutzung der Direktive für eigene Fehlerseiten (Error Document 404 index.php).

- muss es über .htaccess laufen, oder gibt es noch andere Möglichkeiten das gewünschte Ergebnis (nämlich SEO und Variable-Wirr-Warr für den User) zu erreichen?

Ja, siehe oben: Error Document. Allerdings musst Du bei SEO aufpassen, Suchmaschinen erkennen solche Tricks recht leicht wenn man sich nicht sehr viel Mühe gibt und das kann u.U. zu Abwertungen führen.

- achso, wichtig: komm ich trotzdem an die $_GET['variable'] auch wenn diese nicht in der Adresszeile steht?

Da verstehst Du etwas grundlegendes an mod_rewrite falsch! Die GET-Variablen stehen aus Sicht von PHP in der Adresszeile, wenn Du das mittels mod_rewrite so aufbaust. PHP sieht die umgeschriebene URL, nicht die originale.

Wo Du aber Probleme bekommen wirst sind die $_POST-Variablen, denn die sieht dein Script in der ursprünglichen Form nicht mehr.
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen