[英].htaccess AuthUserFile variable based on environment
我正在尝试根据环境加载 .htpasswd 文件。 如果我对 URL 进行硬编码,它就可以正常工作。
AuthType Basic
AuthName "Password Protected"
AuthUserFile /var/www/html/sitename.dev/docroot/.htpasswd
Require valid-user
我们的托管服务提供商提供了一个可以在 htaccess 中使用的全局变量。
%{ENV:AH_SITE_ENVIRONMENT}
Acquia 托管环境 — 可能的值为dev
、test
或prod
使用该变量,我们可以检查我们当前所处的环境。 如果需要,也可以使用以下规则进行检查: SetEnvIf Host ^dev\\. DEV
SetEnvIf Host ^dev\\. DEV
但我想阻止这种情况。
我想使用 IfDefine 但 ifdefine 不读取全局变量。 是否可以执行以下操作之一?
AH_SITE_ENVIRONMENT
变量存储路径,然后执行以下操作: AuthUserFile MyConfiguredPathVar
AuthUserFile /var/www/html/sitename.%{ENV:AH_SITE_ENVIRONMENT}/docroot/.htpasswd
AH_SITE_ENVIRONMENT = dev
任何其他方式Apache 版本 2.2.22
更新 1:可以使用RewiteCond
检查RewiteCond
# Determine whether environment is production:
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} !prod
这里的问题是 auth 模块无法访问 ENV 变量,因为它们在mod_env
和setenvif_module
模块之前加载。 这意味着 SetEnv 和 SetEnvIf 指令在身份验证处理期间不起作用,并且尚未设置变量。
您可以通过httpd -M
检查加载模块的顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.