2017-08-06 45 views
0

我想實現什麼:(基於主機名)的生產和分期 的.htaccess:結合IP模塊和基本身份驗證

  • 基本身份驗證保護臨時環境

    • 一個.htaccess文件
    • SetEnvIfNoCase Host development\.foobar\.tld authRequired 
      
      <RequireAny> 
          <RequireAll> 
          Require all granted 
          Require not ip 1.2.3.4 
          </RequireAll> 
          <RequireAny> 
          <RequireAll> 
           Require all granted 
           Require not env authRequired 
          </RequireAll> 
          AuthType Basic 
          AuthName "Development" 
          AuthUserFile /path/to/.htpasswd 
          Require valid-user 
          </RequireAny> 
      </RequireAny> 
      
      :兩個enviroments

    我試了一下,到目前爲止具體的IP

    我現在的問題是IP塊被忽略。我不知道如何正確嵌套Require指令。

  • 回答

    0

    我有類似的設置,但我沒有使用基於密碼的身份驗證。不過,我認爲這種方法也適用於你。

    您需要做的是將IP檢查的結果存儲在變量中供以後使用。
    下面的代碼是未經測試,但我認爲它會工作:

    SetEnvIf X-Forwarded-For "^1\.2\.3\.4" reject-access 
    
    <If "%{HTTP_HOST} =~ /development\.foobar\.tld$/"> 
        AuthType Basic 
        AuthName "Development" 
        AuthUserFile /path/to/.htpasswd 
        <RequireAll> 
         Require not env reject-access 
         Require valid-user 
        </RequireAll> 
    </If> 
    <Else> 
        <RequireAll> 
         Require not env reject-access 
        </RequireAll> 
    </Else>