[英].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.