使用.htaccess和.htpasswd保护文件

时间:2012-07-01 16:48:38

标签: apache .htaccess .htpasswd

我在配置.htaccess文件时遇到了一些麻烦,无法保护文件的访问权限。 要保护的文件是: www.mydomain.com/admin/stats.php

我将.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的。

3 个答案:

答案 0 :(得分:1)

我认为您需要将完整路径放到htpasswd文件中: 即

  

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

答案 1 :(得分:1)

您好,您可以尝试以下方法:

这是一个path.php文件,它将显示其父文件夹的实际路径

<?php 

     echo realpath('path.php'); 

?>

在你的.htpasswd中你需要有这样的东西:

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>

答案 2 :(得分:0)

来自Apache documentation

  

文件路径是组文件的路径。如果它不是绝对的,那就是   作为相对于ServerRoot的处理。

这意味着您要么指定.htpasswd文件的完整(绝对)路径,要么指定与ServerRoot相关的路径。例如:

AuthUserFile /www/passwords/.htpasswd