2017-08-06 1 views
0

Was ich erreichen möchte:.htaccess: kombinieren IP-Block und Grund Auth

  • eine .htaccess-Datei für die Produktion und
  • Grund Auth Schutz Staging für Umwelt Staging (basierend auf Hostname)
  • Block spezifische IP auf beiden enviroments

Was ich bisher versucht:

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> 

Mein Problem ist jetzt, dass der IP-Block ignoriert wird. Ich habe keine Ahnung, wie man die Require-Direktiven korrekt verschachtelt.

Antwort

0

Ich habe ähnliche Setup, aber ich benutze keine passwortbasierte Authentifizierung dafür. Ich denke jedoch, dass dieser Ansatz auch für Sie funktionieren sollte.

Was Sie tun müssen, ist das Ergebnis der IP-Prüfung in einer Variablen für die spätere Verwendung zu speichern.
Der folgende Code ist nicht getestet, aber ich denke, es wird funktionieren:

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>