Php .htaccess AuthUserFile变量基于环境
我正在尝试基于环境加载.htpasswd文件。如果我硬编码的网址,它的工作很好Php .htaccess AuthUserFile变量基于环境,php,apache,.htaccess,mod-rewrite,acquia,Php,Apache,.htaccess,Mod Rewrite,Acquia,我正在尝试基于环境加载.htpasswd文件。如果我硬编码的网址,它的工作很好 AuthType Basic AuthName "Password Protected" AuthUserFile /var/www/html/sitename.dev/docroot/.htpasswd Require valid-user 我们的主机提供商是一个全局变量,您可以在htaccess中使用 %{ENV:AH_SITE_ENVIRONMENT}采集主机环境-可能的值为dev、test或prod 使用该
AuthType Basic
AuthName "Password Protected"
AuthUserFile /var/www/html/sitename.dev/docroot/.htpasswd
Require valid-user
我们的主机提供商是一个全局变量,您可以在htaccess中使用
%{ENV:AH_SITE_ENVIRONMENT}
采集主机环境-可能的值为dev
、test
或prod
使用该变量,我们可以检查当前所处的环境。如果需要,还可以使用以下规则进行检查:setenif Host^dev\。DEV
但我想阻止这种情况
我想使用IfDefine,但IfDefine不读取全局变量。是否可以执行以下操作之一
AH\u SITE\u环境
变量存储路径,然后执行以下操作:AuthUserFile MyConfiguredPathVar
AuthUserFile/var/www/html/sitename.%{ENV:AH\u SITE\u ENVIRONMENT}/docroot/.htpasswd
AH\u SITE\u ENVIRONMENT=dev
RewiteCond
# Determine whether environment is production:
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} !prod
这里的问题是,由于在
mod_ENV
和setenif_module
模块之前加载了环境变量,因此身份验证模块无法访问这些变量。这意味着SetEnv和setenif指令在身份验证处理期间不起作用,并且尚未设置变量
您可以通过以下方式检查加载模块的顺序:
httpd-M
还有这个:尽管所有这些解决方案都需要更改服务器配置。无法从.htaccess访问