Dot-Htaccess
僅針對 DirectoryIndex 的基本身份驗證
我正在嘗試為我的索引文件配置基本身份驗證,並且只有我的索引文件。我已經像這樣配置它:
<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
對於一個簡單的情況,您的配置看起來不錯(請參閱這篇文章以獲取範例),因此我將首先查看可能使這種情況變得不簡單的任何因素並消除它們,直到找到導致問題的因素。
例如:
- 您是專門訪問“index.htm”,還是在訪問“ http://site.url/ ”時依賴DirectoryIndex自動載入它?
- DirectoryIndex 中是否配置了“index.htm”?
- 您是否嘗試過將其作為第一個選項?
- 由於您在 Windows 上,您確定文件名中的字母大小寫是您認為的嗎?例如, Windows會將所有大寫的文件名轉換為句子大小寫以進行顯示。
- 您是否嘗試為不在 DirectoryIndex (test.html) 中的文件設置此參數,以查看是否相關?
Apache 文件有一個很好的頁面,詳細介紹了目錄、文件和位置的工作方式,並附有一些範例,以供進一步參考。