【问题标题】:Protect a file with .htaccess and .htpasswd使用 .htaccess 和 .htpasswd 保护文件
【发布时间】:2012-07-02 06:55:24
【问题描述】:

我在配置 .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。

【问题讨论】:

  • 当您看到 Apache 错误时,您应该始终做的第一件事是查看 Apache 错误日志。它将比错误页面上公开显示的信息更多。

标签: apache .htaccess .htpasswd


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但我需要写什么而不是“用户”和“站点”字段?我有 2 个用户(和 2 个密码)。
  • 这只是 .htpasswd 文件的完整路径。我在托管系统上运行,我将 .htpasswd 文件放在我的主文件夹中
  • 你可以使用 phpinfo();在 PHP 中查找文件系统路径的函数:
【解决方案2】:

来自 Apache documentation

File-path 是组文件的路径。如果不是绝对的,那就是 被视为相对于 ServerRoot。

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

AuthUserFile /www/passwords/.htpasswd

【讨论】:

  • 注意,需要指定文件的完整路径,即包括文件名
  • 我用这个 AuthUserFile /www/.htpasswd 更改了代码,但仍然不起作用。我的问题是 .htaccess、.htpasswrd 和 stats.php 都在同一个文件夹中,所以我应该写什么相对路径?
【解决方案3】:

你好,你可以试试这个:

这是一个 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多