Флаг L
имеет тенденцию к перезапуску цикла операции перезаписи. Вместо этого используйте флаг END
:
RewriteCond %{REQUEST_URI} !^/sites/default/files/js/
RewriteCond %{REQUEST_URI} !^/sites/default/files/css/
RewriteRule ^sites/default/files/(.*)$ index.php?q=system/files/$1 [END,QSA]
###
(из теста 4)
Если вы включаете ведение журнала ошибок с уровнем debug rewrite:trace8
, а grep для перезаписи apache показывает все шаги, которые он проходитвот выдержка (+ переформатирование для читабельности), показывающая эффект флага END
:
[rewrite:trace2] [pid ...] mod_rewrite.c(483): [client 127.0.0.1:49538] 127.0.0.1 - - [127.0.0.1/sid#555c63b3f410]
[rid#555c63bbb6e0/initial] [perdir /usr/local/apache2/htdocs/]
rewrite 'sites/default/files/Slide074.png/default/files/Slide074.png'
-> 'index.php?q=system/files/Slide074.png/default/files/Slide074.png'
[rewrite:trace3] [pid ...] mod_rewrite.c(483): [client 127.0.0.1:49538] 127.0.0.1 - - [127.0.0.1/sid#555c63b3f410]
[rid#555c63bbb6e0/initial]
split uri=index.php?q=system/files/Slide074.png/default/files/Slide074.png
-> uri=index.php, args=q=system/files/Slide074.png/default/files/Slide074.png&i=jplx&ab
[rewrite:trace3] [pid ...] mod_rewrite.c(483): [client 127.0.0.1:49538] 127.0.0.1 - - [127.0.0.1/sid#555c63b3f410]
[rid#555c63bbb6e0/initial] [perdir /usr/local/apache2/htdocs/]
add per-dir prefix: index.php -> /usr/local/apache2/htdocs/index.php
[rewrite:trace8] [pid ...] mod_rewrite.c(483): [client 127.0.0.1:49538] 127.0.0.1 - - [127.0.0.1/sid#555c63b3f410]
[rid#555c63bbb6e0/initial] [perdir /usr/local/apache2/htdocs/]
Rule has END flag, no further rewriting for this request
Общая информация: Ваш вопрос напомнил мне более ранний ответ, предоставленный мной на сайте Mod_Rewrite неожиданнофлаг поведения L .