Hi frankx,
warum (.+) und nicht (.*)
Weil (.*) beliebig viele Zeichen matched, also auch 0 Zeichen und somit auch auf /t/.jpg zutrifft. Das halte ich nicht für sonderlich sinnvoll, da dieses Bild höchstwahrscheinlich nicht existieren wird, also lasse ich solch eine Anfrage lieber direkt vom Apachen mit 404 beantworten, indem ich (.+) verwende. Das matched ein Zeichen oder mehrere, aber es muss mindestens ein Zeichen vorhanden sein.
Letztendlich wird man natürlich im PHP-Script so oder so den erhaltenen Parameter prüfen müssen, bevor man ihn weiterverarbeitet. Es lassen sich also sowohl für (.*) als auch für (.+) Pro und Contra Argumente finden.
^/t und nicht ^t ? steht zu Beginn immer der Slash?
Das hab ich jetzt einfach nur so von Frank und Felix übernommen. Ob du die Pattern mit führendem Slash notieren musst oder nicht, hängt davon ab, in welchem Kontext du die RewriteRule notierst:
When using the rewrite engine in .htaccess files the per-directory prefix (which
always is the same for a specific directory) is automatically removed for the
pattern matching and automatically added after the substitution has been done.
This feature is essential for many sorts of rewriting; without this, you would
always have to match the parent directory, which is not always possible. (Quelle)
In einem <Directory>-Block oder in einer .htaccess-Datei müsstest du den Slash weglassen und dafür eventuell noch die RewriteBase angeben, in der Server- oder VirtualHost-Konfiguration gehört der Slash da hin.
Viele Grüße,
~ Dennis.