我正在尝试根据环境加载 .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
但我想阻止这种情况。
我想使用 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
阿帕奇版本 2.2.22
更新1:可以检查环境RewiteCond
# Determine whether environment is production:
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} !prod