我正在使用.htaccess阻止一个文件夹,我以前从未使用过它,但遇到了一些问题。.htaccess(位于我想阻止的文件夹中):
AuthName "Username and password required" AuthUserFile /.htpasswd Require valid-user AuthType Basic
.htpasswd(位于根目录,密码在实际文件中加密):
tim:blah
我得到500内部服务器错误与此,我不能找出原因.
5m1hhzi41#
最可能的问题是这一行:
AuthUserFile /.htpasswd
此行应提供密码文件的完整文件系统路径,例如
AuthUserFile /var/www/.htpasswd
要发现文件系统路径,可以创建一个PHP文档,其中包含echo $_SERVER['DOCUMENT_ROOT'];
echo $_SERVER['DOCUMENT_ROOT'];
xxslljrj2#
如果没有任何帮助,并且您正在使用PHP,您可以通过将以下内容放入index.php(顶部)来使其工作:
if (isset($_SERVER['PHP_AUTH_USER'], $_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'); } }
kwvwclae3#
权限也可能导致此问题。确保.htpasswd可由Web服务器用户读取。例如,如果使用nginx,请检查nginx.conf以找出服务器用户是谁,如果使用Apache,则可以找到this way,等等。然后将权限所有者和读取权限设置为.htpasswd
.htpasswd
nginx.conf
bjp0bcyl4#
如果你现在看到500 Internal Server error--这主要是因为在较新的Apache版本中,AuthUserFile中的路径必须放在quotation marks中。
500 Internal Server error
AuthUserFile
quotation marks
AuthUserFile "/var/www/somewhere/.htpasswd"
l7mqbcuq5#
我还要补充的是,在一些网络主机上,如果把.htpasswd文件放在一个公共可访问的区域,它将无法工作。我最近的一次安装证实了这一点。正如其他人所指出的,最好把它放在网站的根目录下。
uqxowvwt6#
有同样的问题,它与访问有关!您是否通过将密码文件的所有权授予www-data用户
www-data
chown www-data /var/www/.htpasswd chmod 640 /var/www/.htpasswd
?出于显而易见的原因,最好将密码保存在/var/www/目录之外的某个地方,比如/home/MYSERVER/。在这种情况下,您还需要将此父目录的所有权授予用户www-data。
/var/www/
/home/MYSERVER/
6条答案
按热度按时间5m1hhzi41#
最可能的问题是这一行:
此行应提供密码文件的完整文件系统路径,例如
要发现文件系统路径,可以创建一个PHP文档,其中包含
echo $_SERVER['DOCUMENT_ROOT'];
xxslljrj2#
如果没有任何帮助,并且您正在使用PHP,您可以通过将以下内容放入index.php(顶部)来使其工作:
kwvwclae3#
权限也可能导致此问题。
确保
.htpasswd
可由Web服务器用户读取。例如,如果使用nginx,请检查
nginx.conf
以找出服务器用户是谁,如果使用Apache,则可以找到this way,等等。然后将权限所有者和读取权限设置为
.htpasswd
bjp0bcyl4#
如果你现在看到
500 Internal Server error
--这主要是因为在较新的Apache版本中,AuthUserFile
中的路径必须放在quotation marks
中。l7mqbcuq5#
我还要补充的是,在一些网络主机上,如果把.htpasswd文件放在一个公共可访问的区域,它将无法工作。我最近的一次安装证实了这一点。正如其他人所指出的,最好把它放在网站的根目录下。
uqxowvwt6#
有同样的问题,它与访问有关!您是否通过将密码文件的所有权授予
www-data
用户?出于显而易见的原因,最好将密码保存在
/var/www/
目录之外的某个地方,比如/home/MYSERVER/
。在这种情况下,您还需要将此父目录的所有权授予用户www-data
。