2012-12-20 14 views
10

mam CMS zainstalowany w katalogu głównym mojej domeny z następującym htaccess:.htaccess przekierować wszystkie requestes do index.php z wyjątkiem podkatalogu

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

ta dba o przyjazne adresy URL przekierować wszystko do index.php . Mój problem polega na tym, że mam podfolder, który ma inne cms. Potrzebuję żądań do podkatalogu, aby został przekierowany do właściwego folderu zamiast index.php.

Próbowałem następujących ale nie wydają się działać

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

Czy ktoś może pomóc?

Dzięki

Odpowiedz

15

należy sprawdzić, czy prawidłowo URI żądania dopasować podfolder

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

W każdym razie dwa pierwsze RewriteCond oznacza: jeśli nazwa prośba plik nie jest plikiem lub katalogiem. Oznacza to, że jeśli plik, do którego się odwołujesz, znajduje się w podfolderze, a podkatalog znajduje się w twoim docroot, nie musisz nic robić.

Jeśli nadal nie będzie działać, umożliwiając dziennik mógłby pomóc:

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

uniknąć tego dziennika w produkcji

Korzystanie wysoką wartość dla poziomu spowolni serwera Apache dramatycznie! Użyj pliku dziennika przepisywania na poziomie wyższym niż 2 tylko do debugowania!

+0

Jakoś to nie działa:/ – jribeiro

+0

Mój zły. Dobrze pracować – jribeiro