簡體   English   中英

.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

我們的托管服務提供商提供了一個可以在 htaccess 中使用的全局變量。

%{ENV:AH_SITE_ENVIRONMENT} Acquia 托管環境 — 可能的值為devtestprod

使用該變量,我們可以檢查我們當前所處的環境。 如果需要,也可以使用以下規則進行檢查: SetEnvIf Host ^dev\\. DEV SetEnvIf Host ^dev\\. DEV但我想阻止這種情況。

我想使用 IfDefine 但 ifdefine 不讀取全局變量。 是否可以執行以下操作之一?

  1. 將路徑設為變量並使用AH_SITE_ENVIRONMENT變量存儲路徑,然后執行以下操作: AuthUserFile MyConfiguredPathVar
  2. 直接在 AuthUserFile 中放置一個 var 來連接AuthUserFile /var/www/html/sitename.%{ENV:AH_SITE_ENVIRONMENT}/docroot/.htpasswd
  3. 使用 ifdefine 並檢查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_envsetenvif_module模塊之前加載。 這意味着 SetEnv 和 SetEnvIf 指令在身份驗證處理期間不起作用,並且尚未設置變量。

您可以通過httpd -M檢查加載模塊的順序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM