根据apache env变量,有条件地要求HTTP身份验证

Jay*_*Jay 8 apache .htaccess

我的托管有我的网站的多个部署(开发,舞台,制作).当且仅当他们设置的环境变量等于'dev'时,如何在我的htaccess文件中添加HTTP Auth标头?(这意味着他们设置了一个名为SITE_ENVIRONMENT的变量,可以是dev,stage或prod,具体取决于您访问的站点.

PS.我很熟悉需要htaccess以vanilla方式授权,但在评估变量或根据结果编写块时,我完全迷失了.

aow*_*ie1 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
Run Code Online (Sandbox Code Playgroud)

男人:http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html


ian*_*las -1

我不确定这是否可能。

理论上,您可以使用:

RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$
Run Code Online (Sandbox Code Playgroud)

确定您所处的环境,但我想不出如何编写 RewriteRule 来强制进行基本身份验证...除非您重定向到另一个处理基本身份验证的页面并将 SITE_ENVIRONMENT 变量重置为“dev-authenticated” “ 或者其他的东西。