[MOD_REWRITE] Trennzeichen "/" verwenden

muhkuh

Erfahrenes Mitglied
Huhuli,

Hab seit einiger Zeit für mich die Formatierung der URL mittels mod_rewrite entdeckt. Auf jeden Fall eine super Sache! Bisher hab ich meine Werte mit nem Unterstrich "_" oder nem Komma "," voneinander getrennt. Wenn ich das Trennzeichen Slash "/" verwendet habe, hatte ich bisher immer das Problem, dass meine Scripte in das Verzeichnis gesprungen sind und die URL nicht mittels mod_rewrite aufgelöst worden sind.

Ein Beispiel:
Inhalt der .htaccess
Code:
RewriteEngine On
# a
RewriteRule ^([a-z]+)$ index.php?site=$1 [L]
# a/a
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?site=$1&action=$2[L]
# a/a/0
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)$ index.php?site=$1&action=$2&id=$3 [L]

Link:
HTML:
www.domain.de/artikel/sonstiges/123

Dabei springt er jetzt in das Verzeichnis "/artikel/sonstiges/123" und sucht nach der Datei "index.html" o.ä., obwohl er ja eigentlich nach index.php?site=artikel&action=sonstiges&id=123 auflösen sollte.

Muss man dafür irgendwas auf dem Webserver umstellen oder fehlt dazu in meiner .htaccess einfach nur nen Befehl. Die Methode ist die gleiche wie z. B. bei drweb.de oder amazon.de
 
Der Schrägstrich wird auch vom „mod_rewrite“-Modul als Verzeichnisbegrenzer behandelt. Daher wird die Anfrage „/artikel/sonstiges/123“ auch zu „/artikel/sonstiges/index.php?site=artikel&action=sonstiges&id=123“ umgeschrieben (das „R“-Flag würde das zeigen), da es sich bei dem Ersatz-URL um eine relative Pfadangabe handelt. Daher solltest du eine absolute Pfadangabe nutzen, etwa:
Code:
RewriteEngine On
# a
RewriteRule ^([a-z]+)$ /index.php?site=$1 [L]
# a/a
RewriteRule ^([a-z]+)/([a-z]+)$ /index.php?site=$1&action=$2[L]
# a/a/0
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+)$ /index.php?site=$1&action=$2&id=$3 [L]
 
Zurück