ChrisB: Dynamisches in Statisches!?

Beitrag lesen

Hi,

mir war irgendwie nicht klar, dass bei

RewriteEngine On
RewriteRule ^test0.html$ index.php?section=$0

"section" über "$0" schon mit dem wert im ersten argument, also "^test0.html$", belegt wird, anstatt mit "0" selbst. mein wertevorrat für section waren ja gerade die zahlen 0,1,etc.; daher hat mich diese syntax leicht irritiert.

"Normalerweise" wuerde man den explizit gesuchten Teil im Suchausdruck mit runden Klammern "gruppieren", so dass man darauf anschliessend direkt Zugriff hat:

RewriteRule ^test([0-9]+).html$ index.php?section=$1

[0-9] ist die Klasse der Zeichen 0-9 (eckige Klammern stehen fuer "Zeichenklasse").
Das Zeichen + dahinter bedeutet "mindestens ein oder beliebig viele Male".
Und das, worauf dieser Teilausdruck zutrifft, bekommst du durch die runden Klammern in $1 zur Verfuegung gestellt.
Das funktioniert jetzt fuer test0.html, test2.html, test4711.html - mit nur einer Rewrite-Regel. Bisschen praktischer, oder?
(Und das Sonderzeichen ., welches hier aber kein Sonderzeichen sein soll, sondern lediglich "Punkt" bedeuten soll, wird durch einen vorangestellten \ "maskiert".)

da man mod_rewrite in .htaccess (zumindest in dem fall) anscheinend nur als verlagerte wertzuweisung des entsprechenden parameters benutzt, frag ich mich nun aber, ob man das nicht auch mit eins,zwei zeilen in php erledigen könnte!

Nein, mod_rewrite dient nicht nur als "verlagerte Wertzuweisung".
Ohne mod_rewrite wuerde gar kein test0.html gefunden, also auch gar kein PHP ausgefuehrt.

MfG ChrisB

--
„This is the author's opinion, not necessarily that of Starbucks.“