Mod_rewrite mit php auf php

Hallo Leute!

Die Frage wirkt anfangs etwas blöd, aber ich bräuchte ein mod_rewrite auf .php…
so hab ich es:

<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^([^-].*).html/([^-].*)/([^-].*)$ index.php?seite=$1&action=$2&show=$3 [L,NC] RewriteRule ^([^-].*).html/([^-].*)$ index.php?seite=$1&action=$2 [L,NC] RewriteRule ^([^-].*).html$ index.php?seite=$1 [L,NC] </IfModule>
statt dem .html sollte jedoch .php kommen. Wenn ich es jedoch ändere, funktioniert nur teilweise das CMS. Die index.php wird zwar ausgegeben, jedoch wird das GET (seite) nicht übergeben und man gelangt auf eine CMS-basierende 404 Seite.

nochmal vereinfacht erklärt:
jetzt: makeyourweb.at/404fehler.html (index.php?seite=404fehler)
nachher: makeyourweb.at/404fehler.php (index.php?seite=404fehler)

Hat jemand eine Idee/Rat oder kann mir dabei helfen das auch das GET übergeben wird?

Danke!

Es gibt für mod_rewrite die Option QSA, schau sie dir mal an :wink: Die solltest du unbedingt angeben.
Und vor dem Umschreiben der Adresse solltest du orüfen ob die angegebene Datei existiert. Ja? Dann tu nichts.
Nein? Dann schreibe um.
Dafür gibt es RewriteCond {$REQUEST_FILENAME} -f oder so ähnlich.
Edit: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d

super, danke für deine hilfe -> funktioniert!

Lösung:

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^-].*).php/([^-].*)/([^-].*)$ index.php?seite=$1&action=$2&show=$3 [L,NC,QSA] RewriteRule ^([^-].*).php/([^-].*)$ index.php?seite=$1&action=$2 [L,NC,QSA] RewriteRule ^([^-].*).php$ index.php?seite=$1 [L,NC,QSA] </IfModule>

Hallo,

ähnliches Problem…hab jetzt nichts gefunden (google) und es ist schon spät, hoffe werde hier wieder fündig!

es geht jetzt um keine endung!
Beispiel: example.com/startseite

Leider wird bei meinem vorhanden Code jedes Verzeichnis ebenfalls als “seite=” definiert.
Beispiel: example.com/media/screen.jpg
ergibt: “seite=media”

ich dachte das übernimmt das “REQUEST_FILENAME” ?!

hier der Code:

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^-].*)/([^-].*)/([^-].*)$ index.php?seite=$1&action=$2&show=$3 [L,NC,QSA] RewriteRule ^([^-].*)/([^-].*)$ index.php?seite=$1&action=$2 [L,NC,QSA] RewriteRule ^([^-].*)$ index.php?seite=$1 [L,NC,QSA] </IfModule>

RewriteCond gilt immer nur für die nächste RewriteRule., also musst du das jedes Mal schreiben.

danke! wusste ich nicht :frowning: … jetzt klappts