Martin M.: mod_rewrite

Beitrag lesen

hallo!

seit einigen Stunden jagt mich der Logikteufel und ich weiß nicht, wie ich weiter vorgehen soll. Am ende hab ich sogar nurnoch versucht zu raten und einen glückstreffer zu erzielen. Hat auch nicht geholfen :/ ^^

Zu der ausgangssituation: Meine index.php Datei liegt von der URL aus in einem verzeichnis und dort wiederrum in einem verzeichnis. Etwa so:

www.examplegiv.en/ordner1/ordner2/index.php

Mittels mod_rewrite möchte ich nun von diesem ordner ausgehend, ordner bzw. seite abfragen. Also:

www.examplegiv.en/ordner1/ordner2/test/ichhier (ohne dateiendung, wie ein verzeichnis)

soll ergeben $_GET['ordner'] => 'test' und $_GET['seite'] => 'ichhier', ordner1 und ordner2 sind zu ignorieren. Gleichzeitig dürfen aber auch nicht beliebig viele ordner eingeführt werden, deswegen brauche ich ein festes suchmuster mit anfang und ende.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([-äöü\w]+)/([-äöü\w]+)/?$ /ordner1/ordner2/index.php?ordner=$1&seite=$2 [QSA]
RewriteRule ^([-äöü\w]+)/?$ /ordner1/ordner2/index.php?ordner=.&seite=$1 [QSA]
RewriteRule ^$ /ordner1/ordner2/index.php?ordner=.&seite=index [QSA]

1. Wenn eine der Bedingungen zutrifft, werden die nachfolgenden nicht mehr ausgeführt.

2. Es wird ein ordner gesucht oder eine seite, die englische zeichen, den bindestrich und äöü enthalten dürfen.

3. Ich wende dieses Suchmuster an und spreche die index Datei an. Ich habe es mal mit einem absoluten pfad gelöst.

4. Die erste Seite /ordner1/ordner2/ wo die index.php ist, funktioniert wie gewünscht. ich erhalte als GET Parameter den Ordner und die Seite "index" (3 rewrite rule)

5. Möchte ich jetzt andere seiten erstellen, nach dem muster www.examplegiv.en/ordner1/ordner2/seitenname, funktioniert es nicht mehr. Er kann die aufgeforderte seite nicht finden, obwohl sie ja in RewriteRule 2 reinpasst.

6. Ich bin verwirrt, warum er die daten nicht einfach an die index.php schickt. Also erstelle ich einen ordner namens "seitenname" und gebe da eine index.php rein

7. Die index.php von "seitenname" wird aufgerufen, wenn ich obigen link aufrufe. Ganz normal, da die RewriteCond ja nicht mehr zutrifft.

8. Ich bemerke, dass die parameter übergeben wurden, oben in der url zeile. wie gewünscht ohne ordner1 und ordner2: www.examplegiv.en/ordner1/ordner2/seitenname?ordner=.&seite=seitenname

9. Ich wunder mich, wie die dahin kommen. Im Prinzip ist es ja korrekt, nur nicht an der für mich  richtigen stelle. Ich hab doch kein R flag gesetzt, sondern die daten an die mit absoluter pfadangabe gegebene Datei index.php nach /ordner1/ordner2/ gesendet, nicht im ordner "seitenname".

Das ist hier jetzt nicht die Rateversion von mir, sondern die Version, wo es für mich am logischsten ist, dass es richtig sein müsste. Aber ich verstehe den Prozess dahinter nicht, den er dabei vornimmt und mir ein solches ergebnis liefert.

irgendwelche guten ideen? Außer pc verkaufen und politiker werden?
euer Martin