Вы можете сортировать это, используя mod_setenvif
вместе с модулями mod_auth
.Используйте директиву SetEnvIfNoCase
, чтобы указать, какой хост защищен паролем.Вам понадобится пара дополнительных директив для удовлетворения доступа:
# Check for the hostname here
SetEnvIfNoCase HOST ^test\.mysite\.com\.?(:80)?$ PROTECTED_HOST
Затем внутри блока Directory
(или просто в открытом виде) у вас есть настройки аутентификации, что-то вроде этого:
AuthUserFile /var/www/test.mysite.com/htpasswd
AuthType Basic
AuthName "Password Protected"
Теперь для вещи, требующей / удовлетворяющего:
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=!PROTECTED_HOST
Это сделает так, что любой хост, не соответствующий ^test\.mysite\.com\.?(:80)?$
, будет иметь доступ без необходимости авторизации (Allow from env=!PROTECTED_HOST
) но в противном случае нам нужен действительный пользователь (Require valid-user
).Satisfy any
гарантирует, что нам просто нужен один из 2, либо Разрешить, либо Требовать.