mod_rewrite Negierte Ordner Weiterleitung
peter_lustig
- webhosting
Hallo,
ich versuche seit Tagen folgenden Fall zu lösen:
www.domain.de/seite/seite2/... es können beliebig viele Ordner folgen.
Nun wird ein Verzeichniss hinzugefügt:
www.domain.de/verzeichniss/seite/seite2/
mod_rewrite soll folgendes übernehmen:
Wenn "verzeichniss" nicht in der URL nach "www.domain.de" kommt, füge "verzeichniss" nach der URL "www.domain.de" hinzu. Sämtliche Aufrufe nach "verzeichniss" sollen mit übergeben werden.
Also aus www.domain.de/seite/seite2/... soll mit mod_rewrite dann www.domain.de/verzeichniss/seite/seite2/... werden.
Folgendes funktoniert nicht:
RewriteCond %{REQUEST_URI} !^/verzeichniss/(.*)$
RewriteRule ^(.*)$ /verzeichniss/$1
Oder
RedirectMatch (?!(verzeichniss))/(.*) verzeichniss/$1
Wahrscheinlich sind bei Ansätze komplett falsch :)
Falls jemand eine Idee hat wäre ich sehr dankbar!
Grüße und vielen Dank
hi,
Ich hatte mal:
RewriteRule !^quellen index_rewrite.php
irgendwann bentutzt. Das ging, alle Urls die _nicht_ mit "quellen" begannen, wurden rewritten. quellen/test.css zB. nicht.
http://forum.de.selfhtml.org/archiv/2008/6/t172446/#m1130461
Bei Dir steht ja viel mehr ...
mfg
tami
Danke!
Mit deinem Befehl werden alle URLs auf das eine Verzeichniss umgeleitet, aber die folgenden Aufrufe leider nicht.
Auch eine Erweiterung um RewriteRule !^(verzeichniss)/(.*) verzeichniss/$1 funktionieren leider nicht.
Mal den Link durchwühlen, Negierung scheint ja so gar nicht tirivial zu sein.
Grüße
hi,
also ich verstehe Deine Anmerkung nicht. Damals war das bei mir so, dass alle Anfragen, die _nicht_ "quellen/..." enthielten auf index.php umgeleitet wurden. du willst, dass alle Anfragen, die nicht verzeichniss enthalten, weitergeleitet werden (m.e. wird verzeichnis übrigens mit einem s geschrieben). Das müsste also passen.
mfg
tami
Hi,
es soll nicht statisch auf eine Datei oder Ordner weitergeleitet werden. Es soll im prinzip der komplette Pfad um "verzeichnis" erweitert werden.
Aus www.domain.de/seite1/seite2/seite3/ sollte -> www.domain.de/verzeichis/seite1/seite2/seite3/ werden.
Dein Befehel macht aus www.domain.de/seite1/seite2/seite3/ -> www.domain.de/verzeichnis/
Grüße
hi,
Hi,
es soll nicht statisch auf eine Datei oder Ordner weitergeleitet werden. Es soll im prinzip der komplette Pfad um "verzeichnis" erweitert werden.
Aus www.domain.de/seite1/seite2/seite3/ sollte -> www.domain.de/verzeichis/seite1/seite2/seite3/ werden.
Dein Befehel macht aus www.domain.de/seite1/seite2/seite3/ -> www.domain.de/verzeichnis/
ja, aber den rest kannst du doch mit (.*) "einfangen" und mit $1 oder wie das geht hinten wieder anhängen ...;
philosophie der kleinen schritte:
1. überhaupt erstmal alle anfragen, die man will "erwischen"
2. wenn man 1. hat, schauen, wie die weiterleitung dann korrekt geht ...;
mfg
tami
Hi,
das hatte ich, wie oben beschrieben, bereits probiert ... auch mit diversen Varianten von Klammern usw.
Leider keinen Erfolg.
Grüße
Tach!
Also aus www.domain.de/seite/seite2/... soll mit mod_rewrite dann www.domain.de/verzeichniss/seite/seite2/... werden.
Bitte keine (potentiell) real existierenden Adressen verwenden. Es gibt extra Beispiel-Domains, die nicht mit ersteren kollidieren.
Folgendes funktoniert nicht:
RewriteCond %{REQUEST_URI} !^/verzeichniss/(.*)$
RewriteRule ^(.*)$ /verzeichniss/$1
Beim Recherhieren fand ich: http://stackoverflow.com/questions/1747951/using-mod-rewrite-to-add-a-directory
RedirectMatch (?!(verzeichniss))/(.*) verzeichniss/$1
Das ist eine negative Look-Ahead-Assertion. Die schaut nicht, was links steht, sondern nach rechts. Du wolltest eine negative Look-Behind-Assertion, die mit (?<! beginnt. (Damit gab es bei meinen Versuchen jedoch eine Endlosschleife, die ich mir nicht erklären konnte und auch nicht wegbekam.)
dedlfix.
hi,
http://stackoverflow.com/questions/6105015/mod-rewrite-400-bad-request-problem
demnach
RewriteRule (?!^test?$)(.*) test/index.php?u=%{REQUEST_URI}&dollar1=$1 [L,QSA,NC,NE]
bringt mit
http://example.com/tes/aaa
und einem var_dump($_GET) in der test/index.php:
array(2) { ["u"]=> string(8) "/tes/aaa" ["dollar1"]=> string(7) "tes/aaa" }
hingegen
RewriteRule (?!^test?$)(.*) test/$1 [L,QSA,NC,NE]
bringt einen internal server error ...
mfg
tami
hi,
RewriteRule !^test(.*) /test%{REQUEST_URI} [L,QSA,NC,NE]
Der Trainling-Slash ...;
mfg
tami
hi,
hi,
RewriteRule !^test(.*) /test%{REQUEST_URI} [L,QSA,NC,NE]
Der Trainling-Slash ...;
Die Klammer brauchts ja nicht:
RewriteRule !^test /test%{REQUEST_URI} [L,QSA,NC,NE]
mfg
tami