htaccess nur bestimmte Dateien rewriten

bitmuncher

bitmuncher

Foren Gott
Ich habe hier ein kleines Problem mit dem Rewriten von URLs via htaccess.

Ich habe zwei Rewrite-Regeln, die ansich auch funktionieren:

Code:
RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI}
RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI}

Zusätzlich soll aber alles andere auf index.php umgeleitet werden. Also dachte ich, dass ich einfach an's Ende ein

Code:
RewriteRule .* index.php

schreiben kann. Leider greifen dann aber die ersten beiden Regeln nicht mehr. Auch

Code:
RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI}
RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI}
RewriteCond %{REQUEST_FILENAME} !^js/w/ [OR]
RewriteCond %{REQUEST_FILENAME} !^js/tokstaIm/
RewriteRule .* index.php
funktioniert nicht.

Was kann ich also tun, damit alles auf index.php umgeleitet wird, aber die anderen beiden Regeln trotzdem greifen?
 
Ich habe ehrlich gesagt keine Lust nachzugucken, aber ich machs trotzdem mal:
The RewriteRule directive is the real rewriting workhorse. The directive can occur more than once, with each instance defining a single rewrite rule. The order in which these rules are defined is important - this is the order in which they will be applied at run-time.
d.h. die dritte Regel trifft auf alles zu, was vorher von den ersten beiden umgeleitet wurde, wird ebenso wie alles andere auf index.php umgeleitet. Lies dir einfach die Doku von RewriteRule durch, du wirst einfach ein paar der Flags verwenden müssen. Ein Beispiel ist folgendes:
Code:
RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI} [S=2]
RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI} [S=1]
RewriteRule .* index.php

oder 

RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI} [S=1]
RewriteRule .* index.php

RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI} [S=1]
RewriteRule .* index.php

EDIT: Getestet ist das natürlich nicht...
 
Damit funktionierte es auch nicht. Die Lösung sieht so aus:

Code:
RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI}
RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI}

RewriteCond %{REQUEST_FILENAME} !(.*)js/w
RewriteCond %{REQUEST_FILENAME} !(.*)js/tokstaIm
RewriteRule .* index.php
 
vielleicht geht's ja auch so:

Code:
RewriteRule .* index.php

RewriteRule ^js/w/ _direct/w.php%{REQUEST_URI}
RewriteRule ^js/tokstaIm/ _direct/tokstaim.php%{REQUEST_URI}

also einfach deine dritte rewriterule an den anfang und von den andern dann teilweise überschreiben lassen

kA obs funktioniert...
 
Hatten wir auch schon probiert. Funktionierte so auch nicht. Aber jetzt geht's ja. :)

Server-Last wurde mit diesen Rewrites und dem Auslagern der Skripte aus dem Zend-Framework auf ca. 1/4 gesenkt. Ziel erreicht. :)
 
Hmm, merkwürdig, ich kann mir nicht vorstellen warum das dann nicht lief.. Schade dass ich nicht mehr helfen konnte...
 
Zurück
Oben