2013-09-27 151 views
32

我正在努力阻止使用.htaccess的文件夹,这是我从未使用过的,而且我遇到了一些麻烦。下面是我有.htaccess/.htpasswd 500内部服务器错误

的.htaccess(位于我想要封锁的文件夹中):

AuthName "Username and password required" 
AuthUserFile /.htpasswd 
Require valid-user 
AuthType Basic 

htpasswd的(位于root,密码在实际的文件加密):

tim:blah 

我我得到500内部服务器错误,我不明白为什么。

+2

什么是'/ .htpasswd',是'/ home/youraccout/public_html'中的一个文件,或者实际上位于文件系统'/'的主目录下的文件? – Prix

+0

你的apache错误日志说什么? –

+0

我无法通过我的主机访问错误日志=(并且我的.htpasswd文件位于我可以访问的最上面的文件夹中,它不在我的pubic_html文件夹中 –

回答

82

最可能的问题是这一行:

AuthUserFile /.htpasswd 

此行应到密码文件例如提供完整的文件系统路径

AuthUserFile /var/www/.htpasswd 

要发现你的文件系统路径,你可以创建一个包含

echo $_SERVER['DOCUMENT_ROOT'];

+0

.htpasswd位于我可以访问的最上面的文件夹中 –

+3

也请确保' .htpasswd'不能被群组和其他人写入。 – anubhava

+4

找到了主路径。我的主机种类隐藏了我的重要信息。谢谢。 –

2

权限可能导致此问题也一个PHP文件。

确保.htpasswd可供网络服务器用户阅读。

举例来说,如果你使用nginx的检查nginx.conf找出服务器的用户是什么,如果你使用Apache,你可以找到它this way

然后设置正确的所有者和读取权限.htpasswd

5

如果没有任何帮助,你正在使用PHP你可以把它通过把这个在你的index.php工作(顶部):

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { 
    if ($_SERVER['PHP_AUTH_USER'] != 'user' || 
     $_SERVER['PHP_AUTH_PW'] != 'pass') { 

     header('WWW-Authenticate: Basic realm="Protected area"'); 
     header('HTTP/1.0 401 Unauthorized'); 

     die('Login failed!'); 
    } 
} 
0

我还想补充一点,一些对某些Web主机,如果将该.htpasswd文件放置在可公开访问的区域,则该文件将不起作用。最近的安装我确实证实了这一点。正如其他人所指出的,最好将其放置在网站的根目录中。

+0

“...最好把它放在网站的根目录下“ - 你的最后一句似乎与你的第一句矛盾(假设你的意思是_document root_)?如你所说,这个文件理想情况下应该在公众可访问的区域之外。上面的文件根目录。 – MrWhite