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

根据apache env变量有条件地要求HTTP身份验证,apache,.htaccess,Apache,.htaccess,我的主机有我的站点的多个部署(开发、阶段、生产)。当且仅当设置的环境变量等于“dev”时,如何在htaccess文件中添加HTTP Auth头?(这意味着他们设置了一个名为SITE_ENVIRONMENT的变量,该变量可以是dev、stage或prod,具体取决于您访问的站点 另外,我熟悉以普通方式要求htaccess授权,但在评估变量或根据结果编写块时,我完全不知所措。我不确定这是否可行 理论上,您可以使用: RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$

我的主机有我的站点的多个部署(开发、阶段、生产)。当且仅当设置的环境变量等于“dev”时,如何在htaccess文件中添加HTTP Auth头?(这意味着他们设置了一个名为SITE_ENVIRONMENT的变量,该变量可以是dev、stage或prod,具体取决于您访问的站点


另外,我熟悉以普通方式要求htaccess授权,但在评估变量或根据结果编写块时,我完全不知所措。

我不确定这是否可行

理论上,您可以使用:

RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$

确定您所处的环境,但我想不出如何编写重写规则来强制进行基本身份验证…除非您重定向到另一个处理基本身份验证的页面,并将SITE_环境变量重置为“dev authenticated”或者别的什么。

您可以使用setenif模式匹配域并确定要使用的环境

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

男:

我通过与一些apache开发人员聊天确认了这一点。无法编写重写规则来触发基本身份验证,因此您必须考虑另一种方法。啊,我明白了,谢谢您的回复。发布此消息后,我重新考虑了我的方法,因为不同的环境是从svn存储库部署的,所以我刚刚创建了一个开发人员站点分支机构.相关问题: