mod_rewrite: Endlosschleife für N-Variablen (URL in Ordnerstruktur)

Bomber

Erfahrenes Mitglied
Hi!

Ich habe ein Problem: Ich habe eine RegEx für die Rewrite-Mod des Apache und möchte sie für meine Bedürfnisse anpassen.

Die Form der Url soll folgende sein: http://localhost/cms/news/varname1/varwert1/varname2/varwert2 usw., die Anzahl der Variablen muss also variabel :)D) sein. Die htaccess Datei soll im Verzeichnis http://localhost/cms/ liegen und der Zugriff auf eben jenes Verzeichnis soll wie folgt umgesetzt werden: http://localhost/cms/index.php?page=news&varname1=varwert1&varname2=varwert2 usw..

Ergo: Die Variable page wird IMMER mit übergeben, allerdings soll sie nicht wie ein Teil der "variablen" Variablen behandelt, sondern automatisch als Variable "page" an die URL angehängt werden, sollten dann noch weitere Variablen-Paare kommen werden sie halt nach dem bekannten Muster hinten angehängt.

So das habe ich bis jetzt, eine Umwandlung von http://www.domain.tld/index/page/news/varname1/varwert1/ in http://www.domain.tld/index/index.php?page=news&varname1=varwert1, zumindest glaube ich, das es das ist :D

Code:
RewriteEngine On
RewriteRule ^index/([^/]+)/([^/]+)(.*)$ /index$3?$1=$2 [QSA,N]
RewriteRule ^index/?$ /index.php [QSA,L]

Wichtig ist mir auch die Ordnerstruktur mit dem Ordner CMS, denn deren Prinzip ist mir bisher völlig schleierhaft geblieben. Bei den ersten Versuchen mit mod_rewrite landete ich Grundsätzlich im höchstgelegenen Ordner auf dem Server. Keine Ahnung wieso.

Ich hoffe jemand kann sich meinen Problemen annehmen, auch wenn sie vielleicht nicht ganz einfach sind. Ich danke im vorraus schonmal für eure Antworten.

mfg Bomber
 
Probier mal Folgendes:
Code:
RewriteEngine	On
RewriteBase	/
RewriteRule	^index/?$					index.php		[QSA,L]
RewriteRule	^index/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$	index.php?$1=$2&$3=$4	[QSA,L]
 
Hi,

ich glaube, du hast meine Probleme nicht ganz verstanden. :(
Das mit der page Variable am Anfang des GET Anhangs fehlt ja noch und das mit dem ^/index am Anfang der Rule kann ich auch nicht so recht zuordnen.

VIelen Dank trotzdem, ich hoffe du hilfst mir nochmal, denn ohne euch sitz ich mit meiner beschränkten Logik ziemlich auf dem Trockenen.

Bomber
 
Wollte nochmal das Problem, dass ich in meinem Text zuletzt angesprochen habe darstellen:

Und zwar habe ich in meinem Hauptverzeichnis einen Ordner "cms", in dem befindet sich eine index.php und eine .htaccess Datei mit folgendem Inhalt:

Code:
RewriteEngine On

RewriteRule ^index.html$ /index.php [L]

Wenn ich nun aber "http://localhost/cms/index.html" aufrufe bekomme ich eine 404 Meldung das /index.php nicht gefunden wurde.. Allerdings sucht er im Hauptverzeichnis nach und nicht in "/cms", denn wenn ich das so ändere:

Code:
RewriteEngine On

RewriteRule ^index.html$ /cms/index.php [L]

dann findet er die index.php.
Aber das ist doch nicht richtig so, oder?

mfg Bomber
 
Wenn du möchtest, dass Anfrage des Schemas /index.html serverintern auf /cms/index.php umgeschrieben werden, dann schon.
 
Aha?
Aber die index.html die ich damit anspreche liegt doch in /cms, genauso wie die .htaccess Datei? Ergo wenn ich /cms/index.html anspreche sollte ich dann doch auch in /cms/index.php landen und nicht in /index.php?

Oder sehe ich da was falsch?
 
Ah! Habs verstanden

wenn man das "/index.php" durch ein "index.php" ersetzt, dann gehts. Bleiben nur noch die anderen Fragen zu klären :D Aber es wird, ich blicke schon etwas mehr durch als gestern :)
 

Neue Beiträge

Zurück