RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2$
Правило перезаписи. - [Ж, Л]
Из-за якоря конца строки ($
) это позволяет только /подпапка1/подпапка2
точно (не /подпапка1/подпапка2/script.php
) и блокирует все остальное. С /подпапка1/подпапка2
предположительно является физическим каталогом, тогда mod_dir будет перенаправлять, чтобы добавить косую черту в конце, которая затем будет заблокирована этим правилом. Так что да, блокирует все.
Вам нужно удалить якорь конца строки ($
) с конца CondPattern. Например:
RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2
Хотя, строго говоря, чтобы избежать конфликта со всем, что могло бы просто начинаться с подпапка2
(например. подпапка2foo.php
), тогда вы должны использовать регулярное выражение, например ^/подпапка1/подпапка2($|/)
вместо.
Обратите внимание, что если это единственный URL-путь, который вам нужно разрешить, вам не нужен условие, так как тест должен проводиться в Правило перезаписи
директива напрямую. Например:
Правило перезаписи !^/подпапка1/подпапка2($|/) - [F]
л
флаг не требуется с Ф
флаг; это подразумевается.
Или вообще не используйте mod_rewrite. Например:
<Directory /my/path>
Require all denied
</Directory>
<Directory /my/path/subfolder1/subfolder2>
Require all granted
</Directory>
Это предпочтительнее, чем mod_rewrite, если у вас нет других требований.