Problem mit htaccess-Syntax

DeluXe

Funkjoker
Abend zusammen,

also irgendwie schein ich zu dumm zu sein, mir selber eine richtige RewriteRule zu basteln, denn mein Vorhaben ist meiner Ansicht nach ein Klacks. ;)

Folgendes Beispiel:
Code:
http://domain.tld/dir1/dir2/dir3/?option1=bla&option2=blubb
soll in folgendes "umgewandelt" werden:
Code:
http://domain.tld/?option1=bla&option2=blubb&path=/dir1/dir2/dir3/

Also der Pfad hinter der Domain soll als Argument angehängt werden.

Ich hoffe mir kann da jemand unter die Arme greifen. :)

Danke schon mal und Byebyez.
 
Also ein bisschen weiter bin ich schon mal. :)

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.*)/?(.*)/$
RewriteRule ^(.*) /index.php?path=%1&%2  [L]

Das übergibt mir nun schon mal den Pfad richtig, nur fehlen nun die Argumente, welche in "%2" stehen sollten.
Ich hab das Gefühl, dass das Fragezeichen in der RewriteCond nicht ganz passt. :confused:
 
Das Fragezeichen ist bei regulären Audrücken ein Metazeichen (genauer gesagt ein Quantor) und besagt, dass das vorhergehende Zeichen beziehungsweise der vorhergehende Ausdruck ein oder keinmal vorkommen darf. In deinem Fall heißt das also, dass der Schrägstrich in dem angefragten URI ein oder keinmal vorkommen darf.

Ich würde wohl Folgendes verwenden:
Code:
RewriteCond   %{REQUEST_FILENAME}   !-d
RewriteCond   %{REQUEST_FILRNAME}   !-f
RewriteRule   .*   /index.php?path=%{REQUEST_URI}   [L,QSA]
Damit wird jede Anfrage abgefangen und geprüft, ob sie auf ein existierendes Verzeichnis oder eine existierende Datei abgebildet werden kann. Ist dies nicht der Fall, wird die Anfrage intern umgeschrieben und der angefragte URI als Query-String-Argument angehängt. Das „QSA“-Flag sorgt schließlich dafür, dass der ursprüngliche Query String ebenfalls angehängt wird („query string append“).
 
Ach nö, erst versuche ich eine halbe Ewigkeit eine Lösung zu finden, und nun, als ich deswegen einen Thread erstellt habe, finde ich sie.

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*) /index.php?path=%1&%{QUERY_STRING}  [L]
Sollte doch so passen, oder? Zumindest funktioniert es. :)

Danke dir trotzdem.

MfG - Del
 
Das Fragezeichen ist bei regulären Audrücken ein Metazeichen (genauer gesagt ein Quantor) und besagt, dass das vorhergehende Zeichen beziehungsweise der vorhergehende Ausdruck ein oder keinmal vorkommen darf. In deinem Fall heißt das also, dass der Schrägstrich in dem angefragten URI ein oder keinmal vorkommen darf.
Jetzt wundert mich natürlich nichts mehr, klar dass das nicht funktionieren konnte.

[...]ob sie auf ein existierendes Verzeichnis oder eine existierende Datei abgebildet werden kann[...]
Ob ein Ordner mit dem selben Namen existiert oder nicht ist in diesem Fall vollkommen irrelevant, da die Ordnerstruktur rein gar nichts mit den übergebenen Argumenten zu tun hat, somit kann ich das getrost draussen lassen. Gleiches gilt für Dateien.

Es gibt nur lediglich eine einzige Ausnahme (Für CSS-Dateien, Bilder, etc.).
Dieser Ordner kann mit all seinen Unterordnern komplett freigegeben werden, mal eben schauen wie das dann auszusehen hat, das war doch nur ein Einzeiler, nicht? ;)

Mal ganz nebenbei: Gibt es irgendwo mal eine ordentliche Erklärung dieser ganzen Anghängsel? Weil ich bei dir gerade das "QSA" stehen sehe.
 
Ob ein Ordner mit dem selben Namen existiert oder nicht ist in diesem Fall vollkommen irrelevant, da die Ordnerstruktur rein gar nichts mit den übergebenen Argumenten zu tun hat, somit kann ich das getrost draussen lassen. Gleiches gilt für Dateien.
Das ist es nicht ganz, denn wird „/index.php“ angefragt, landet man ohne diese Prüfung in einer Endlosschleife.

Gibt es irgendwo mal eine ordentliche Erklärung dieser ganzen Anghängsel?
In solchen Fällen verweise ich gerne auf das „mod_rewrite“-Handbuch.
 
Das ist es nicht ganz, denn wird „/index.php“ angefragt, landet man ohne diese Prüfung in einer Endlosschleife.
Eine Endlosschleife war zwar nicht entstanden, jedoch war "path" logischer Weise leer, da kein / zu finden war. Was mir auch eben aufgefallen ist: Rufe ich "domain.tld/diese_datei_gibts_nich.php" auf, kommt ein 404er, also auch nicht unbedingt praktisch. ;)

Mit deiner Variante da oben klappt das da schon um Einiges besser.
Nun denn, ich knüpf mir nun mal das Manual vor, bis später. ^^
 

Neue Beiträge

Zurück