Я хочу запретить прямой доступ к некоторым конфиденциальным файлам в моем корневом приложении (например: log, sh, ini .. .и т.д). и по этим причинам я использовал следующую директиву в своем основном .htaccess:
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak|md|txt|lock|phar|bat)$|action.bat|composer.json|VERSION.*">
Require all denied
</FilesMatch>
странно то, что она отлично работает для всех файлов, перечисленных в FileMatch, кроме файлов с расширением (.bat), которые я еще не понял, почему они все еще можно загрузить с помощью прямого доступа по URL. Конфигурация:
Версия компонентов XAMPP:
Обновление:
фактически я обнаружите, что сопоставление шаблонов работает со всеми файлами ".bat", кроме с именем "действие"! если я поменяю имя на что-нибудь иначе (скажем, "действие1") он работает нормально.
Можно добавить следующее к vhost файлу
<Files *.bat>
Order allow,deny
Deny from all
</Files>
, можно добавить дополнительный тип согласно требованиям.
Регулярное выражение, которое Вы имеете, должно работать. Необходимо смочь также удалить action.bat|
, и это должно функционировать то же. Если Ваш файл не заканчивается .bat
, который мог бы вызывать проблемы.
А упростил объяснение того, что это делает:
\.(htaccess|htpasswd|ini|log|sh|inc|bak|md|txt|lock|phar|bat)$
||| |
||^Any string within brackets (separated with | as "or") |
|^Any character or . when escaped End of filename marker ^
^Escape character
Попытка, перезапускающая Ваш сервер, удостоверьтесь, что Вы работаете в корректном каталоге и удостоверяетесь, что нет ничего больше работающего против правил, которые Вы устанавливаете в этом .htaccess.