env が特定の値に設定されている場合は .htpasswd を使用しない

env が特定の値に設定されている場合は .htpasswd を使用しない

私のサイトには正常に機能する保護機能があります.htpasswd。PHP CLI 経由ですべてをキャッシュに入れるスクリプトを呼び出すと、401 エラーが発生します。ここでの問題は、 です.htpasswd protection

CLI 呼び出しで env() を定義しますが、の場合にユーザー名とパスワードを尋ねないようにするにはENV=cronどうすればよいでしょうか?.htaccessenv=cron

私の現在のコードは次のとおり.htaccessです:

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

私は Apache 2.4 ではなく 2.2 を使用しています。2.4 であれば、この作業がずっと簡単になります。この問題を解決する正しい方法は何ですか?

答え1

Apache 2.2 では、ディレクティブの助けを借りてこれを実行できる可能性がありますSatisfy

例えば:

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

(デフォルトはSatisfy All)

ディレクティブ<IfDefine>(Apache 2.2 上) は、Apache の起動時にコマンド ラインでパラメータが設定されているかどうかのみをチェックできます。環境変数をチェックすることはできません。

関連情報