dedlfix: [mod_rewrite] Problem mit Variablenübergabe

Beitrag lesen

echo $begrüßung;

RewriteRule ^([a-zA-Z0-9-_]*).php$ index.php?page=$1&end=php [L]
für www.test.test/foo.php  erhalte ich index und php.

Woran könnte das bloss liegen?

mod_rewrite stellt aufgrund der internen Arbeitsweise des Apachen einen weiteren Request mit dem umgeschriebenen Ergebnis. Dieser Request durchläuft ebenfalls die Per-Verzeichnis-Konfigurationsanweisungen, also auch deine RewriteRules. Es wird also erneut umgeschrieben und das Spiel geht von vorn los. Diesmal dürfte aber mod_rewrite bemerkt haben, dass es schon mal umgeschrieben hat und es nun ignorieren, was aber schon zu spät ist. Den genauen Ablauf erfährst du, wenn du dir das RewriteLog anschaust, falls du darauf Zugriff hast und es eingeschaltet wurde.

Abhelfen kannst du dir mit zwei RewriteCond(itions), die nur dann ein Umschreiben zulassen, wenn der Request auf keine existierende Datei und kein existierendes Verzeichnis passt.

RewriteCond  %{REQUEST_FILENAME} !-d
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-_]*).php$ index.php?page=$1&end=php [L]

Die RewriteCond ebenfalls für deine .html-RewriteRule zu verwenden ist sicher auch keine schlechte Idee.

echo "$verabschiedung $name";