.htaccess AuthUserFile 变量基于环境
.htaccess AuthUserFile variable based on environment
我正在尝试根据环境加载 .htpasswd 文件。如果我硬编码 URL 它工作正常。
AuthType Basic
AuthName "Password Protected"
AuthUserFile /var/www/html/sitename.dev/docroot/.htpasswd
Require valid-user
我们的托管服务提供商是 providing 您可以在 htaccess 中使用的全局变量。
%{ENV:AH_SITE_ENVIRONMENT}
The Acquia hosting environment — possible values are dev
, test
, or prod
使用变量我们可以检查当前所处的环境。如果需要,也可以使用以下规则进行检查:SetEnvIf Host ^dev\. DEV
但我想防止这种情况发生。
我想使用 IfDefine,但 ifdefine 不读取全局变量。是否可以执行以下操作之一?
- 将路径设为变量并使用
AH_SITE_ENVIRONMENT
变量存储路径,然后执行如下操作:AuthUserFile MyConfiguredPathVar
- 在 AuthUserFile 中直接放入一个 var 以像这样进行连接
AuthUserFile /var/www/html/sitename.%{ENV:AH_SITE_ENVIRONMENT}/docroot/.htpasswd
- 任何其他使用 ifdefine 并检查是否
AH_SITE_ENVIRONMENT = dev
的方法
Apache 版本 2.2.22
更新 1: 可以使用 RewiteCond
检查环境
# Determine whether environment is production:
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} !prod
这里的问题是 auth 模块无法访问 ENV 变量,因为它们在 mod_env
和 setenvif_module
模块之前加载。这意味着 SetEnv 和 SetEnvIf 指令在身份验证处理期间不起作用,变量尚未设置。
您可以通过以下方式检查加载模块的顺序
httpd -M
我正在尝试根据环境加载 .htpasswd 文件。如果我硬编码 URL 它工作正常。
AuthType Basic
AuthName "Password Protected"
AuthUserFile /var/www/html/sitename.dev/docroot/.htpasswd
Require valid-user
我们的托管服务提供商是 providing 您可以在 htaccess 中使用的全局变量。
%{ENV:AH_SITE_ENVIRONMENT}
The Acquia hosting environment — possible values aredev
,test
, orprod
使用变量我们可以检查当前所处的环境。如果需要,也可以使用以下规则进行检查:SetEnvIf Host ^dev\. DEV
但我想防止这种情况发生。
我想使用 IfDefine,但 ifdefine 不读取全局变量。是否可以执行以下操作之一?
- 将路径设为变量并使用
AH_SITE_ENVIRONMENT
变量存储路径,然后执行如下操作:AuthUserFile MyConfiguredPathVar
- 在 AuthUserFile 中直接放入一个 var 以像这样进行连接
AuthUserFile /var/www/html/sitename.%{ENV:AH_SITE_ENVIRONMENT}/docroot/.htpasswd
- 任何其他使用 ifdefine 并检查是否
AH_SITE_ENVIRONMENT = dev
的方法
Apache 版本 2.2.22
更新 1: 可以使用 RewiteCond
# Determine whether environment is production:
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} !prod
这里的问题是 auth 模块无法访问 ENV 变量,因为它们在 mod_env
和 setenvif_module
模块之前加载。这意味着 SetEnv 和 SetEnvIf 指令在身份验证处理期间不起作用,变量尚未设置。
您可以通过以下方式检查加载模块的顺序
httpd -M