我刚刚在 VMWare Workstation 上的 Ubuntu 11.04 上安装了 Apache Web Server。我创建了一个基本的 HTML 页面,将其命名为 index.html 并将其放在 /var/www 目录(文档根目录)中。
我能够从我的主机操作系统(Windows 7)访问该网页,方法是将浏览器指向:
http://192.168.2.2/index.html
其中,192.168.2.2 是 Ubuntu VM 的 IP 地址。
接下来,为了测试 .htaccess 文件的各种配置,我在 /var/www 中创建了一个名为 members 的新目录。
在这个目录中,我创建并放置了一个具有以下配置的.htaccess 文件:
AuthUserFile /www/Neon/auth/.htpasswd
AuthName "neon's home"
AuthType Basic
require valid-user
IndexIgnore */*
我创建了一个目录路径,如 /var/www/Neon/auth/
然后在其中放置一个 .htpasswd 文件。
将用户名和哈希值放入 .htpasswd 文件中:我创建了一个用户名“neon”,并计算了密码的 DES 哈希值,然后将其放入 .htpasswd 文件中,格式如下:
username:hash
现在,当我尝试访问网页时:http://192.168.2.2/members/
它不会通过弹出框提示我输入用户名和密码。相反,它只显示位于成员目录中的 index.html。
我希望这个配置能正常工作:)
答案1
第一个猜测:您缺少 AuthGroupFile,它可能被设置为 /dev/null 以禁用所有组功能。
其他猜测:在 error_log 中查找特定的服务器/虚拟主机。
答案2
我建议使用 Apache 的内置工具来生成 htpasswd 条目。
htpasswd -c /www/Neon/auth/.htpasswd 用户名
这将为您创建 .htpasswd 文件。当您要向该文件添加新用户名时,请省略 -c 选项,它将向其中附加新条目。
答案3
查看此网站: http://www.htaccesstools.com/htpasswd-generator/
它可以帮助您生成正确的.htpasswd 文件。
您确定站点配置文件 /etc/apache2/sites-avaliable (如果您使用的是 apache) 中有指令“AllowOverride All”吗?如果没有,apache 将忽略 .htaccess。
抱歉我的英语不好,但我是意大利人。
答案4
问题可能是您告诉 Apache 在 中查找文件/www/Neon/auth/
,而您实际上在 中创建了文件/var/www/Neon/auth
?换句话说,您有什么理由认为 Apache 知道www/Neon/
目录在里面/var/
而不是在文件系统根目录?