Bob: mod_rewrite spinnt

Beitrag lesen

wenn einer http://server/scripts/testverzeichnis/test.php aufruft, möchte ich, dass das script scripts/index.php aufgerufen wird mit dem parameter: file=testverzeichnis/test.php
habe sehr lange rumgetüftelt, aber
RewriteRule ^(.*)$ index.php?file=$1
aber irgendwie erhalte ich immer als parameter file=index.php, egal welche _virtuelle_ datei aufgerufen wird :(

Ja, weil nach dem internal redirect deine Regel erneut "matched", das Rewriting am Ende wegen gleichheit des alten und neuen r->filename abgebrochen wird, zuvor jedoch schon der queryString gesplittet worden ist. Du müsstest also deine index.php ausschließen.

ggf. solltest di die Regel vielleicht auf .php-Dateiendungen beschränken, sofern denn nicht auch Grafiken auf der index.php landen sollen.

RewriteEngine on
RewriteCond {REQUEST_URI} !^/index.php$
RewriteRule ^(.+.php)$ /index.php?file=$1 [L]