2012-12-20 16 views
10

Ho un CMS installato alla radice del mio dominio con il seguente .htaccess:.htaccess reindirizzare tutte requestes a index.php tranne sottocartella

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

Questo si prende cura di URL amichevoli per reindirizzare tutto per index.php . Il mio problema è che ho una sottocartella che ha un altro cms. Ho bisogno che le richieste per la sottocartella vengano reindirizzate nella cartella corretta invece index.php.

Ho provato quanto segue ma non sembra funzionare

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(sub-folder) 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

chiunque può aiutare?

Grazie

risposta

15

Si dovrebbe verificare correttamente se URI della richiesta corrispondono sottocartella

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !/subfolder 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

In ogni caso, le prime due RewriteCond significa: se il nome di richiesta file non è un file o una directory. Ciò significa che se il file a cui si fa riferimento si trova nella sottocartella e la sottocartella si trova nella propria docroot, non è necessario fare nulla.

Se ancora non funziona, consentendo il registro potrebbe aiutare:

RewriteLog "/web/logs/mywebsite.rewrite.log" 
RewriteLogLevel 9 
RewriteEngine On 

evitare questo registro nella produzione

Utilizzando un valore alto per il livello rallenta il server Apache in modo drammatico! Utilizzare il file di registrazione di riscrittura a un livello superiore a 2 solo per il debug!

+0

In qualche modo questo non funziona:/ – jribeiro

+0

Il mio male. Funzionando bene – jribeiro

Problemi correlati