2011-01-18 3 views
2

У меня есть следующие правила .htaccess. К сожалению, это не работает из-за последнего правила (все работает отлично). Зачем?.htaccess Перепишите все

Options -Indexes  
RewriteEngine On  
RewriteRule ^(cdn) - [L]  
RewriteRule ^admin/(.*)$ backend_0.0.1/index.php/$1 [QSA,L]  
RewriteRule ^css/(.*)$ frontend_0.0.1/css.php/$1 [NC,QSA,E=no-gzip:1,L]  
RewriteRule ^js/(.*)$ frontend_0.0.1/js.php/$1 [NC,QSA,E=no-gzip:1,L]  
RewriteRule ^(.*)$ frontend_0.0.1/index.php/$1 [QSA,L] 

Если я заменить последнюю строку на:

RewriteRule ^(.*)$ frontend_0.0.1/index.php?q=$1 [QSA,L] 

Затем он внезапно начинает работать, но предыдущие правила пропускаются и только применяется это последнее правило. Но мне нужны правила, чтобы прекратить переписывание после первой матчи.

+0

The [L] предотвратит дальнейшие матчи. Поэтому, если другие правила «пропущены», это потому, что они не совпадают. –

+0

Но они совпадают в первом примере – vadim

+0

Затем включите 'RewriteLog' и посмотрите, что происходит: RewriteLog" /var/log/apache2/rewrite.log " RewriteLogLevel 3 –

ответ

1

Вы должны исключить пункты назначения вы переадресацией на:

RewriteCond $1 !^(backend_0\.0\.1|frontend_0\.0\.1)/ 
RewriteRule ^(.*)$ frontend_0.0.1/index.php/$1 [QSA,L] 
+0

Работает как очарование! – vadim

Смежные вопросы