Я уверен, что это просто, но сегодня утром Google мне не друг.
Цель:
/ public ... находится в открытом доступе
все остальное (включая /) требует базовой аутентификации.
Это приложение WSGI с одним сценарием WSGI (это сайт django, если это имеет значение ..)
У меня есть это:
<Location /public>
Order deny,allow
Allow from all
</Location>
<Directory />
AuthType Basic
AuthName "My Test Server"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Directory>
В этой конфигурации базовая аутентификация работает нормально, но Location
директива полностью игнорируется. Я не удивлен, так как по словам этот (см. Как объединяются разделы), Directory
директива обрабатывается первой.
Я уверен, что мне что-то не хватает, но поскольку каталог применяется к местоположению файловой системы, а у меня действительно только один Directory
в /
, и это Location
что я хочу разрешить доступ, но Directory
всегда отменяет Location
...
РЕДАКТИРОВАТЬ
Я использую Apache 2.2, который не поддерживает AuthType None
.
Для Apache 2.0 установите AuthType None
внутри вашего <Location /public>
строфа:
<Location /public>
AuthType None
Order deny,allow
Allow from all
</Location>
http://httpd.apache.org/docs/trunk/mod/mod_authn_core.html#AuthType
Для Apache 2.2 (и, возможно, других из 2 серий старше 2.3):
<Location /public>
Satisfy any
Allow from all
</Location>
<Location />
AuthType Basic
AuthName "My Test Server"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Location>