Tach!
Meine .htaccess-Datei sieht folgendermaßen aus:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.)$ /index.php?page_url=$1
RewriteRule ^(.)/$ /index.php?page_url=$1 [L]
RewriteConds gelten nur für die eine RewriteRule, vor der sie stehen.
> xyz.de/impressum/ --> "/index.php"
Die zweite Rule springt an. Dann gibt es einen internen Redirect, das passiert immer beim Rewriten. Nun hast du also aus dem /impressum/ ein /index.php?page\_url=impressum gemacht. Das wird nun von der ersten RewriteRule zu /index.php?page\_url=index.php umgeschrieben. Der Querystring ging verloren, der wird von der RewriteRule nicht berücksichtigt (aber mit QSA-Flag angehängt).
> Wie kriege ich es nun hin, dass trotz des angehängten Slashs an eine URL kein Fehler ausgegeben wird, sondern die richtige page\_url?
Ich würde alles mit
RewriteRule .\* /index.php
(und den beiden RewriteConds davor) umschreiben und im Script $\_SERVER['REQUEST\_URI'] auswerten.
dedlfix.