Não use .htpasswd quando env estiver definido para um valor específico

Não use .htpasswd quando env estiver definido para um valor específico

Tenho .htpasswdproteção em meu site que funciona bem. Quando chamo um script que coloca tudo em cache via PHP CLI, recebo um erro 401. O problema aqui é o .htpasswd protection.

Na chamada CLI eu defino meu env( ENV=cron), como posso dizer .htaccesspara não solicitar o nome de usuário e a senha se env=cron?

Meu código atual no .htaccessé:

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

Estou usando o Apache 2.2 e não o 2.4, o que tornaria isso muito mais fácil. Qual é a maneira correta de resolver esse problema?

Responder1

No Apache 2.2 você pode fazer isso com a ajuda da Satisfydiretiva.

Por exemplo:

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

(O padrão é Satisfy All)

A <IfDefine>diretiva (no Apache 2.2) só é capaz de verificar se os parâmetros foram definidos na linha de comando quando o Apache é iniciado. Não é possível verificar variáveis ​​de ambiente.

informação relacionada