Verwenden Sie .htpasswd nicht, wenn die Umgebung auf einen bestimmten Wert eingestellt ist

Verwenden Sie .htpasswd nicht, wenn die Umgebung auf einen bestimmten Wert eingestellt ist

Ich habe .htpasswdeinen Schutz auf meiner Site, der gut funktioniert. Wenn ich über PHP CLI ein Skript aufrufe, das alles in den Cache legt, erhalte ich einen 401-Fehler. Das Problem hier ist das .htpasswd protection.

Im CLI-Aufruf definiere ich meine Umgebung ( ENV=cron). Wie kann ich meinem Benutzer mitteilen, .htaccessdass er in diesem Fall nicht nach Benutzername und Passwort fragen soll env=cron?

Mein aktueller Code darin .htaccessist:

<IfDefine env!=cron>
    AuthType Basic
    AuthName "internal"
    AuthUserFile /path/to/my/.htpasswd
    Require valid-user
</IfDefine>

Ich verwende Apache 2.2 und nicht 2.4, was das Ganze viel einfacher machen würde. Wie kann ich dieses Problem richtig lösen?

Antwort1

Unter Apache 2.2 können Sie dies möglicherweise mit Hilfe der Direktive tun Satisfy.

Zum Beispiel:

AuthType Basic
AuthName "internal"
AuthUserFile /path/to/my/.htpasswd
Require valid-user
Order allow,deny
Allow from env=cron
Satisfy Any

(Der Standardwert ist Satisfy All)

Die <IfDefine>Direktive (unter Apache 2.2) kann nur prüfen, ob beim Start von Apache Parameter in der Kommandozeile gesetzt wurden. Umgebungsvariablen kann sie nicht prüfen.

verwandte Informationen