Zitat:
ich habe es nun so gelöst:
RewriteRule ^pic.php(.*) pic.php$1 [L]
|
Hinter .php kommt nichts mehr, der QueryString ist im pattern nicht verfügbar.
Damit generierst du aber auch wieder einen internal redirect. Für solche Sachen gibt es extra die Möglichkeit des
- in der Substition (no substitution; vgl. manual).
Slashs müssen nicht escaped werden, lokale URLs statt filepaths in der Substitution sparen interne Verarbeitunsgschritte, das case-intensive läuft über das NC-Flag wesentlich schneller, als in einer Zeichenklasse [
A-Za-z]. In deine letzte Regel laufen auch Bilder etc. - gewollt?
Nein, du kannst den internal redirect und damit den 2. Durchlauf nach einem match nicht verhindern, da du dich im per-dir context befindest (der in der Tat in Performancesachen grausig ist, bei Seiten unter stärkerer Last nicht so zu empfehlen, schon garnicht, wenn Zugriff auf die httpd.conf/den <virtualhost...> besteht. Die Backtracks halten sich aber bei der 2. Rule hier doch in Grenzen).
Code:
RewriteRule ^(index|pic)\.php$ - [L]
RewriteRule ^pics/(?:((?:[a-z]+/)*[a-z]+)/)?(?:~([a-z]+)/)?([a-z0-9]+\.[a-z]{3})$ /pic.php?makro=$2&path=$1&name=$3 [NC,L]
RewriteRule ^(.*)$ /index.php?page=$1 [L,QSA]
Zitat:
|
Und welche Apache-Version verwendest du?
|
Das ist Apache 2.x, da PCRE.