»» »» RewriteRule ^edit/(.*) page_edit.php?k=$1 [L]
»» »» RewriteRule (.*) page.php?k=$1 [L]
»» »»
»» »» ja auch tun dürfte, oder?
»»
»» Nicht direkt, mit der letzten Regel wirst du bedingt durch den internen redirect immer page.php?k=page.php im Verzeichniskontext erhalten.Trotz des [L] am Ende?
Ja, das hat nur im aktuellen Durchlauf eine Funktion. Im content handler von mod_rewrite wird mit dem URL-path /page.php?k=foo.html ein interner redirect durchgeführt. Der hat ein erneutes Durchlaufen des Requestprocessings zur Folge, also Abbilden auf das Dateisystem, Directory-, Files-, Location-Walk, access,- und auth checks, fixup-hooks,...... All das wird erneut durchlaufen. Das ist praktisch fast wie eine neue Anfrage. Da die notierte Regel erneut erreicht wird, wird sie auch durchlaufen und ausgeführt.
Wäre dann also "nicht am Anfang page.php" zu wählen
^!page.php(.*) ...???
Du brauchst einen negativen Lookahead, also
^(?!page.php)(.*)
oder eben über die mod_rewrite-Syntax das Ergebnis der RegEx umdrehen
RewriteRule !^page.php$ foo?args=%{REQUEST_URI}
Viele Anwender, das sollte auch das Forumsarchiv zeigen, werden mit der alles konsumierenden RegEx .* aber nicht glücklich und produzieren bedingt durch den internal redirect Endlosschleifen oder "das Statistik-Verzeichnis ist nicht mehr aufrufbar" und solche Sachen...