Ответ 1
Директива RewriteCond
описывает только дополнительное условие для RewriteRule
. Поэтому RewriteCond
всегда должен быть связан с RewriteRule
.
В вашем случае три RewriteCond
, вероятно, относятся к первому RewriteRule
следующим образом:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
Теперь это правило применяется, если шаблон RewriteRule
соответствует текущему URL-адресу запроса (путь к каждой директории разделен раньше) и если условие выполнено.
В этом случае условие истинно, только если при сопоставлении URL-адреса запроса с файловой системой он соответствует либо существующему файлу с размером файла больше 0 (-s
), либо символической ссылкой (-l
), либо каталог (-d
). Таким образом, ваше правило будет применяться для любого URL (^.*$
соответствует чему-либо), который может быть сопоставлен с чем-то, существующим в вашей файловой системе. Подстановка -
означает не изменять ничего. И NC (в этом случае не имеет случая, нечувствителен к регистру, бесполезен в этом контексте) и L (последнее правило, если применяется) flags, которые изменяют либо шаблона, замены или выполнения правила.