Здравствуйте. Кто подскажет, как написать для nginx правила, которые запрещали бы доступ к любым файлам \.(php|cgi|pl|phtml) в директории, допустим, /dir/apdir/, но разрешали бы доступ к 2-м PHP файлам во вложенных папках?
Чтобы вопрос был более понятен, приведу пример:
Если нужно разрешить доступ только к одному файлу, конструкция получается следующая:
location ~ ^/dir/apdir/.+\.(php|cgi|pl|phtml)(?<!subdir/index\.php) {
deny all;
}
Доступ ко всем файлам php|cgi|pl|phtml в папке /dir/apdir/ и вложенным подпапкам, за исключением файла /dir/apdir/subdir/index.php , запрещен.
Тут все понятно (или есть более элегантное решение?).
А вот если есть два PHP файла, к которым нужно разрешить доступ, например:
/dir/apdir/subdir/index.php
/dir/apdir/js/idexfile/file.php
Вот тут - пока тупик... Двойной просмотр назад не работает :
location ~ ^/dir/apdir/.+\.(php|cgi|pl|phtml)((?<!subdir/index\.php)|(?<!js/idexfile/file\.php)) {
deny all;
}
Так не работают правила.
И если сначала разрешить доступ к нужным файлам, а потом запретить ко всем остальным - так же не работет:
location ~ ^/(dir/apdir/subdir/index|dir/apdir/js/idexfile/file)\.php {
allow all;
}
location ~ ^/(dir/apdir)/.+\.(php|cgi|pl|phtml) {
deny all;
}
Как быть в таком случае?