我的托管有多个部署我的网站(开发,舞台,制作)。当且仅当他们设置的环境变量等于'dev'时,如何在我的htaccess文件中添加HTTP Auth标头? (意思是他们设置了一个名为SITE_ENVIRONMENT的变量,可以是dev,stage或prod,具体取决于您访问的站点。
PS。我很熟悉需要htaccess以vanilla方式授权,但在评估变量或根据结果编写块时我完全迷失了。
答案 0 :(得分:16)
您可以使用SetEnvIf模式匹配域并确定要使用的环境。
SetEnvIfNoCase Host ^dev.domain.com$ is_on_dev_site
AuthType Basic
AuthName "Protected Login"
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
Require valid-user
Deny from env=is_on_dev_site
#allow something like API usage to bypass
SetEnvIf Request_URI "(/api/.(.*))$" allow
Order deny,allow
Allow from env=allow
Satisfy any
答案 1 :(得分:0)
我不确定这是可能的。
理论上,您可以使用:
RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$
确定你所在的环境,但是我想不出如何编写RewriteRule以强制执行基本身份验证...除非你重定向到处理基本身份验证的另一个页面并将SITE_ENVIRONMENT变量重置为“ dev-authenticated“或某事。