dedlfix: mod_rewrite Flag [L]

Beitrag lesen

echo $begrüßung;

Das Flag "L" sollte das doch eigentlich verhindern, oder habe ich mich da geirrt?

Nein, es verhindert nur die Auswertung der nachfolgenden Regeln in _dieser_ Konfiguration für _diesen_ Request. Aufgrund der technischen Besonderheiten beim URL-Rewritung auf Verzeichnisebene im Apachen ist der erwähnte interne Redirect erforderlich. Der durchläut die komplette Behandlung im Apachen erneut. Die Handbuch-Kapitel zum URL-Rewriting beschreiben den Vorgang noch genauer als ich es hier tun kann.

Wie du doch noch zu deinem Ziel kommst, kann ich dir grad nicht sagen. Für die gegebene Information fällt mir kein Weg ein, das zu realisieren. Ein geringfügig anderes Verhalten legt mod_rewrite an den Tag, wenn die Umschreibung im selben Verzeichnis bleibt. Dann erkennt mod_rewrite in bestimmten Situationen, dass bereits umgeschrieben wurde. Du schickst jedoch durch den vorangehenden / den internen Redirect in ein anderes Verzeichnis. Jedenfalls wird das so angesehen. Nimm dir am besten mal die Kapitel zu mod_rewrite vor und verfolge das RewriteLog bei deinen Versuchen. Das wirkt zwar auf den ersten Blick recht erschlagend, doch zeigt es auch, wie aufwendig so ein Rewrite-Prozess ist.

Vielleicht kannst du auch die zweite RerwiteRule beim internen Redirect mithilfe von RewriteCond(itions) außer Kraft setzen. Ich vermute, dass man mit THE_REQUEST, REQUEST_URI oder REQUEST_FILENAME, vielleicht aber auch mit IS_SUBREQ was anstellen kann. Verfolge bei deinen Tests stets das RewriteLog, damit du weißt, woran der Versuch scheitert. bzw. siehst, wie mod_rewrite auf Änderungen reagiert.

echo "$verabschiedung $name";