у меня есть следующая директива, установленная в security.conf
, чтобы запретить apache обслуживать любые скрытые файлы или каталоги.
<LocationMatch ^(.*/)\..*>
Require all denied
</LocationMatch>
В 000-default .conf
- это следующая директива для защиты всего сайта через HTTP-аутентификацию.
<Location />
AuthUserFile /var/www/site/.htpasswd
AuthName "Restricted Area"
AuthType Basic
Require valid-user
</Location>
Теперь, когда я вхожу в систему,
полностью игнорируется . Я попробовал:
<Location />
...
Satisfy all
</Location>
.. безуспешно: (
Проблема действительно возникает, как указывает @HBruijn, в том, как Apache объединяет различные разделы, и в трудностях, возникающих из-за смешивания ограничений на основе файловой системы (таких как
и < Файлы>
) и пути на основе URI (например,
. Безопаснее и проще использовать одно, а не оба вместе, потому что одно может полностью перекрыть другое.
Так, например, в Apache v2.4, если вы используете Directory
вместо Location
в приведенном выше примере и используете FilesMatch
, чтобы запретить доступ к файлам с ведущий .
, он должен работать. Но если вы попытаетесь использовать Location для обоих, это не получится.
Пример:
<FilesMatch "^\..+$">
require all denied
</FilesMatch>
<Directory /path/to/your/docroot>
AuthUserFile /var/www/site/.htpasswd
AuthName "Restricted Area"
AuthType Basic
Require valid-user
</Directory>
Обратите внимание на странице, на которую ссылается @HBruijn, на самом деле есть предупреждение, чтобы не пытаться использовать
блокирует доступ к файлам в файловой системе в разделе What to use When .