Eu posso reproduzir isso no Apache 2.2 no Fedora. Isto parece ser um inseto. Uma solução alternativa é usar:
<Files ~ "(^index.htm$)|(^$)">
Aqui está outro bug semelhante: link
Estou tentando configurar a autenticação básica para meu arquivo de índice e somente meu arquivo de índice. Eu configurei da seguinte forma:
<Files index.htm>
Order allow,deny
Allow from all
AuthType Basic
AuthName "Some Auth"
AuthUserFile "C:/path/to/my/.htpasswd"
Require valid-user
</Files>
Quando eu visito a página, 401 Authorization Required
é retornado como esperado, mas o navegador não solicita o nome de usuário / senha. Algumas outras inspeções revelaram que o Apache não está enviando o cabeçalho WWW-Authenticate
.
GET http://myhost/ HTTP/1.1
Host: myhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 401 Authorization Required
Date: Tue, 21 Jun 2011 21:36:48 GMT
Server: Apache/2.2.16 (Win32)
Content-Length: 401
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>
Por que o Apache está fazendo isso? Como posso configurá-lo para enviar esse cabeçalho apropriadamente?
Vale a pena notar que este mesmo conjunto de diretivas funciona bem se eu configurá-las para um diretório inteiro. É somente quando eu os configuro para um índice de diretório que eles não funcionam. É assim que conheço o meu .htpasswd e tudo bem.
Estou usando o Apache 2.2 no Windows.
Em outra nota, eu encontrei este listado como um bug no Apache 1.3 . Isso me leva a acreditar que isso é realmente um problema de configuração do meu lado.
Eu posso reproduzir isso no Apache 2.2 no Fedora. Isto parece ser um inseto. Uma solução alternativa é usar:
<Files ~ "(^index.htm$)|(^$)">
Aqui está outro bug semelhante: link
Para um caso simples, sua configuração parece boa (veja este post para um exemplo), então eu começaria examinando todos os fatores que poderiam tornar isso um caso não simples e eliminando-os até encontrar o que está causando o problema.
Por exemplo:
Os documentos do Apache têm uma boa página detalhando como Diretório, arquivos e local trabalho, com alguns exemplos, para referência futura.
Você pode querer começar ajustando sua diretiva de arquivos (< Files ./index.htm>), caso contrário, ela corresponderá a qualquer arquivo index.htm em toda a estrutura de diretórios sob esse .htaccess.
A configuração que você postou funciona perfeitamente em uma instalação Debian - Apache 2.2. Sugiro tentar ver se o coloco em uma diretiva <Location>
e experimentá-lo em dois navegadores diferentes.
Estou a pensar que existe um conflito entre a directiva:
allow from all
e a diretiva
require valid user
Gostaria de saber se você descarta a permissão de todos do registro de configuração, isso pode fazer o que você deseja fazer.
BTW, eu também alteraria o arquivo index.html para Location /index.html.