Autenticação básica do Apache para um URL específico

5

Eu tenho um site em produção que quero modificar (traduzir do francês para o inglês). A parte modificada será colocada na localização domain.com/en URL e eu quero proteger apenas esta parte com uma autenticação HTTP básica durante as modificações.

Eu gostaria de ter o mesmo comportamento de ter um diretório en na minha pasta raiz da web e um arquivo .htaccess nesse diretório para implementar a autenticação básica. Infelizmente, não posso fazer isso porque o site é executado no Wordpress e usa regras de reconfiguração, por isso não posso criar um diretório en sem ignorar o Wordpress.

Quais diretivas devo colocar no .htaccess no diretório raiz para ativar a autenticação básica apenas para o /en location? Eu tentei usar o bloco <Location /en></Location> , mas ele produz um erro 500, então suponho que esse bloco seja suportado apenas nos arquivos de configuração do apache.

    
por Fabien Quatravaux 19.08.2013 / 16:37

2 respostas

3

Entendo ... O código abaixo desabilitará a autenticação apenas no diretório de callbacks, talvez você possa modificar essa lógica para que ela apenas ative a autenticação no diretório desejado, ou desative a autenticação em todos os dirs cujo nome não corresponda ao auth um que você deseja proteger.

# set an environment variable "noauth" if the request starts with "/callbacks/"
SetEnvIf Request_URI ^/callbacks/ noauth=1

# the auth block
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd

#Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
    
por 19.08.2013 / 16:53
4

@Gregg_Leventhal me deu a solução usando variáveis de ambiente. Mas a lógica que uso é exatamente o inverso daquele usado em sua resposta. Para completar, aqui está o código para solicitar autenticação apenas para URL /en :

#set an environtment variable "auth" if the request starts with "/en"
SetEnvIf Request_URI ^/en auth=1

AuthName "Please login to access english part"
AuthType Basic
AuthUserFile "/path/to/my/.htpasswd"

# first, allow everybody
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# then, deny only if required
Deny from env=auth
    
por 20.08.2013 / 17:12