htaccess перенаправляет все запросы на индексацию.php кроме вложенной папки


У меня есть CMS, установленная в корне моего домена со следующим htaccess:

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

Это заботится о дружественных URL-адресах, чтобы перенаправить все в индекс.РНР. Моя проблема в том, что у меня есть подпапка, в которой есть другая cms. Мне нужно, чтобы запросы к подпапке перенаправлялись в соответствующую папку вместо индекса.РНР.

Я попробовал следующее, Но это, кажется, не работает

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

Может ли кто-нибудь помочь?

Спасибо

1   10   2012-12-20 05:39:58

1 ответ:

Вы должны правильно проверить, соответствует ли uri запроса вложенной папке

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

В любом случае, первые две секунды перезаписи означают: если имя файла запроса не является файлом или каталогом. Это означает, что если файл, на который вы ссылаетесь, находится в подпапке, а подпапка-в вашем корневом каталоге, вам ничего не нужно делать.

Если все еще не работает, включение журнала может помочь вам:

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

Избегайте этого журнала в производстве

, используя высокое значение на уровне резко замедлите работу вашего сервера Apache! Используйте файл журнала перезаписи на уровне больше 2 только для отладки!