Dot-Htaccess

僅針對 DirectoryIndex 的基本身份驗證

  • June 27, 2011

我正在嘗試為我的索引文件配置基本身份驗證,並且只有我的索引文件。我已經像這樣配置它:

<Files index.htm>
   Order allow,deny
   Allow from all
   AuthType Basic
   AuthName "Some Auth"
   AuthUserFile "C:/path/to/my/.htpasswd"
   Require valid-user
</Files>

當我訪問該頁面時,401 Authorization Required按預期返回,但瀏覽器不提示輸入使用者名/密碼。一些進一步的檢查顯示 Apache 沒有發送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>

為什麼 Apache 這樣做?如何配置它以適當地發送該標頭?

值得注意的是,如果我將它們設置為整個目錄,那麼這組完全相同的指令可以正常工作。只有當我將它們配置到目錄索引時,它們才不起作用。這就是我知道我的 .htpasswd 等的方式。

我在 Windows 上使用 Apache 2.2。

另一方面,我發現這被列為 Apache 1.3 中的一個錯誤。這讓我相信這實際上是我的配置問題。

我可以在 Fedora 下的 Apache 2.2 上重現這一點。這似乎是一個錯誤。一種解決方法是使用:

<Files ~ "(^index.htm$)|(^$)">

這是另一個類似的錯誤:https ://issues.apache.org/bugzilla/show_bug.cgi?id=46685

對於一個簡單的情況,您的配置看起來不錯(請參閱這篇文章以獲取範例),因此我將首先查看可能使這種情況變得不簡單的任何因素並消除它們,直到找到導致問題的因素。

例如:

Apache 文件有一個很好的頁面,詳細介紹了目錄、文件和位置的工作方式,並附有一些範例,以供進一步參考。

引用自:https://serverfault.com/questions/282805