Во-первых, я новичок в Apache .htaccess. У меня есть сервер, который должен позволять пользователям погружаться только в файлы mp4 и png. Итак, я читал документацию по HTTP-серверу Apache и, согласно тому, что там написано, я добавил это в свой .htaccess:
<filesMatch "\.(png|mp4)$">
Order Allow,Deny
Allow from all
</filesMatch>
потому что, насколько я понял, это означает «для каждого файла, если его расширение png или mp4, разрешить всем захватить его. В противном случае запретить доступ». Очевидно, я ошибаюсь, потому что это запрещает мне доступ к любым файлам / папкам позволяет мне в любом случае получить доступ к папкам и файлам html (а также, конечно, к файлам png и mp4). Итак, как было бы разрешить доступ только к файлам png и mp4? Также хотелось бы знать, как заставить фильтр игнорировать регистр.
Спасибо.
РЕДАКТИРОВАТЬ: Во-первых, я забыл сказать, что мне нужно разрешить локальному хосту доступ ко всему (т.е. отказы должны быть только для не локального хоста). Я действительно не знаю, является ли это поведением по умолчанию или это необходимо как-то указать. Кроме того, у меня был поврежденный файл, когда я проводил тесты, поэтому я всегда получал «запрещенный доступ» ко всему. Я обновил пост.
Пытаться
Order Allow,Deny
<filesMatch "\.(?i:png|mp4)$">
Allow from all
</filesMatch>
В ?i:
часть должна допускать нечувствительность к регистру, а размещение порядка за пределами FilesMatch заставляет его отклонять все, что явно не разрешено.
Наконец-то пришлось найти решение:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
<filesMatch "\.(?i:png|mp4)$">
Order Allow,Deny
Allow from all
</filesMatch>
При этом я говорю: «По умолчанию запретить доступ ко всему. Затем, если файл имеет тип PNG или MP4 (да,? I: фактически игнорирует регистр), разрешите доступ к нему отовсюду.
Обратите внимание, что мне пришлось переопределить все записи AllowOverride None в httpd.conf в AllowOverride All, чтобы фактически был учтен .htaccess (раньше он игнорировался).