Mod_Rewrite Ordner antäuschen

Hallo HTML’ler,

ich versuche gerade, mit mod_rewrite Ordner anzutäuschen!

Folgenden Versuch habe ich gestartet:

RewriteEngine on RewriteRule (.*)/$ index.php?page=$1

Das funktioniert tadellos, allerdings muss ich es folgendermaßen aufrufen: domain.de/name/. Ich möchte aber, dass ich es zusätzlich noch so aufrufen kann: domain.de/name. Das funktioniert allerdings nicht, wenn ich noch eine Rule hinzufüge und das / weglasse.

Ich hoffe mir kann jemand helfen!

Danke,
Max

Machs doch so:

RewriteEngine on RewriteRule (.*)/$ index.php?page=$1 [L] RewriteRule (.*)$ index.php?page=$1 [L]

Bedeutet:
Wenn die erste Regel mit „/“ am Ende greift, nimm diese.
Wenn die erste Regel mit „/“ am Ende nicht greift, schau ob die zweite zutrifft.

Alternative: nur die zweite Zeile nehmen. Dann musst Du allerdings im php bei der Variable „page“ prüfen, ob ein „/“ am Ende ist und dies dort ggfs. aus der Variable entfernen.

Es funktioniert irgendwie garnicht ohne dem /.

Wenn ich nämlich nur „RewriteEngine on
RewriteRule (.*)$ index.php?page=$1“ schreibe, dann funktioniert es auch nicht wenn domain.de/news aufrufe.

Deine Lösung hat auch nicht funktioniert. Und da die Zeile ja nicht funktioniert, kann ich das ja auch nicht in PHP überprüfen.

Das wundert mich jetzt aber schon etwas. Gab es eine Fehlermeldung?

Indirekt ja, es wird die Startseite eingebunden (Sie wird eingebunden wenn ?page leer ist oder wenn das was mit page übergeben wurde nicht existiert). Dabei wurde die CSS-Datei nicht geladen.

Klar, mit der zweiten Zeile wird ja auch alles umgelenkt. Daher fehlt die CSS-Datei, ebenso wie vermutlich Bilder.

Demzufolge müsstest Du noch die Bedingung ergänzen, dass die Regel bei existierenden Dateien nicht greift. Also:

RewriteCond %{REQUEST_FILENAME} !-f

Super. Es funktioniert jetzt in Kombination mit PHP.

Für alle die das selbe Problem haben, die fertige .htaccess:

[CODE]RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.php?perm_link=$1

[/CODE]

Dankeschön!

Grüße,
Max

Das ganze kann man noch ein wenig verbessern:

RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]