2010-11-15 86 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