Я пытаюсь заблокировать все обращения к php-файлам в определенной папке и подпапках, кроме одной определенной папки и ее подпапок.
Я пробовал несколько различных перестановок регулярных выражений, и я могу заставить регулярное выражение соответствовать должным образом, это реализуется в htaccess, где у меня есть проблема.
Это файл htaccess, как сейчас:
<FilesMatch "\.(?i:php)$">
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
и это выражение регулярного выражения, которое правильно совпадает вне htaccess:
^(?!.*(thedirectory)).*(?i:php)$
Когда я проверяю это регулярное выражение в index.php, оно совпадает. Когда я проверяю файл /thedirectory/index.php, он не совпадает. Когда я проверяю файл /someotherdirectory/style.css, он не совпадает.
Как бы я хотел, чтобы это работало:
domain.com/folder/index.php -> 404 Error
domain.com/folder/thedirectory/index.php -> resolves
domain.com/folder/someotherdirectory/index.php -> 404 Error
domain.com/folder/someotherdirectory/afunction.php -> 404 Error
domain.com/folder/someotherdirectory/style.css -> resolves