ThomasP: mod_rewrite - ein paar grundsätzliche Fragen

Beitrag lesen

Hallo!

Vielen Dank für Deine Antwort! Hast mich auf jeden Fall schon um ein ganzes Stückchen schlauer gemacht :-)

  1. Wofür ist eigentlich die RewriteCond? Die RewriteRule ist mir klar, aber die Condition? Wozu? Weder meine beiden Apache-Bücher, die ich mir ausgeborgt habe, noch längeres Stöbern im Archiv konnten mir diese Frage beantworten.

cond -> condition = Bedingung.

Ja, soweit hatte ich es auch verstanden, aber was genau wußte ich nicht. Jetzt bin ich der Wahrheit auf jeden Fall schonmal näher.

Auf Deutsch: RewriteRule ist zum _Ändern_ der URI da, mit RewriteCond legst Du fest, _ob_ die URI überhaupt geändert werden soll. Jeder Block aus RewriteCond-Anweisungen gehört dabei zu der jeweils darauf folgenden RewriteRule-Anweisung.

Schätze mal, das bringt vor allem in Sachen Performance was, wenn man diese Rules anwendet, oder? Also so, daß nicht in jedem Fall der reguläre Ausdruck ausgewertet werden muß, oder?

  1. Folgendes habe ich ausprobiert:
    RewriteRule ^test/(.*)/(.*)/(.*).html ^test/$3.php?$1=$2
    Das sollte eigentlich bewirken, daß man einen Parameter im Pfad übergeben kann, also aus test/id/10/show.html sollte test/show.php?id=10 werden. Da der Server aber antwortet, daß er die Datei "test/id/10/show.html" nicht finden kann, nehme ich an, daß die RewriteEngine überhaupt nicht greift.

Also im zweiten Teil ist IMHO schonmal garantiert das ^ am Anfang zuviel.

Ja,stimmt. War ein Tippfehler. In meiner Bedingung in .htaccess war das gar nicht drinnen :-)

Dazu kommt noch, daß die $n-Dinger bei 0 anfangen, nicht bei 1.

Ah ja. Gut. Das war mir nicht klar :-)

Probier mal etwas in der Richtung
RewriteRule ^/test/(.*)/(.*)/(.*).html$ /test/$2.php?$0=$1

Blöderweise geht das nicht :-(

Das gilt aber nur, wenn /test im Basisverzeichnis liegt, also unter "http://deine.domain.de/test/" zu erreichen ist und diese .htaccess, unter "http://deine.domain.de/.htaccess" (ortsmäßig meine ich, daß sie dort nicht per Browser abrufbar sein muß und darf, ist klar).

Also ich habe das getestet. Wenn ich die Datei aufrufen möchte, dann kommt: You don't have permission to access /.htaccess on this server.
Sollte also passen, hm?!

Davon abgesehen: Wenn Du schon dabei bist, solltest Du vielleicht die Adressen nicht nur maschinen-, sondern auch gleich menschenfreundlich machen. "test/id/10/show.html" kann ich mir nicht merken, "test/artikel/10" schon viel besser.

Ja, da hast Du auf jeden Fall recht, jedoch sind diese URLs nicht dafür gedacht, sie per Hand einzugeben, sondern nur Links von der Navigationsleiste zu den einzelnen Seite im Hauptframe. Wenn sich jemand einbildet, die von Hand eingeben zu müssen, dann soll er sich die auch merken :-)

viele Grüße und Danke erstmal

Thomas.