2009-07-25 13 views
11

Sto scrivendo un CMS in PHP, e ora sto lavorando alla funzione temi. Ho un file .htaccess:Apache mod_rewrite solo se la richiesta non inizia con '/ THEMES /'

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 

Se ho una richiesta a:

/page 

si deve caricare la funzione di visualizzazione della pagina classe chiamata.

Se ho una richiesta a:

/page/test 

si deve caricare la funzione di visualizzazione della pagina classe chiamata, con il parametro 'test'. Questa tutte le opere,

Ma io vorrei applicare le RewriteRules SOLO se la richiesta non NON inizio con:

/THEMES/ 

Così posso applicare stili CSS ecc ...

Qualcuno può aiutarmi? Grazie.

risposta

11

Si potrebbe utilizzare una regola aggiuntiva per arrestare il processo di riscrittura:

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

Buono a sapersi è possibile riscrivere a - per conservare un determinato URL/modello – eyelidlessness

+0

Grazie amico. Questo ha funzionato. –

+0

Penso che la prima regola dovrebbe iniziare con '^ /' – Behrang

22

Aggiungi questo prima le regole di riscrittura:

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

Sebbene la soluzione @Gumbo funzioni, la tua è più elegante ... – NemoStein

0

Se si desidera includere i file css/js mentre usando url- riscrittura usa quel tag per specificare l'url principale.

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

allora si può facilmente includere i file css/js così:

< script src="/blabla.js" > 

si aggiungerà href base come prefisso.

1

fare qualcosa di simile:

RewriteRule ^THEMES - [L] 

Ciò significa: se la richiesta inizia con i temi, solo servire.

Un'altra possibile soluzione è:

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

Ciò significa: non riscrivere se la richiesta si risolve in un file esistente (prima riga) o una directory (seconda linea).

Forse dovresti leggere la documentazione, è davvero ben scritto.

+0

La seconda non ha funzionato. –

+0

Sei sicuro che il file/directory richiesto esiste? Mi sembra strano, funziona sul mio sistema. – sydarex

Problemi correlati