2012-07-01 94 views
1

我有一些麻煩配置.htaccess文件來保護文件的訪問。 要保護的文件是: www.mydomain.com/admin/stats.php保護文件.htaccess的和htpasswd的

我把.htaccess文件到www.mydomain.com/admin文件夾下面的代碼:

AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile/
<Files stats.php> 
require valid-user 
</Files> 

文件.htpasswd也在www.mydomain.com/admin文件夾中,它包含用戶名和密碼。

如果我嘗試進入www.mydomain.com/admin/stats.php我得到一個「內部服務器錯誤」。我認爲這個錯誤可能會進入「AuthUserFile」的路徑,但我如何告訴文件要保護的文件位於.htpasswd的同一個文件夾中?

服務器是基於Linux的。

+1

你應該始終* *做,當你看到一個Apache的錯誤是看Apache的錯誤日誌的第一件事。它將具有比錯誤頁面上公開顯示的更多信息。 – Gareth

回答

1

你好你可以試試下面這個:

這是一個path.php文件誰將會在你的htpasswd的顯示他的父文件夾

<?php 

    echo realpath('path.php'); 

?> 

的真實路徑需要有這樣的事情:

username:password 

但密碼需要加密,你可以用

<?php 

echo crypt('your_password'); 

?> 

最後,這是.htaccess文件

<Files page_to_protect.php> 
AuthName "Message" 
AuthUserFile \realpath_to_htpasswd\.htpasswd 
AuthType Basic 
require valid-user 
</Files> 
1

我認爲你需要把完整路徑的htpasswd文件: IE瀏覽器。

的AuthUserFile /home/-user-/-site-/.htpasswd

+0

謝謝,但我需要寫而不是「用戶」和「網站」字段?我有2個用戶(和2個密碼)。 – Nicolaesse

+0

這只是您的.htpasswd文件的完整路徑。我在一個託管系統上運行,並將我的.htpasswd文件放在我的主文件夾中。 –

+0

您可以使用phpinfo();在PHP中找到您的文件系統路徑: –

0

從Apache的documentation

文件的路徑是該組文件。如果不是絕對的,則將其視爲相對於ServerRoot來看作爲 。

這意味着你要麼指定到.htpasswd文件或一個相對於無論你ServerRoot是完整的(絕對)路徑。例如:

AuthUserFile /www/passwords/.htpasswd 
+1

請注意,您需要指定文件的完整路徑,這意味着*包括文件名*。 – eis

+0

我使用此AuthUserFile /www/.htpasswd更改了代碼,但仍然無效。我的問題是.htaccess,.htpasswrd和stats。PHP進入相同的文件夾,所以我應該寫什麼相對路徑? – Nicolaesse