2010-11-15 109 views
0

我創建了一個.htaccess和.htpasswd文件,並將它們存儲在我要保護的文件夾中,當我導航到該文件夾​​時,系統會要求我輸入用戶名和密碼(存​​儲在.htpasswd文件)輸入用戶名和密碼後,我得到一個500內部服務器錯誤。我已經使用本地主機(Windows)和Web服務器上的文件(我猜,Linux)都提供了相同的結果。使用.htaccess保護目錄的問題

這是我的.htaccess文件:

<Files ~ "^\.(htaccess|htpasswd)$"> 
deny from all 
</Files> 
AuthUserFile /.htpasswd 
AuthGroupFile /dev/null 
AuthName "Please enter your ID and password" 
AuthType Basic 
require valid-user 
order deny,allow 
+0

能給我們從您的Apache的日誌錯誤消息? – pex 2010-11-15 00:17:40

+0

@pex:我在哪裏可以找到錯誤日誌? – sikas 2010-11-15 00:29:49

回答

3

我懷疑你的.htpasswd文件實際上位於服務器的文件系統的根源與/bin/usr/home,和其他人一起(而不是內部的部分文件系統服務於Web瀏覽器)。

根據Apache文檔(12),AuthUserFile需要一個文件路徑(如,如果你在ServerRoot的,通常是/usr/apache或相似,並試圖找到從Unix外殼文件)。它不能是一個URL,無論是絕對的還是相對的。相應地更正您的.htpasswd文件路徑。

注意,如果可能的話,你不應該把.htpasswd文件public_htmlhtdocs文件夾內,因爲任何配置錯誤,不僅可以讓你想保護的文件,但也被授權的用戶名未經授權的訪問和哈希密碼。

+0

好的,我現在在localhost(Windows 7)上測試,AuthUserFile應該是C:/wamp/www/.htpasswd嗎? – sikas 2010-11-15 00:27:21

+0

它在將AuthUserFile設置爲C:/wamp/www/.htpasswd後與我一起工作......但是當我在更改路徑後上載文件時,它並沒有工作。注意:我使用x10hosting免費服務。 – sikas 2010-11-15 00:42:07

+1

@sikas:您的虛擬主機支持PHP,對吧?嘗試上傳只包含'<?php phpinfo();'的PHP文件並查看'SCRIPT_FILENAME'是什麼。這應該有助於確定您的網站在服務器上的位置。 – PleaseStand 2010-11-15 00:50:28

1

使用絕對託管路徑,例如:

/home/content/14/5267714/html/.htpasswd