.htaccess-Richtlinien * nicht * bestimmte URLs umleiten

stimmen
19

In einer Anwendung , die auf stark setzt .htaccessRewriteRules für seine PrettyURLs (CakePHP in meinem Fall), wie kann ich bestimmte Verzeichnisse von diesem Umschreiben ausschließen korrekt Richtlinien einzurichten? Das ist:

/appRoot/.htaccess
         app/
         static/

Standardmäßig jede Anforderung /appRoot/*neu geschrieben wird durch abgeholt werden app/webroot/index.php, wo sie analysiert und entsprechende Controller - Aktionen aufgerufen werden. Dies wird durch diese Richtlinien erfolgt in .htaccess:

RewriteBase /appRoot

RewriteRule ^$ app/webroot/     [L]
RewriteRule (.*) app/webroot/$1 [L]

Ich möchte nun einige Verzeichnisse wie statisch / von diesem Umschreiben auszuschließen. Ich habe versucht , mit dieser vor dem Kuchen RewriteRules:

RewriteCond $1 ^(static|otherDir).*$ [NC]
RewriteRule (.*) - [L]

Es funktioniert in so weit , dass Anfragen nicht mehr neu geschrieben, aber jetzt alle Anfragen übersprungen werden, auch legitime Kuchen - Anfragen , die nicht passen sollten ^(static|otherDir).*$.

Ich habe versucht, verschiedene Variationen dieser Regeln kann aber nicht bekommen es so, wie ich will zu arbeiten.

Veröffentlicht am 06/08/2008 um 09:15
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
6

Und die richtige Antwort iiiiis ...

RewriteRule   ^(a|bunch|of|old|directories).* - [NC,L]

# all other requests will be forwarded to Cake
RewriteRule   ^$   app/webroot/   [L]
RewriteRule   (.*) app/webroot/$1 [L]

Ich verstehe immer noch nicht, warum im Stammverzeichnis der Datei index.php zunächst auch mit diesen Richtlinien an Ort und Stelle genannt wurde. Es befindet sich nun in

/appRoot/app/views/pages/home.ctp

und auch durch Kuchen verarbeitet. In diesen Ort jetzt, nehme ich das so gut funktioniert hätte (leicht veränderte Version von Mike Vorschlag, nicht getestet):

RewriteCond $1      !^(a|bunch|of|old|directories).*$ [NC]
RewriteRule ^(.*)$  app/webroot/$1 [L]
Beantwortet am 07/08/2008 um 07:09
quelle vom benutzer

stimmen
1

Könnten Sie den Zustand die folgenden Regeln nicht gelten, aber mit Negation, wie in (mit einigen Variationen davon, ich bin nicht so gut an .htaccess Regeln zu erinnern, so könnten die Fahnen falsch sein):

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/ [L]

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/$1 [L]
Beantwortet am 06/08/2008 um 09:26
quelle vom benutzer

stimmen
1

Entfernen Sie die [L] aus den vorherigen Regeln:

RewriteBase /appRoot

RewriteRule ^$ app/webroot/    
RewriteRule (.*) app/webroot/$1

[L] bedeutet „Stoppen Sie das Umschreiben hier ab und lassen Sie keine weiteren Umschreiben Regeln nicht gelten.“

Beantwortet am 06/08/2008 um 09:19
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more