У меня есть сервер Apache, работающий в Linux (например, example.com). Внутри корневого веб-каталога находится папка (http://example.com/docs/
, локально /home/me/docs
), с автоматически сгенерированным индексом его подкаталогов, включенным его .htaccess
:
Options +Indexes
IndexOptions FancyIndexing NameWidth=* FoldersFirst IgnoreCase SuppressDescription Charset=UTF-8 SuppressHTMLPreamble
Теперь внутри docs
является docs/protected
. В этом подкаталоге есть собственный .htaccess
:
AuthType "Basic"
AuthBasicProvider file
AuthUserFile /path/to/.htpasswd
#Require valid-user
Вот где это становится странным (для меня):
protected
не защищен паролем (что нормально) и отображается в листинге его родительского объекта (также ожидается)Require valid-user
, protected
становится защищенным паролем (если я ввожу URL-адрес напрямую), но он также больше не отображается в списке своих родителей.Кто-нибудь может понять, что могло вызвать это?
Редактировать: теперь я замечаю, что если я наберу URL-адрес защищенного каталога, затем введу пароль, а затем вернусь к списку, не закрывая браузер, список будет полным. Таким образом, каталог скрыт до тех пор, пока я не предоставлю ему учетные данные. Но я хочу защитить только его содержание, а не его существование!
PS: Это с Apache / 2.2.21, работающим на Synology.
Ответ таков: в родительском каталоге должны быть:
IndexOptions ShowForbidden
Я потерял два часа на поиски этого.