У вас не может быть контейнеров <Directory>
внутри файла htaccess, но вы можете условно включить или отключить HTTP-аутентификацию на основе среды, которая может быть изменена.
Так, например, сказать, ваша продукция сайт http://production.example.com
и ваш DEV сайт http://dev.example.com
, то вы можете проверить по HTTP хоста и установить переменную окружения:
SetEnvIfNoCase Host ^dev\.example\.com$ require_auth=true
Или, если путь отличается, скажем ваше производство сайт http://example.com/
и DEV сайт http://example.com/dev/
, то вы можете проверить против запрашиваемого URI:
SetEnvIfNoCase Request_URI ^/dev/ require_auth=true
Там в нескольких других проверках, вы можете сделать это, что указаны в mod_setenvif. В любом случае, вы хотите установить require_auth=true
, когда это запрос для dev. Тогда вы настроите ваш материал аутентификации использовать Satisfy Any
:
# Auth stuff
AuthUserFile /home/my/path/to/development/site/.htpasswd
AuthName "Restricted Area 52"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
require_auth
Так что, если не установлен, то не требуется авторизация, и ваш SetenvIf
должны установить его, если это запрос DEV.
Да, это потому, что это его прямая копия. – Err