2009-07-25 8 views
11

Ich schreibe ein CMS in PHP, und jetzt arbeite ich an der Themes-Funktion. Ich habe eine .htaccess-Datei:Apache mod_rewrite nur wenn Anfrage nicht mit '/ THEMES /' beginnt

RewriteEngine ON 
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)$ index.php?m=$1 
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)/(.+)$ index.php?m=$1&p=$2 

Wenn ich einen Wunsch haben:

/page 

es die View-Funktion der Klasse aufgerufen Seite laden muss.

Wenn ich eine Anfrage an:

/page/test 

es die View-Funktion der Klasse aufgerufen Seite laden muss, mit dem Parameter ‚Test‘. Diese alle Werke,

Aber ich will es die RewriteRules anwenden NUR, wenn die Anforderung macht NICHT Start mit:

/THEMES/ 

So kann ich CSS-Stile usw. anwenden ...

Kann mir jemand helfen? Vielen Dank.

Antwort

11

Sie könnten eine zusätzliche Regel verwenden, um das Umschreiben Prozess zu stoppen:

RewriteRule ^THEMES/ - [L] 
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)$ index.php?m=$1 
RewriteRule ^([a-zA-Z][a-zA-Z0-9]*)/(.+)$ index.php?m=$1&p=$2 
+3

Gut zu wissen, dass Sie umschreiben können - um eine gegebene URL/Muster zu erhalten – eyelidlessness

+0

Danke Mann. Das hat funktioniert. –

+0

Ich denke, die erste Regel sollte mit '^ /' – Behrang

22

Fügen Sie diese vor Ihren Rewrite-Regeln:

RewriteCond %{REQUEST_URI} !^/THEMES/ 
+0

Obwohl @Gumbo Lösung funktioniert, ist Ihr eleganter ... – NemoStein

0

Wenn Sie css/js-Dateien enthalten sein sollen, während mit URL- Umschreiben Verwenden Sie dieses Tag, um die Haupt-URL anzugeben.

< base href="http://www.your-web-site-adress.com" > 

Dann können Sie einfach Ihre css/js Dateien wie die folgenden:

< script src="/blabla.js" > 

es wird base href als Präfix hinzufügen.

1

Sie so etwas wie:

RewriteRule ^THEMES - [L] 

Das heißt: wenn die Anforderung mit THEMEN beginnt, ist es nur dienen.

Eine andere mögliche Lösung ist:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

Das heißt: Sie umschreiben nicht, wenn die Anforderung an eine vorhandene Datei (erste Zeile) oder ein Verzeichnis (zweite Zeile) aufgelöst wird.

Vielleicht sollten Sie die Dokumentationen lesen, ist wirklich gut geschrieben.

+0

Der zweite hat nicht funktioniert. –

+0

Sind Sie sicher, dass die angeforderte Datei/das gewünschte Verzeichnis existiert? Es scheint mir seltsam, es funktioniert auf meinem System. – sydarex

Verwandte Themen