[Mod Rewrite] Ordner simulieren

B

ByeBye 242513

Hallo Community,

regulärer Ausdrücke und ich werden wohl nie Freunde... ich möchte gerne Ordner wie folgt simulieren:
Code:
www.domain.de/index.php?p=mein-konto >> www.domain.de/mein-konto/
www.domain.de/index.php?p=passwort_vergessen >> www.domain.de/mein-konto/passwort_vergessen.html
www.domain.de/index.php?p=passwort_vergessen&mail=x@x.de&key=xxx >> www.domain.de/mein-konto/passwort_vergessen.html|mail=x@x.de|key=xxx
usw.

Wenn der Besucher/Suchmaschine direkt versucht auf eine PHP-Seite zuzugreifen (Bsp. www.domain.de/index.php?p=mein-konto) soll er umgeleitet werden auf www.domain.de/mein-konto/ Dies soll für Sumaschinen mittels 301 auch erkennbar sein (damit kein doppelter Content erzeugt wird).

Wenn der Besucher/Suchmaschine auf eine Seite zugreifen möchte die nicht im .htaccess-Dokument steht, soll eine individuelle Fehlerseite erscheinen. Auch in so einem Fall: www.domain.de/mein-konto/index.html (denn der korrekte Link lautet: www.domain.de/mein-konto/)

Vielen Dank!
 
Zuletzt bearbeitet von einem Moderator:
Von der dritten Zeile in deinem Auschnitt kann man nur abraten. Welchen Vorteil soll das bringen, außer das du eine allgemeine Konvention im WWW einfach mal übern Haufen wirfst? GET Parameter werden eigentlich auf jeder Seite verwendet.

Ansonsten müsste das ungefähr so gehen:
Code:
RewriteRule ^([^/]+) /index.php?p=$1

Du solltest allerdings noch Dateien und Verzeichnisse davon auslesen, da du wahrscheinlich auf Verzeichnisse wie /css oder /js noch statisch zugreifen willst. das ginge dann so:
Code:
RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

Achja, wenn du das statisch machen willst:
Code:
RewriteRule ^/foopage /index.php?p=foopage
 
Das hilft mir leider noch nicht viel weiter.

Ich bräuchte eine Regel die optionale Parameter zulässt und eine Umleitung auf .html erfolgt, auch wenn versucht wird auf .php zugegriffen wird.

Bsp:
aus www.domain.de/index.php?p=mein-konto wird www.domain.de/mein-konto/
aus www.domain.de/index.php?p=passwort_vergessen&[A-Za-z_-0-9]=[A-Za-z_-0-9]&[A-Za-z_-0-9]=[A-Za-z_-0-9] wird www.domain.de/mein-konto/passwort_vergessen.html&var1=var2&var3=var4
Die Variablen in Rot sind optionale Parameter, können existieren müssen aber nicht.
Der Linkaufbau www.domain.de/index.php?p=???? soll nicht direkt aufrufbar sein und immer sauber umleiten auf eine .html-Seite.
 
Leider führt mein bisheriger Code nicht zum Teilerfolg. Wenn der Link www.domain.de/mein-konto/passwort_vergessen.html&email=xx&key=xx aufgerufen wird, wird der Besucher auf www.domain.de/mein-konto/ weitergeleitet.

Code:
RewriteEngine On
RewriteBase /
RewriteRule ^mein-konto/$ index.php?p=mein-konto [L]
RewriteRule ^mein-konto/([^/]*)=([^/]*)&([^/]*)=([^/]*)$ index.php?p=mein-konto&$1=$2&$3=$4 [L]
RewriteRule ^mein-konto/passwort_vergessen.html$ index.php?p=resetpw [L]
RewriteRule ^mein-konto/passwort_vergessen.html&([^/]*)=([^/]*)&([^/]*)=([^/]*)$ index.php?p=resetpw&$1=$2&$3=$4 [L]
 
Zurück