Назад | Перейти на главную страницу

Как предоставить доступ к разделам, когда корневой каталог защищен htauth в Apache 2.4

У меня следующая конфигурация сайта

<Location />
    AuthUserFile /path/.htpasswd
    AuthName "Restricted Area"
    AuthType Basic
    require valid-user
</Location>

который ограничивает доступ ко всем локациям. Теперь я хочу исключить сказать media/

<Location /media>
    Require all granted
</Location>

а также upload/ который находится в другом каталоге

Alias /upload/files/ /another/path/upload/files/
<Directory "/another/path/upload/files/">
    Options None
    AllowOverride None
    ForceType text/plain

    Require all granted
</Directory>

К сожалению, он все еще предлагает мне пройти аутентификацию.

Вы можете добавить исключения следующим образом:

<Directory /media>
         Options none
         AllowOverride none
         Require all granted
</Directory>

После применения конфигурации необходимо перезапустить службу apache.

Я нашел способ добиться этого

<Location />
    AuthUserFile /path/.htpasswd
    AuthName "Restricted Area"
    AuthType Basic
    Require expr %{REQUEST_URI} =~ m#^/media#
    Require expr %{REQUEST_URI} =~ m#^/upload/files/#
    Require valid-user
</Location>

Могут быть и другие варианты.

Поскольку Location / media появилось после Location /, он унаследовал корни AuthType. Вы должны иметь возможность отменить это:

<Location /media>
  AuthType None
  Require all granted
</Location>