echo $begrüßung;
RewriteEngine On
RewriteRule ^(.*)$ content.php?path=$1
Weil content.php eben auch auf das Pattern matched? Ein [L] (=schlussNachErstemMatch) am Ende könnte helfen.
Nein, das hilft nicht. Man muss dazu die Arbeitsweise von mod_rewrite kennen. Wenn eine RewriteRule in der Per-Verzeichnis-Konfigurationsdatei (meist .htaccess) steht, sind schon fast alle Messen im Apachen gelesen. Es ist dann nicht mehr möglich, den Request, der schon den Weg in dieses Verzeichnis gefunden hat, noch großartig zu ändern. Deshalb bedient sich mod_rewrite eines Tricks. Es macht einen internen Redirect. Davon bekommt man außer im RewriteLog nicht viel mit. Dieser Redirect hat jedoch die Angewohnheit nochmal die gesamte Prozedur inklusive .htaccess-Datei-Check zu durchlaufen. Man muss also dafür sorgen, dass der erneute Request nicht noch einmal auf die bisherigen Regeln passt, sonst kann das unter Umständen auch zu einer Endlosschleife führen (die der Apache aber recht bald abbricht). Das [L] sorgt nur für den aktuellen Durchlauf für ein Beenden der nachfolgenden RewriteRule-Checks, doch der Redirect ist ein neuer Fall. Im Allgemeinen löst man dieses Problem so, dass real existierende Dateien und Verzeichnisse mittels RewriteCond ausgeklammert werden:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ irgendwohin?param=$1
Request nach foobar kommt rein, ist weder Verzeichnis noch Datei, die RewriteRule passt. Es ergibt einen internen Redirect nach irgendwohin?param=foobar. Ein neuer Request nach irgendwohin?param=foobar kommt, "irgendwohin" ist eine Datei, RewriteRule passt nicht, Ende.
echo "$verabschiedung $name";